Name: series-workflow5pk26 Phase: Succeeded StartedAt: 2026-07-08 10:41:34 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[0] Phase: Succeeded StartedAt: 2026-07-08 10:41:34 +0000 UTC FinishedAt: 2026-07-08 11:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 10:41:34 +0000 UTC FinishedAt: 2026-07-08 11:07:14 +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": "cb14e744dca4eb845b656349ec870e94df585e86", "config_name": "upstream-apparmor-kasan.config", "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": "cb14e744dca4eb845b656349ec870e94df585e86", "config_name": "upstream-apparmor-kasan.config", "series_id": "6b6eb721-9292-45d4-8818-61dac0f8e2f4" }, "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjhiZDdhM2ZmZmU1YmY2MjAwZTVkYTMyNGIzZTM1MTY3ZWVmMWQ5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xuaW5kZXggMDY5MjExOWI3OTA0MzEuLjk5OTAyYzE1NzAzYjAxIDEwMDY0NFxuLS0tIGEvbW0vZ3VwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2d1cC5jXG5AQCAtMjc4NCwxMiAmIzQzOzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4gXHRtYXBwaW5nID0gUkVBRF9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcpO1xuIFxuIFx0Lypcbi1cdCAqIFRoZSBtYXBwaW5nIG1heSBoYXZlIGJlZW4gdHJ1bmNhdGVkLCBpbiBhbnkgY2FzZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lXG4tXHQgKiBpZiB0aGlzIG1hcHBpbmcgaXMgc2FmZSAtIGZhbGwgYmFjayB0byBzbG93IHBhdGggdG8gZGV0ZXJtaW5lIGhvdyB0b1xuLVx0ICogcHJvY2VlZC5cbiYjNDM7XHQgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdFxuJiM0MztcdCAqIGRldGVybWluZSB3aGV0aGVyIHRoZSBmb2xpbyBpcyBmaWxlLWJhY2tlZCwgc28gYSBsb25nLXRlcm0gd3JpdGFibGVcbiYjNDM7XHQgKiBwaW4gbXVzdCBmYWxsIGJhY2sgdG8gdGhlIHNsb3cgcGF0aC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIE90aGVyd2lzZSwgYSBOVUxMIG1hcHBpbmcgcHJvdmVzIHRoaXMgaXMgbm90IGEgc2VjcmV0bWVtIGZvbGlvXG4mIzQzO1x0ICogKHNlY3JldG1lbSBmb2xpb3MgYWx3YXlzIGhhdmUgYSB2YWxpZCBtYXBwaW5nIHRvIHRoZSBzZWNyZXRtZW1cbiYjNDM7XHQgKiBpbm9kZSYjMzk7cyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGVcbiYjNDM7XHQgKiBmYXN0IHBhdGguXG4gXHQgKi9cbiBcdGlmICghbWFwcGluZylcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0cmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7XG4gXG4gXHQvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi9cbiBcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFx1MDAyNiBGT0xJT19NQVBQSU5HX0ZMQUdTO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmOGJkN2EzZmZmZTViZjYyMDBlNWRhMzI0YjNlMzUxNjdlZWYxZDkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxMTowNTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmMKaW5kZXggMDY5MjExOWI3OTA0MzEuLjk5OTAyYzE1NzAzYjAxIDEwMDY0NAotLS0gYS9tbS9ndXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ndXAuYwpAQCAtMjc4NCwxMiAmIzQzOzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJbWFwcGluZyA9IFJFQURfT05DRShmb2xpby0mZ3Q7bWFwcGluZyk7CiAKIAkvKgotCSAqIFRoZSBtYXBwaW5nIG1heSBoYXZlIGJlZW4gdHJ1bmNhdGVkLCBpbiBhbnkgY2FzZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lCi0JICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG8KLQkgKiBwcm9jZWVkLgomIzQzOwkgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdAomIzQzOwkgKiBkZXRlcm1pbmUgd2hldGhlciB0aGUgZm9saW8gaXMgZmlsZS1iYWNrZWQsIHNvIGEgbG9uZy10ZXJtIHdyaXRhYmxlCiYjNDM7CSAqIHBpbiBtdXN0IGZhbGwgYmFjayB0byB0aGUgc2xvdyBwYXRoLgomIzQzOwkgKgomIzQzOwkgKiBPdGhlcndpc2UsIGEgTlVMTCBtYXBwaW5nIHByb3ZlcyB0aGlzIGlzIG5vdCBhIHNlY3JldG1lbSBmb2xpbwomIzQzOwkgKiAoc2VjcmV0bWVtIGZvbGlvcyBhbHdheXMgaGF2ZSBhIHZhbGlkIG1hcHBpbmcgdG8gdGhlIHNlY3JldG1lbQomIzQzOwkgKiBpbm9kZSYjMzk7cyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGUKJiM0MzsJICogZmFzdCBwYXRoLgogCSAqLwogCWlmICghbWFwcGluZykKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJcmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7CiAKIAkvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi8KIAltYXBwaW5nX2ZsYWdzID0gKHVuc2lnbmVkIGxvbmcpbWFwcGluZyAmYW1wOyBGT0xJT19NQVBQSU5HX0ZMQUdTOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTgwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTWVtb3J5IE1hbmFnZW1lbnQgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIHdpdGhpbiBgbW0vZ3VwLmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBmdW5jdGlvbiBiZWhhdmVzIHdoZW4gdGhlIGBtYXBwaW5nYCBwb2ludGVyIGlzIG51bGwsIHdoaWNoIGlzIGEga2V5IGVkZ2UgY2FzZSB0byBjb25zaWRlciBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudC4gUHJldmlvdXNseSwgYSBudWxsIGBtYXBwaW5nYCB3b3VsZCBkaXJlY3RseSByZXR1cm4gYGZhbHNlYC4gTm93LCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZsaXBwZWQgdG8gYCFyZWplY3RfZmlsZV9iYWNrZWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB3ZSYjMzk7cmUgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIGJlaGF2aW9yIG9mIGEgZmFzdCBwYXRoIHdpdGhpbiBgZ2V0X3VzZXJfcGFnZXNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGluIGBtbS9ndXAuY2AgaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgYmVoYXZpb3IgYW5kIHRoZSBjb25kaXRpb25zIGl0JiMzOTtzIGFkZHJlc3NpbmcuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBsaWtlIHRoaXMgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndXBfZmFzdF9mb2xpb19hbGxvd2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZ3VwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcbi0tXG5tbS9ndXAuYy0yNzM3LSAqL1xubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcbm1tL2d1cC5jLTI3Mzkte1xuLS1cbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI4NzgtXG5tbS9ndXAuYzoyODc5Olx0XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjg4MC1cdFx0XHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XG4tLVxubW0vZ3VwLmM9MjkyOT1zdGF0aWMgaW50IGd1cF9mYXN0X3BtZF9sZWFmKHBtZF90IG9yaWcsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZ3VwLmMtMjk1NC1cbm1tL2d1cC5jOjI5NTU6XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjk1Ni1cdFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xuLS1cbm1tL2d1cC5jPTI5NzI9c3RhdGljIGludCBndXBfZmFzdF9wdWRfbGVhZihwdWRfdCBvcmlnLCBwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI5OTctXG5tbS9ndXAuYzoyOTk4Olx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcbm1tL2d1cC5jLTI5OTktXHRcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGEgQ29yZSBNTSBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZy4gVGhpcyBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGd1cF9mYXN0X3B0ZV9yYW5nZWAsIGBndXBfZmFzdF9wbWRfbGVhZmAsIGFuZCBgZ3VwX2Zhc3RfcHVkX2xlYWZgLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGFsbCBwYXJ0IG9mIHRoZSBgZ2V0X3VzZXJfcGFnZXNfZmFzdGAgaW1wbGVtZW50YXRpb24sIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgKnZlcnkqIGhvdCBwYXRoLiBIaWdobHkgcmVhY2hhYmxlIGNvZGUuIFRoaXMgY2hhbmdlIGxvb2tzIGZ1bmN0aW9uYWwgdGhvdWdoOyBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGFzIGEgYEZvY3VzU3ltYm9sYC4gQnV0IHRoZW4gSSBwYXVzZWQuIFRoaXMgY29kZSBpcyBhbHJlYWR5IHNvIGhvdCwgSSByZW1lbWJlcmVkIHRoZSBndWlkZWxpbmVzIGFib3V0IGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBkaXN0cmlidXRpb25zIGZyb20gYmVpbmcgc2tld2VkLiBIbW0sIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpcyBjYWxsZWQgZm9yICpldmVyeSogc2luZ2xlIHBhZ2UgaW4gYGdldF91c2VyX3BhZ2VzX2Zhc3RgLiBUaGF0JiMzOTtzIHJlYWxseSwgcmVhbGx5IGZyZXF1ZW50LiBNYXliZSBJIHNob3VsZG4mIzM5O3QgbGlzdCBpdCBhZnRlciBhbGwuLi4gYnV0IHRoZW4gYWdhaW4sIGlmIEkgZG9uJiMzOTt0IGdpdmUgaXQgYW55IGZvY3VzLCB0aGUgZnV6emVyIG1pZ2h0IG5vdCBzcGVuZCBlbm91Z2ggdGltZSBvbiBpdC4KCldhaXQgYSBzZWNvbmTigKYgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBOb3cgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gYG1tL2d1cC5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHRoYXQmIzM5O3Mgbm90IGhlbHBpbmcuIEFueSBzcGVjaWZpYyBjb25maWcgZm9yIGBnZXRfdXNlcl9wYWdlc19mYXN0YD8gTm9wZSwgaXQmIzM5O3MgY29yZSBNTS4gSSBzaG91bGQgbG9vayBhcm91bmQgZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGlzIHZlcnkgc21hbGwsIGp1c3QgYSBvbmUtbGluZSBjaGFuZ2UuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgTU0uIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O20gZ29pbmcgdG8gbGVhbiB0b3dhcmRzIGluY2x1ZGluZyBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAuIEl0JiMzOTtzIHNwZWNpZmljIGVub3VnaCB0byB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQmIzM5O3MgaW4gYSBob3QgcGF0aC4gSXQmIzM5O3MgcmVhbGx5IHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBNYXliZSBJIHNob3VsZCBjb25zaWRlciBgZ3VwX2Zhc3RfcHRlX3JhbmdlYCBhcyBhbiBhbHRlcm5hdGl2ZSwgYnV0IG5vLCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXMgbW9yZSB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGNoYW5nZS4gU3RpbGwsIHNpbmNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0JiMzOTtsbCBiZSBpbmxpbmVkLiBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgaXQgYWN0dWFsbHkgaXMgaW5saW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndXBfZmFzdF9mb2xpb19hbGxvd2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZ3VwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcbi0tXG5tbS9ndXAuYy0yNzM3LSAqL1xubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcbm1tL2d1cC5jLTI3Mzkte1xuLS1cbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI4NzgtXG5tbS9ndXAuYzoyODc5Olx0XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjg4MC1cdFx0XHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XG4tLVxubW0vZ3VwLmM9MjkyOT1zdGF0aWMgaW50IGd1cF9mYXN0X3BtZF9sZWFmKHBtZF90IG9yaWcsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZ3VwLmMtMjk1NC1cbm1tL2d1cC5jOjI5NTU6XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjk1Ni1cdFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xuLS1cbm1tL2d1cC5jPTI5NzI9c3RhdGljIGludCBndXBfZmFzdF9wdWRfbGVhZihwdWRfdCBvcmlnLCBwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI5OTctXG5tbS9ndXAuYzoyOTk4Olx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcbm1tL2d1cC5jLTI5OTktXHRcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzM1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIEZ1enplciBPcHRpbWl6YXRpb24gYW5kIGBzZWNyZXRtZW1gKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHN0YXRpYyBmdW5jdGlvbiBhbmQgZGVjaWRpbmcgd2hlcmUgdG8gcHV0IGl0LiBJbml0aWFsbHksIG15IGluc3RpbmN0IGlzIHRvIGluY2x1ZGUgaXQgd2l0aGluIGBGb2N1c1N5bWJvbHNgIGluIHRoaXMgY29udGV4dCwgYnV0IEkgcmVhbGl6ZSB0aGUgZnV6emVyIG1pZ2h0IGp1c3QgaWdub3JlIGl0IGlmIGl0JiMzOTtzIGlubGluZWQuIE5vIGJpZyBkZWFsLCByaWdodD8gVGhlIGtleSBpbnN0cnVjdGlvbiBoZXJlIGlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IGxpc3RpbmcgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIGhpdCBtb3JlLgoKV2FpdCwgdGhlIGluc3RydWN0aW9ucyBleHBsaWNpdGx5IHNheSB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgKmJvb20qIGl0IGNsaWNrcyEgYGdldF91c2VyX3BhZ2VzX2Zhc3RgIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgaG90IHBhdGgsIGFuZCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgZ2V0cyBjYWxsZWQgb24gZXZlcnkgc2luZ2xlIHBhZ2UgcGlubmVkIHZpYSBHVVAgZmFzdC4gVGhhdCB3b3VsZCBkZWZpbml0ZWx5IHNrZXcgdGhpbmdzLiBTbywgSSYjMzk7bSBnb2luZyB0byBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gVGhpcyB3YXksIHRoZSBmdXp6ZXIgd29uJiMzOTt0IGJlIG92ZXJseSBiaWFzZWQgdG93YXJkIEdVUCBmYXN0LCBzaW5jZSBpdCYjMzk7cyBwcmFjdGljYWxseSBhbHdheXMgaGl0IGFueXdheS4gQmV0dGVyIHRvIGxldCBpdCBleHBsb3JlIG1vcmUgYnJvYWRseS4KCkhvbGQgb24sIHRoZSBwYXRjaCBub3RlcyBtZW50aW9uIGBzZWNyZXRtZW1gLiBJcyB0aGVyZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gdGhhdD8gSSBzaG91bGQgY2hlY2sgYG1tL3NlY3JldG1lbS5jYCBvciBzZWFyY2ggZm9yIGBDT05GSUdfU0VDUkVUTUVNYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTRUNSRVRNRU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMzUxPWNvbmZpZyBNRU1GRF9DUkVBVEVcbi0tXG5tbS9LY29uZmlnLTEzNTMtXG5tbS9LY29uZmlnOjEzNTQ6Y29uZmlnIFNFQ1JFVE1FTVxubW0vS2NvbmZpZy0xMzU1LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg2MwoJCQkJCQkJb3V0cHV0OiA5MAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2g6CgoqKkFuYWx5c2lzIG9mIE1lbW9yeSBNYW5hZ2VtZW50IE1vZGlmaWNhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgU0VDUkVUTUVNYCBpcyAmIzM5O3kmIzM5Oy4gVGhlIGNoYW5nZSBJJiMzOTttIGxvb2tpbmcgYXQgaXMgaW4gYG1tL2d1cC5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkLCBtZWFuaW5nIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc3lzdGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgaXQgYXMgd29ydGggZnV6emluZywgYW5kIEkgdGhpbmsgSSYjMzk7bGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIHdpdGggYEZvY3VzU3ltYm9scz1bXWAgYW5kIGBFbmFibGVDb25maWdzPVtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgd2l0aGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YCwgc3BlY2lmaWNhbGx5IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCwgdG8gcGVybWl0IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHVuZGVyIGEgbmV3IHNjZW5hcmlvLiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmVyeSBoaWdoLXRyYWZmaWMgYXJlYSBvZiB0aGUgY29kZS4KCk5vdywgbGV0IG1lIGp1c3QgcGF1c2UgYW5kIG1ha2Ugc3VyZSBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXNuJiMzOTt0ICp0b28qIGhvdC4gWWVzLCB0aGUgR1VQIGZhc3QgcGF0aCBpcyB1c2VkIGJ5IHRvbnMgb2YgY3J1Y2lhbCBjb21wb25lbnRzIOKAkyBkaXJlY3QgSS9PLCBuZXR3b3JraW5nLCBhbmQgc28gb24uIEZ1enppbmcgdGhhdCAqc3BlY2lmaWNhbGx5KiBtaWdodCBsZWFkIHRvIGEgZmxvb2Qgb2YgbW9zdGx5IGlycmVsZXZhbnQgbm9pc2UuIEl0JiMzOTtzIHNhZmVyIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5OyBhbnkgaXNzdWUgaW4gdGhlIGFyZWEgY291bGQgYmUgZXhwb3NlZC4KCk9uZSBmaW5hbCBjaGVjayDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IE5vLCBgbW0vZ3VwLmNgIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIGJlIGdvb2QuIFRpbWUgdG8gZmluYWxpemUgdGhlIHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBpbiBnZXRfdXNlcl9wYWdlc19mYXN0IChndXBfZmFzdF9mb2xpb19hbGxvd2VkKSB0byBhbGxvdyB0aGUgZmFzdCBwYXRoIGZvciBmb2xpb3Mgd2l0aCBhIE5VTEwgbWFwcGluZyB3aGVuIG5vdCByZWplY3RpbmcgZmlsZS1iYWNrZWQgcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGhpZ2hseSByZWFjaGFibGUgY29yZSBrZXJuZWwgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDExOjA1OjQxLjU0MDUyOTgxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDAzMTg0ODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBpbiBnZXRfdXNlcl9wYWdlc19mYXN0IChndXBfZmFzdF9mb2xpb19hbGxvd2VkKSB0byBhbGxvdyB0aGUgZmFzdCBwYXRoIGZvciBmb2xpb3Mgd2l0aCBhIE5VTEwgbWFwcGluZyB3aGVuIG5vdCByZWplY3RpbmcgZmlsZS1iYWNrZWQgcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGhpZ2hseSByZWFjaGFibGUgY29yZSBrZXJuZWwgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDEuNTQwNTM2MjExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODIxMTY5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOGJkN2EzZmZmZTViZjYyMDBlNWRhMzI0YjNlMzUxNjdlZWYxZDkzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xcbmluZGV4IDA2OTIxMTliNzkwNDMxLi45OTkwMmMxNTcwM2IwMSAxMDA2NDRcXG4tLS0gYS9tbS9ndXAuY1xcbisrKyBiL21tL2d1cC5jXFxuQEAgLTI3ODQsMTIgKzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuIFxcdG1hcHBpbmcgPSBSRUFEX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcpO1xcbiBcXG4gXFx0LypcXG4tXFx0ICogVGhlIG1hcHBpbmcgbWF5IGhhdmUgYmVlbiB0cnVuY2F0ZWQsIGluIGFueSBjYXNlIHdlIGNhbm5vdCBkZXRlcm1pbmVcXG4tXFx0ICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG9cXG4tXFx0ICogcHJvY2VlZC5cXG4rXFx0ICogSWYgdGhlIG1hcHBpbmcgaXMgTlVMTCAodHJ1bmNhdGVkLCBvciBuZXZlciBzZXQpLCB3ZSBjYW5ub3RcXG4rXFx0ICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZvbGlvIGlzIGZpbGUtYmFja2VkLCBzbyBhIGxvbmctdGVybSB3cml0YWJsZVxcbitcXHQgKiBwaW4gbXVzdCBmYWxsIGJhY2sgdG8gdGhlIHNsb3cgcGF0aC5cXG4rXFx0ICpcXG4rXFx0ICogT3RoZXJ3aXNlLCBhIE5VTEwgbWFwcGluZyBwcm92ZXMgdGhpcyBpcyBub3QgYSBzZWNyZXRtZW0gZm9saW9cXG4rXFx0ICogKHNlY3JldG1lbSBmb2xpb3MgYWx3YXlzIGhhdmUgYSB2YWxpZCBtYXBwaW5nIHRvIHRoZSBzZWNyZXRtZW1cXG4rXFx0ICogaW5vZGUncyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGVcXG4rXFx0ICogZmFzdCBwYXRoLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFtYXBwaW5nKVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdHJldHVybiAhcmVqZWN0X2ZpbGVfYmFja2VkO1xcbiBcXG4gXFx0LyogQW5vbnltb3VzIGZvbGlvcyBwb3NlIG5vIHByb2JsZW0uICovXFxuIFxcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFxcdTAwMjYgRk9MSU9fTUFQUElOR19GTEFHUztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDIuMjI1MjIzODUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTMxODQ4MzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCAoZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZCkgdG8gYWxsb3cgdGhlIGZhc3QgcGF0aCBmb3IgZm9saW9zIHdpdGggYSBOVUxMIG1hcHBpbmcgd2hlbiBub3QgcmVqZWN0aW5nIGZpbGUtYmFja2VkIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBoaWdobHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjhiZDdhM2ZmZmU1YmY2MjAwZTVkYTMyNGIzZTM1MTY3ZWVmMWQ5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jXG5pbmRleCAwNjkyMTE5Yjc5MDQzMS4uOTk5MDJjMTU3MDNiMDEgMTAwNjQ0XG4tLS0gYS9tbS9ndXAuY1xuKysrIGIvbW0vZ3VwLmNcbkBAIC0yNzg0LDEyICsyNzg0LDE3IEBAIHN0YXRpYyBib29sIGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IGZsYWdzKVxuIFx0bWFwcGluZyA9IFJFQURfT05DRShmb2xpby1cdTAwM2VtYXBwaW5nKTtcbiBcbiBcdC8qXG4tXHQgKiBUaGUgbWFwcGluZyBtYXkgaGF2ZSBiZWVuIHRydW5jYXRlZCwgaW4gYW55IGNhc2Ugd2UgY2Fubm90IGRldGVybWluZVxuLVx0ICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG9cbi1cdCAqIHByb2NlZWQuXG4rXHQgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdFxuK1x0ICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZvbGlvIGlzIGZpbGUtYmFja2VkLCBzbyBhIGxvbmctdGVybSB3cml0YWJsZVxuK1x0ICogcGluIG11c3QgZmFsbCBiYWNrIHRvIHRoZSBzbG93IHBhdGguXG4rXHQgKlxuK1x0ICogT3RoZXJ3aXNlLCBhIE5VTEwgbWFwcGluZyBwcm92ZXMgdGhpcyBpcyBub3QgYSBzZWNyZXRtZW0gZm9saW9cbitcdCAqIChzZWNyZXRtZW0gZm9saW9zIGFsd2F5cyBoYXZlIGEgdmFsaWQgbWFwcGluZyB0byB0aGUgc2VjcmV0bWVtXG4rXHQgKiBpbm9kZSdzIGFkZHJlc3Nfc3BhY2UpLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGNhbiBjb250aW51ZSB3aXRoIHRoZVxuK1x0ICogZmFzdCBwYXRoLlxuIFx0ICovXG4gXHRpZiAoIW1hcHBpbmcpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0cmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7XG4gXG4gXHQvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi9cbiBcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFx1MDAyNiBGT0xJT19NQVBQSU5HX0ZMQUdTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDIuMjI1MjI1NTkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NTQ2OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBNYW5hZ2VtZW50IENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIHdpdGhpbiBgbW0vZ3VwLmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBmdW5jdGlvbiBiZWhhdmVzIHdoZW4gdGhlIGBtYXBwaW5nYCBwb2ludGVyIGlzIG51bGwsIHdoaWNoIGlzIGEga2V5IGVkZ2UgY2FzZSB0byBjb25zaWRlciBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudC4gUHJldmlvdXNseSwgYSBudWxsIGBtYXBwaW5nYCB3b3VsZCBkaXJlY3RseSByZXR1cm4gYGZhbHNlYC4gTm93LCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZsaXBwZWQgdG8gYCFyZWplY3RfZmlsZV9iYWNrZWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB3ZSdyZSBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgYmVoYXZpb3Igb2YgYSBmYXN0IHBhdGggd2l0aGluIGBnZXRfdXNlcl9wYWdlc2AuIEkgbmVlZCB0byBkaWcgaW50byBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaW4gYG1tL2d1cC5jYCBpdHNlbGYgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBiZWhhdmlvciBhbmQgdGhlIGNvbmRpdGlvbnMgaXQncyBhZGRyZXNzaW5nLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIGFueSBjaGFuZ2UgbGlrZSB0aGlzIG5lZWRzIGNhcmVmdWwgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo0NS41MTA2OTgxMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4NDE5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZ3VwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcXG4tLVxcbm1tL2d1cC5jLTI3MzctICovXFxubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcXG5tbS9ndXAuYy0yNzM5LXtcXG4tLVxcbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZ3VwLmMtMjg3OC1cXG5tbS9ndXAuYzoyODc5OlxcdFxcdGlmICghZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChmb2xpbywgZmxhZ3MpKSB7XFxubW0vZ3VwLmMtMjg4MC1cXHRcXHRcXHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XFxuLS1cXG5tbS9ndXAuYz0yOTI5PXN0YXRpYyBpbnQgZ3VwX2Zhc3RfcG1kX2xlYWYocG1kX3Qgb3JpZywgcG1kX3QgKnBtZHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2d1cC5jLTI5NTQtXFxubW0vZ3VwLmM6Mjk1NTpcXHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xcbm1tL2d1cC5jLTI5NTYtXFx0XFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xcbi0tXFxubW0vZ3VwLmM9Mjk3Mj1zdGF0aWMgaW50IGd1cF9mYXN0X3B1ZF9sZWFmKHB1ZF90IG9yaWcsIHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9ndXAuYy0yOTk3LVxcbm1tL2d1cC5jOjI5OTg6XFx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcXG5tbS9ndXAuYy0yOTk5LVxcdFxcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDUuNzU5MTI1MzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTEzMDU0ODMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBhIENvcmUgTU0gUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIFRoaXMgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBndXBfZmFzdF9wdGVfcmFuZ2VgLCBgZ3VwX2Zhc3RfcG1kX2xlYWZgLCBhbmQgYGd1cF9mYXN0X3B1ZF9sZWFmYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFydCBvZiB0aGUgYGdldF91c2VyX3BhZ2VzX2Zhc3RgIGltcGxlbWVudGF0aW9uLCB3aGljaCBtZWFucyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgKnZlcnkqIGhvdCBwYXRoLiBIaWdobHkgcmVhY2hhYmxlIGNvZGUuIFRoaXMgY2hhbmdlIGxvb2tzIGZ1bmN0aW9uYWwgdGhvdWdoOyBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsaXN0IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBhcyBhIGBGb2N1c1N5bWJvbGAuIEJ1dCB0aGVuIEkgcGF1c2VkLiBUaGlzIGNvZGUgaXMgYWxyZWFkeSBzbyBob3QsIEkgcmVtZW1iZXJlZCB0aGUgZ3VpZGVsaW5lcyBhYm91dCBhdm9pZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHRlc3QgZGlzdHJpYnV0aW9ucyBmcm9tIGJlaW5nIHNrZXdlZC4gSG1tLCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXMgY2FsbGVkIGZvciAqZXZlcnkqIHNpbmdsZSBwYWdlIGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YC4gVGhhdCdzIHJlYWxseSwgcmVhbGx5IGZyZXF1ZW50LiBNYXliZSBJIHNob3VsZG4ndCBsaXN0IGl0IGFmdGVyIGFsbC4uLiBidXQgdGhlbiBhZ2FpbiwgaWYgSSBkb24ndCBnaXZlIGl0IGFueSBmb2N1cywgdGhlIGZ1enplciBtaWdodCBub3Qgc3BlbmQgZW5vdWdoIHRpbWUgb24gaXQuXG5cbldhaXQgYSBzZWNvbmTigKYgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBOb3cgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gYG1tL2d1cC5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHRoYXQncyBub3QgaGVscGluZy4gQW55IHNwZWNpZmljIGNvbmZpZyBmb3IgYGdldF91c2VyX3BhZ2VzX2Zhc3RgPyBOb3BlLCBpdCdzIGNvcmUgTU0uIEkgc2hvdWxkIGxvb2sgYXJvdW5kIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpcyB2ZXJ5IHNtYWxsLCBqdXN0IGEgb25lLWxpbmUgY2hhbmdlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBNTS4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgYEZvY3VzU3ltYm9sc2AsIEknbSBnb2luZyB0byBsZWFuIHRvd2FyZHMgaW5jbHVkaW5nIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYC4gSXQncyBzcGVjaWZpYyBlbm91Z2ggdG8gdGhlIHBhdGNoLCBldmVuIGlmIGl0J3MgaW4gYSBob3QgcGF0aC4gSXQncyByZWFsbHkgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQuIE1heWJlIEkgc2hvdWxkIGNvbnNpZGVyIGBndXBfZmFzdF9wdGVfcmFuZ2VgIGFzIGFuIGFsdGVybmF0aXZlLCBidXQgbm8sIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpcyBtb3JlIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgY2hhbmdlLiBTdGlsbCwgc2luY2UgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J2xsIGJlIGlubGluZWQuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBpdCBhY3R1YWxseSBpcyBpbmxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDExOjA1OjU0Ljg4OTY3NjU5NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgwMzIyMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9ndXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ndXAuYz0yNjg0PUVYUE9SVF9TWU1CT0woZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQpO1xcbi0tXFxubW0vZ3VwLmMtMjczNy0gKi9cXG5tbS9ndXAuYzoyNzM4OnN0YXRpYyBib29sIGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IGZsYWdzKVxcbm1tL2d1cC5jLTI3Mzkte1xcbi0tXFxubW0vZ3VwLmM9MjgzND1zdGF0aWMgaW50IGd1cF9mYXN0X3B0ZV9yYW5nZShwbWRfdCBwbWQsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9ndXAuYy0yODc4LVxcbm1tL2d1cC5jOjI4Nzk6XFx0XFx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcXG5tbS9ndXAuYy0yODgwLVxcdFxcdFxcdGd1cF9wdXRfZm9saW8oZm9saW8sIDEsIGZsYWdzKTtcXG4tLVxcbm1tL2d1cC5jPTI5Mjk9c3RhdGljIGludCBndXBfZmFzdF9wbWRfbGVhZihwbWRfdCBvcmlnLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZ3VwLmMtMjk1NC1cXG5tbS9ndXAuYzoyOTU1OlxcdGlmICghZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChmb2xpbywgZmxhZ3MpKSB7XFxubW0vZ3VwLmMtMjk1Ni1cXHRcXHRndXBfcHV0X2ZvbGlvKGZvbGlvLCByZWZzLCBmbGFncyk7XFxuLS1cXG5tbS9ndXAuYz0yOTcyPXN0YXRpYyBpbnQgZ3VwX2Zhc3RfcHVkX2xlYWYocHVkX3Qgb3JpZywgcHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2d1cC5jLTI5OTctXFxubW0vZ3VwLmM6Mjk5ODpcXHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xcbm1tL2d1cC5jLTI5OTktXFx0XFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo1NS4wODc3MTgxNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2NDkyMTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIEZ1enplciBPcHRpbWl6YXRpb24gYW5kIGBzZWNyZXRtZW1gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYW5kIGRlY2lkaW5nIHdoZXJlIHRvIHB1dCBpdC4gSW5pdGlhbGx5LCBteSBpbnN0aW5jdCBpcyB0byBpbmNsdWRlIGl0IHdpdGhpbiBgRm9jdXNTeW1ib2xzYCBpbiB0aGlzIGNvbnRleHQsIGJ1dCBJIHJlYWxpemUgdGhlIGZ1enplciBtaWdodCBqdXN0IGlnbm9yZSBpdCBpZiBpdCdzIGlubGluZWQuIE5vIGJpZyBkZWFsLCByaWdodD8gVGhlIGtleSBpbnN0cnVjdGlvbiBoZXJlIGlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IGxpc3RpbmcgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIGhpdCBtb3JlLlxuXG5XYWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc2F5IHRvIGF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCAqYm9vbSogaXQgY2xpY2tzISBgZ2V0X3VzZXJfcGFnZXNfZmFzdGAgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBob3QgcGF0aCwgYW5kIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBnZXRzIGNhbGxlZCBvbiBldmVyeSBzaW5nbGUgcGFnZSBwaW5uZWQgdmlhIEdVUCBmYXN0LiBUaGF0IHdvdWxkIGRlZmluaXRlbHkgc2tldyB0aGluZ3MuIFNvLCBJJ20gZ29pbmcgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHkuIFRoaXMgd2F5LCB0aGUgZnV6emVyIHdvbid0IGJlIG92ZXJseSBiaWFzZWQgdG93YXJkIEdVUCBmYXN0LCBzaW5jZSBpdCdzIHByYWN0aWNhbGx5IGFsd2F5cyBoaXQgYW55d2F5LiBCZXR0ZXIgdG8gbGV0IGl0IGV4cGxvcmUgbW9yZSBicm9hZGx5LlxuXG5Ib2xkIG9uLCB0aGUgcGF0Y2ggbm90ZXMgbWVudGlvbiBgc2VjcmV0bWVtYC4gSXMgdGhlcmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIHRoYXQ/IEkgc2hvdWxkIGNoZWNrIGBtbS9zZWNyZXRtZW0uY2Agb3Igc2VhcmNoIGZvciBgQ09ORklHX1NFQ1JFVE1FTWAgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMzNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo1OS43NjQyMTI2MThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczODEzNDMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0VDUkVUTUVNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEzNTE9Y29uZmlnIE1FTUZEX0NSRUFURVxcbi0tXFxubW0vS2NvbmZpZy0xMzUzLVxcbm1tL0tjb25maWc6MTM1NDpjb25maWcgU0VDUkVUTUVNXFxubW0vS2NvbmZpZy0xMzU1LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNjowNi41MDI0MDg3MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA0MTI0MTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwYXRjaDpcblxuKipBbmFseXNpcyBvZiBNZW1vcnkgTWFuYWdlbWVudCBNb2RpZmljYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgU0VDUkVUTUVNYCBpcyAneScuIFRoZSBjaGFuZ2UgSSdtIGxvb2tpbmcgYXQgaXMgaW4gYG1tL2d1cC5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkLCBtZWFuaW5nIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbWFyayBpdCBhcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSB0aGluayBJJ2xsIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLCB3aXRoIGBGb2N1c1N5bWJvbHM9W11gIGFuZCBgRW5hYmxlQ29uZmlncz1bXWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgd2l0aGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YCwgc3BlY2lmaWNhbGx5IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCwgdG8gcGVybWl0IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHVuZGVyIGEgbmV3IHNjZW5hcmlvLiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmVyeSBoaWdoLXRyYWZmaWMgYXJlYSBvZiB0aGUgY29kZS5cblxuTm93LCBsZXQgbWUganVzdCBwYXVzZSBhbmQgbWFrZSBzdXJlIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpc24ndCAqdG9vKiBob3QuIFllcywgdGhlIEdVUCBmYXN0IHBhdGggaXMgdXNlZCBieSB0b25zIG9mIGNydWNpYWwgY29tcG9uZW50cyDigJMgZGlyZWN0IEkvTywgbmV0d29ya2luZywgYW5kIHNvIG9uLiBGdXp6aW5nIHRoYXQgKnNwZWNpZmljYWxseSogbWlnaHQgbGVhZCB0byBhIGZsb29kIG9mIG1vc3RseSBpcnJlbGV2YW50IG5vaXNlLiBJdCdzIHNhZmVyIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5OyBhbnkgaXNzdWUgaW4gdGhlIGFyZWEgY291bGQgYmUgZXhwb3NlZC5cblxuT25lIGZpbmFsIGNoZWNrIOKAkyBhcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gTm8sIGBtbS9ndXAuY2AgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gSSBzaG91bGQgYmUgZ29vZC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6OTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDc6MDMuNTQzNjUzMTA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCAoZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZCkgdG8gYWxsb3cgdGhlIGZhc3QgcGF0aCBmb3IgZm9saW9zIHdpdGggYSBOVUxMIG1hcHBpbmcgd2hlbiBub3QgcmVqZWN0aW5nIGZpbGUtYmFja2VkIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBoaWdobHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 10:41:34 +0000 UTC FinishedAt: 2026-07-08 11:07:04 +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": "cb14e744dca4eb845b656349ec870e94df585e86", "config_name": "upstream-apparmor-kasan.config", "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": "cb14e744dca4eb845b656349ec870e94df585e86", "config_name": "upstream-apparmor-kasan.config", "series_id": "6b6eb721-9292-45d4-8818-61dac0f8e2f4" }, "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZjhiZDdhM2ZmZmU1YmY2MjAwZTVkYTMyNGIzZTM1MTY3ZWVmMWQ5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xuaW5kZXggMDY5MjExOWI3OTA0MzEuLjk5OTAyYzE1NzAzYjAxIDEwMDY0NFxuLS0tIGEvbW0vZ3VwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2d1cC5jXG5AQCAtMjc4NCwxMiAmIzQzOzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXG4gXHRtYXBwaW5nID0gUkVBRF9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcpO1xuIFxuIFx0Lypcbi1cdCAqIFRoZSBtYXBwaW5nIG1heSBoYXZlIGJlZW4gdHJ1bmNhdGVkLCBpbiBhbnkgY2FzZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lXG4tXHQgKiBpZiB0aGlzIG1hcHBpbmcgaXMgc2FmZSAtIGZhbGwgYmFjayB0byBzbG93IHBhdGggdG8gZGV0ZXJtaW5lIGhvdyB0b1xuLVx0ICogcHJvY2VlZC5cbiYjNDM7XHQgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdFxuJiM0MztcdCAqIGRldGVybWluZSB3aGV0aGVyIHRoZSBmb2xpbyBpcyBmaWxlLWJhY2tlZCwgc28gYSBsb25nLXRlcm0gd3JpdGFibGVcbiYjNDM7XHQgKiBwaW4gbXVzdCBmYWxsIGJhY2sgdG8gdGhlIHNsb3cgcGF0aC5cbiYjNDM7XHQgKlxuJiM0MztcdCAqIE90aGVyd2lzZSwgYSBOVUxMIG1hcHBpbmcgcHJvdmVzIHRoaXMgaXMgbm90IGEgc2VjcmV0bWVtIGZvbGlvXG4mIzQzO1x0ICogKHNlY3JldG1lbSBmb2xpb3MgYWx3YXlzIGhhdmUgYSB2YWxpZCBtYXBwaW5nIHRvIHRoZSBzZWNyZXRtZW1cbiYjNDM7XHQgKiBpbm9kZSYjMzk7cyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGVcbiYjNDM7XHQgKiBmYXN0IHBhdGguXG4gXHQgKi9cbiBcdGlmICghbWFwcGluZylcbi1cdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdFx0cmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7XG4gXG4gXHQvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi9cbiBcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFx1MDAyNiBGT0xJT19NQVBQSU5HX0ZMQUdTO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmOGJkN2EzZmZmZTViZjYyMDBlNWRhMzI0YjNlMzUxNjdlZWYxZDkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxMTowNTozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2d1cC5jIGIvbW0vZ3VwLmMKaW5kZXggMDY5MjExOWI3OTA0MzEuLjk5OTAyYzE1NzAzYjAxIDEwMDY0NAotLS0gYS9tbS9ndXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9ndXAuYwpAQCAtMjc4NCwxMiAmIzQzOzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJbWFwcGluZyA9IFJFQURfT05DRShmb2xpby0mZ3Q7bWFwcGluZyk7CiAKIAkvKgotCSAqIFRoZSBtYXBwaW5nIG1heSBoYXZlIGJlZW4gdHJ1bmNhdGVkLCBpbiBhbnkgY2FzZSB3ZSBjYW5ub3QgZGV0ZXJtaW5lCi0JICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG8KLQkgKiBwcm9jZWVkLgomIzQzOwkgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdAomIzQzOwkgKiBkZXRlcm1pbmUgd2hldGhlciB0aGUgZm9saW8gaXMgZmlsZS1iYWNrZWQsIHNvIGEgbG9uZy10ZXJtIHdyaXRhYmxlCiYjNDM7CSAqIHBpbiBtdXN0IGZhbGwgYmFjayB0byB0aGUgc2xvdyBwYXRoLgomIzQzOwkgKgomIzQzOwkgKiBPdGhlcndpc2UsIGEgTlVMTCBtYXBwaW5nIHByb3ZlcyB0aGlzIGlzIG5vdCBhIHNlY3JldG1lbSBmb2xpbwomIzQzOwkgKiAoc2VjcmV0bWVtIGZvbGlvcyBhbHdheXMgaGF2ZSBhIHZhbGlkIG1hcHBpbmcgdG8gdGhlIHNlY3JldG1lbQomIzQzOwkgKiBpbm9kZSYjMzk7cyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGUKJiM0MzsJICogZmFzdCBwYXRoLgogCSAqLwogCWlmICghbWFwcGluZykKLQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJcmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7CiAKIAkvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi8KIAltYXBwaW5nX2ZsYWdzID0gKHVuc2lnbmVkIGxvbmcpbWFwcGluZyAmYW1wOyBGT0xJT19NQVBQSU5HX0ZMQUdTOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTgwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIENvcmUgTWVtb3J5IE1hbmFnZW1lbnQgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIHdpdGhpbiBgbW0vZ3VwLmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBmdW5jdGlvbiBiZWhhdmVzIHdoZW4gdGhlIGBtYXBwaW5nYCBwb2ludGVyIGlzIG51bGwsIHdoaWNoIGlzIGEga2V5IGVkZ2UgY2FzZSB0byBjb25zaWRlciBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudC4gUHJldmlvdXNseSwgYSBudWxsIGBtYXBwaW5nYCB3b3VsZCBkaXJlY3RseSByZXR1cm4gYGZhbHNlYC4gTm93LCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZsaXBwZWQgdG8gYCFyZWplY3RfZmlsZV9iYWNrZWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB3ZSYjMzk7cmUgYWx0ZXJpbmcgdGhlIGZ1bmRhbWVudGFsIGJlaGF2aW9yIG9mIGEgZmFzdCBwYXRoIHdpdGhpbiBgZ2V0X3VzZXJfcGFnZXNgLiBJIG5lZWQgdG8gZGlnIGludG8gYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGluIGBtbS9ndXAuY2AgaXRzZWxmIHRvIGZ1bGx5IGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBuZXcgYmVoYXZpb3IgYW5kIHRoZSBjb25kaXRpb25zIGl0JiMzOTtzIGFkZHJlc3NpbmcuIFRoaXMgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gYW55IGNoYW5nZSBsaWtlIHRoaXMgbmVlZHMgY2FyZWZ1bCBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndXBfZmFzdF9mb2xpb19hbGxvd2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZ3VwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcbi0tXG5tbS9ndXAuYy0yNzM3LSAqL1xubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcbm1tL2d1cC5jLTI3Mzkte1xuLS1cbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI4NzgtXG5tbS9ndXAuYzoyODc5Olx0XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjg4MC1cdFx0XHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XG4tLVxubW0vZ3VwLmM9MjkyOT1zdGF0aWMgaW50IGd1cF9mYXN0X3BtZF9sZWFmKHBtZF90IG9yaWcsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZ3VwLmMtMjk1NC1cbm1tL2d1cC5jOjI5NTU6XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjk1Ni1cdFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xuLS1cbm1tL2d1cC5jPTI5NzI9c3RhdGljIGludCBndXBfZmFzdF9wdWRfbGVhZihwdWRfdCBvcmlnLCBwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI5OTctXG5tbS9ndXAuYzoyOTk4Olx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcbm1tL2d1cC5jLTI5OTktXHRcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzUyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGEgQ29yZSBNTSBQYXRjaCBmb3IgRnV6emluZyoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZy4gVGhpcyBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGd1cF9mYXN0X3B0ZV9yYW5nZWAsIGBndXBfZmFzdF9wbWRfbGVhZmAsIGFuZCBgZ3VwX2Zhc3RfcHVkX2xlYWZgLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGFsbCBwYXJ0IG9mIHRoZSBgZ2V0X3VzZXJfcGFnZXNfZmFzdGAgaW1wbGVtZW50YXRpb24sIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgKnZlcnkqIGhvdCBwYXRoLiBIaWdobHkgcmVhY2hhYmxlIGNvZGUuIFRoaXMgY2hhbmdlIGxvb2tzIGZ1bmN0aW9uYWwgdGhvdWdoOyBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGxpc3QgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGFzIGEgYEZvY3VzU3ltYm9sYC4gQnV0IHRoZW4gSSBwYXVzZWQuIFRoaXMgY29kZSBpcyBhbHJlYWR5IHNvIGhvdCwgSSByZW1lbWJlcmVkIHRoZSBndWlkZWxpbmVzIGFib3V0IGF2b2lkaW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBkaXN0cmlidXRpb25zIGZyb20gYmVpbmcgc2tld2VkLiBIbW0sIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpcyBjYWxsZWQgZm9yICpldmVyeSogc2luZ2xlIHBhZ2UgaW4gYGdldF91c2VyX3BhZ2VzX2Zhc3RgLiBUaGF0JiMzOTtzIHJlYWxseSwgcmVhbGx5IGZyZXF1ZW50LiBNYXliZSBJIHNob3VsZG4mIzM5O3QgbGlzdCBpdCBhZnRlciBhbGwuLi4gYnV0IHRoZW4gYWdhaW4sIGlmIEkgZG9uJiMzOTt0IGdpdmUgaXQgYW55IGZvY3VzLCB0aGUgZnV6emVyIG1pZ2h0IG5vdCBzcGVuZCBlbm91Z2ggdGltZSBvbiBpdC4KCldhaXQgYSBzZWNvbmTigKYgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBOb3cgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gYG1tL2d1cC5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHRoYXQmIzM5O3Mgbm90IGhlbHBpbmcuIEFueSBzcGVjaWZpYyBjb25maWcgZm9yIGBnZXRfdXNlcl9wYWdlc19mYXN0YD8gTm9wZSwgaXQmIzM5O3MgY29yZSBNTS4gSSBzaG91bGQgbG9vayBhcm91bmQgZm9yIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gVGhlIHBhdGNoIGlzIHZlcnkgc21hbGwsIGp1c3QgYSBvbmUtbGluZSBjaGFuZ2UuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgTU0uIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O20gZ29pbmcgdG8gbGVhbiB0b3dhcmRzIGluY2x1ZGluZyBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAuIEl0JiMzOTtzIHNwZWNpZmljIGVub3VnaCB0byB0aGUgcGF0Y2gsIGV2ZW4gaWYgaXQmIzM5O3MgaW4gYSBob3QgcGF0aC4gSXQmIzM5O3MgcmVhbGx5IHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgd2FzIG1vZGlmaWVkLiBNYXliZSBJIHNob3VsZCBjb25zaWRlciBgZ3VwX2Zhc3RfcHRlX3JhbmdlYCBhcyBhbiBhbHRlcm5hdGl2ZSwgYnV0IG5vLCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXMgbW9yZSB0aWdodGx5IGNvdXBsZWQgdG8gdGhlIGNoYW5nZS4gU3RpbGwsIHNpbmNlIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0JiMzOTtsbCBiZSBpbmxpbmVkLiBJIHNob3VsZCBjaGVjayB0byBzZWUgaWYgaXQgYWN0dWFsbHkgaXMgaW5saW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndXBfZmFzdF9mb2xpb19hbGxvd2VkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vZ3VwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcbi0tXG5tbS9ndXAuYy0yNzM3LSAqL1xubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcbm1tL2d1cC5jLTI3Mzkte1xuLS1cbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI4NzgtXG5tbS9ndXAuYzoyODc5Olx0XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjg4MC1cdFx0XHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XG4tLVxubW0vZ3VwLmM9MjkyOT1zdGF0aWMgaW50IGd1cF9mYXN0X3BtZF9sZWFmKHBtZF90IG9yaWcsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4tLVxubW0vZ3VwLmMtMjk1NC1cbm1tL2d1cC5jOjI5NTU6XHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xubW0vZ3VwLmMtMjk1Ni1cdFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xuLS1cbm1tL2d1cC5jPTI5NzI9c3RhdGljIGludCBndXBfZmFzdF9wdWRfbGVhZihwdWRfdCBvcmlnLCBwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbm1tL2d1cC5jLTI5OTctXG5tbS9ndXAuYzoyOTk4Olx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcbm1tL2d1cC5jLTI5OTktXHRcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzM1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbnNpZGVyaW5nIEZ1enplciBPcHRpbWl6YXRpb24gYW5kIGBzZWNyZXRtZW1gKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHN0YXRpYyBmdW5jdGlvbiBhbmQgZGVjaWRpbmcgd2hlcmUgdG8gcHV0IGl0LiBJbml0aWFsbHksIG15IGluc3RpbmN0IGlzIHRvIGluY2x1ZGUgaXQgd2l0aGluIGBGb2N1c1N5bWJvbHNgIGluIHRoaXMgY29udGV4dCwgYnV0IEkgcmVhbGl6ZSB0aGUgZnV6emVyIG1pZ2h0IGp1c3QgaWdub3JlIGl0IGlmIGl0JiMzOTtzIGlubGluZWQuIE5vIGJpZyBkZWFsLCByaWdodD8gVGhlIGtleSBpbnN0cnVjdGlvbiBoZXJlIGlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IGxpc3RpbmcgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIGhpdCBtb3JlLgoKV2FpdCwgdGhlIGluc3RydWN0aW9ucyBleHBsaWNpdGx5IHNheSB0byBhdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBhbmQgKmJvb20qIGl0IGNsaWNrcyEgYGdldF91c2VyX3BhZ2VzX2Zhc3RgIGlzIGEgY2xhc3NpYyBleGFtcGxlIG9mIGEgaG90IHBhdGgsIGFuZCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgZ2V0cyBjYWxsZWQgb24gZXZlcnkgc2luZ2xlIHBhZ2UgcGlubmVkIHZpYSBHVVAgZmFzdC4gVGhhdCB3b3VsZCBkZWZpbml0ZWx5IHNrZXcgdGhpbmdzLiBTbywgSSYjMzk7bSBnb2luZyB0byBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eS4gVGhpcyB3YXksIHRoZSBmdXp6ZXIgd29uJiMzOTt0IGJlIG92ZXJseSBiaWFzZWQgdG93YXJkIEdVUCBmYXN0LCBzaW5jZSBpdCYjMzk7cyBwcmFjdGljYWxseSBhbHdheXMgaGl0IGFueXdheS4gQmV0dGVyIHRvIGxldCBpdCBleHBsb3JlIG1vcmUgYnJvYWRseS4KCkhvbGQgb24sIHRoZSBwYXRjaCBub3RlcyBtZW50aW9uIGBzZWNyZXRtZW1gLiBJcyB0aGVyZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHJlbGF0ZWQgdG8gdGhhdD8gSSBzaG91bGQgY2hlY2sgYG1tL3NlY3JldG1lbS5jYCBvciBzZWFyY2ggZm9yIGBDT05GSUdfU0VDUkVUTUVNYCB0byBjb25maXJtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDExOjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTRUNSRVRNRU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMzUxPWNvbmZpZyBNRU1GRF9DUkVBVEVcbi0tXG5tbS9LY29uZmlnLTEzNTMtXG5tbS9LY29uZmlnOjEzNTQ6Y29uZmlnIFNFQ1JFVE1FTVxubW0vS2NvbmZpZy0xMzU1LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTE6MDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg2MwoJCQkJCQkJb3V0cHV0OiA5MAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2g6CgoqKkFuYWx5c2lzIG9mIE1lbW9yeSBNYW5hZ2VtZW50IE1vZGlmaWNhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgU0VDUkVUTUVNYCBpcyAmIzM5O3kmIzM5Oy4gVGhlIGNoYW5nZSBJJiMzOTttIGxvb2tpbmcgYXQgaXMgaW4gYG1tL2d1cC5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkLCBtZWFuaW5nIGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgc3lzdGVtLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIG1hcmsgaXQgYXMgd29ydGggZnV6emluZywgYW5kIEkgdGhpbmsgSSYjMzk7bGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIHdpdGggYEZvY3VzU3ltYm9scz1bXWAgYW5kIGBFbmFibGVDb25maWdzPVtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgd2l0aGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YCwgc3BlY2lmaWNhbGx5IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCwgdG8gcGVybWl0IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHVuZGVyIGEgbmV3IHNjZW5hcmlvLiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmVyeSBoaWdoLXRyYWZmaWMgYXJlYSBvZiB0aGUgY29kZS4KCk5vdywgbGV0IG1lIGp1c3QgcGF1c2UgYW5kIG1ha2Ugc3VyZSBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXNuJiMzOTt0ICp0b28qIGhvdC4gWWVzLCB0aGUgR1VQIGZhc3QgcGF0aCBpcyB1c2VkIGJ5IHRvbnMgb2YgY3J1Y2lhbCBjb21wb25lbnRzIOKAkyBkaXJlY3QgSS9PLCBuZXR3b3JraW5nLCBhbmQgc28gb24uIEZ1enppbmcgdGhhdCAqc3BlY2lmaWNhbGx5KiBtaWdodCBsZWFkIHRvIGEgZmxvb2Qgb2YgbW9zdGx5IGlycmVsZXZhbnQgbm9pc2UuIEl0JiMzOTtzIHNhZmVyIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5OyBhbnkgaXNzdWUgaW4gdGhlIGFyZWEgY291bGQgYmUgZXhwb3NlZC4KCk9uZSBmaW5hbCBjaGVjayDigJMgYXJlIHRoZXJlIGFueSBvdGhlciBjb25maWcgb3B0aW9ucyBJIG5lZWQgdG8gY29uc2lkZXI/IE5vLCBgbW0vZ3VwLmNgIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIEkgc2hvdWxkIGJlIGdvb2QuIFRpbWUgdG8gZmluYWxpemUgdGhlIHJlc3BvbnNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxMTowNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBpbiBnZXRfdXNlcl9wYWdlc19mYXN0IChndXBfZmFzdF9mb2xpb19hbGxvd2VkKSB0byBhbGxvdyB0aGUgZmFzdCBwYXRoIGZvciBmb2xpb3Mgd2l0aCBhIE5VTEwgbWFwcGluZyB3aGVuIG5vdCByZWplY3RpbmcgZmlsZS1iYWNrZWQgcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGhpZ2hseSByZWFjaGFibGUgY29yZSBrZXJuZWwgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDExOjA1OjQxLjU0MDUyOTgxMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMDAzMTg0ODAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBsb2dpYyBpbiBnZXRfdXNlcl9wYWdlc19mYXN0IChndXBfZmFzdF9mb2xpb19hbGxvd2VkKSB0byBhbGxvdyB0aGUgZmFzdCBwYXRoIGZvciBmb2xpb3Mgd2l0aCBhIE5VTEwgbWFwcGluZyB3aGVuIG5vdCByZWplY3RpbmcgZmlsZS1iYWNrZWQgcGFnZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGhpZ2hseSByZWFjaGFibGUgY29yZSBrZXJuZWwgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDEuNTQwNTM2MjExWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODIxMTY5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOGJkN2EzZmZmZTViZjYyMDBlNWRhMzI0YjNlMzUxNjdlZWYxZDkzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZ3VwLmMgYi9tbS9ndXAuY1xcbmluZGV4IDA2OTIxMTliNzkwNDMxLi45OTkwMmMxNTcwM2IwMSAxMDA2NDRcXG4tLS0gYS9tbS9ndXAuY1xcbisrKyBiL21tL2d1cC5jXFxuQEAgLTI3ODQsMTIgKzI3ODQsMTcgQEAgc3RhdGljIGJvb2wgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChzdHJ1Y3QgZm9saW8gKmZvbGlvLCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuIFxcdG1hcHBpbmcgPSBSRUFEX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcpO1xcbiBcXG4gXFx0LypcXG4tXFx0ICogVGhlIG1hcHBpbmcgbWF5IGhhdmUgYmVlbiB0cnVuY2F0ZWQsIGluIGFueSBjYXNlIHdlIGNhbm5vdCBkZXRlcm1pbmVcXG4tXFx0ICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG9cXG4tXFx0ICogcHJvY2VlZC5cXG4rXFx0ICogSWYgdGhlIG1hcHBpbmcgaXMgTlVMTCAodHJ1bmNhdGVkLCBvciBuZXZlciBzZXQpLCB3ZSBjYW5ub3RcXG4rXFx0ICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZvbGlvIGlzIGZpbGUtYmFja2VkLCBzbyBhIGxvbmctdGVybSB3cml0YWJsZVxcbitcXHQgKiBwaW4gbXVzdCBmYWxsIGJhY2sgdG8gdGhlIHNsb3cgcGF0aC5cXG4rXFx0ICpcXG4rXFx0ICogT3RoZXJ3aXNlLCBhIE5VTEwgbWFwcGluZyBwcm92ZXMgdGhpcyBpcyBub3QgYSBzZWNyZXRtZW0gZm9saW9cXG4rXFx0ICogKHNlY3JldG1lbSBmb2xpb3MgYWx3YXlzIGhhdmUgYSB2YWxpZCBtYXBwaW5nIHRvIHRoZSBzZWNyZXRtZW1cXG4rXFx0ICogaW5vZGUncyBhZGRyZXNzX3NwYWNlKSwgc28gaW4gdGhhdCBjYXNlLCB3ZSBjYW4gY29udGludWUgd2l0aCB0aGVcXG4rXFx0ICogZmFzdCBwYXRoLlxcbiBcXHQgKi9cXG4gXFx0aWYgKCFtYXBwaW5nKVxcbi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdFxcdHJldHVybiAhcmVqZWN0X2ZpbGVfYmFja2VkO1xcbiBcXG4gXFx0LyogQW5vbnltb3VzIGZvbGlvcyBwb3NlIG5vIHByb2JsZW0uICovXFxuIFxcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFxcdTAwMjYgRk9MSU9fTUFQUElOR19GTEFHUztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDIuMjI1MjIzODUzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTMxODQ4MzA3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCAoZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZCkgdG8gYWxsb3cgdGhlIGZhc3QgcGF0aCBmb3IgZm9saW9zIHdpdGggYSBOVUxMIG1hcHBpbmcgd2hlbiBub3QgcmVqZWN0aW5nIGZpbGUtYmFja2VkIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBoaWdobHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjhiZDdhM2ZmZmU1YmY2MjAwZTVkYTMyNGIzZTM1MTY3ZWVmMWQ5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTE6MDU6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9ndXAuYyBiL21tL2d1cC5jXG5pbmRleCAwNjkyMTE5Yjc5MDQzMS4uOTk5MDJjMTU3MDNiMDEgMTAwNjQ0XG4tLS0gYS9tbS9ndXAuY1xuKysrIGIvbW0vZ3VwLmNcbkBAIC0yNzg0LDEyICsyNzg0LDE3IEBAIHN0YXRpYyBib29sIGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IGZsYWdzKVxuIFx0bWFwcGluZyA9IFJFQURfT05DRShmb2xpby1cdTAwM2VtYXBwaW5nKTtcbiBcbiBcdC8qXG4tXHQgKiBUaGUgbWFwcGluZyBtYXkgaGF2ZSBiZWVuIHRydW5jYXRlZCwgaW4gYW55IGNhc2Ugd2UgY2Fubm90IGRldGVybWluZVxuLVx0ICogaWYgdGhpcyBtYXBwaW5nIGlzIHNhZmUgLSBmYWxsIGJhY2sgdG8gc2xvdyBwYXRoIHRvIGRldGVybWluZSBob3cgdG9cbi1cdCAqIHByb2NlZWQuXG4rXHQgKiBJZiB0aGUgbWFwcGluZyBpcyBOVUxMICh0cnVuY2F0ZWQsIG9yIG5ldmVyIHNldCksIHdlIGNhbm5vdFxuK1x0ICogZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZvbGlvIGlzIGZpbGUtYmFja2VkLCBzbyBhIGxvbmctdGVybSB3cml0YWJsZVxuK1x0ICogcGluIG11c3QgZmFsbCBiYWNrIHRvIHRoZSBzbG93IHBhdGguXG4rXHQgKlxuK1x0ICogT3RoZXJ3aXNlLCBhIE5VTEwgbWFwcGluZyBwcm92ZXMgdGhpcyBpcyBub3QgYSBzZWNyZXRtZW0gZm9saW9cbitcdCAqIChzZWNyZXRtZW0gZm9saW9zIGFsd2F5cyBoYXZlIGEgdmFsaWQgbWFwcGluZyB0byB0aGUgc2VjcmV0bWVtXG4rXHQgKiBpbm9kZSdzIGFkZHJlc3Nfc3BhY2UpLCBzbyBpbiB0aGF0IGNhc2UsIHdlIGNhbiBjb250aW51ZSB3aXRoIHRoZVxuK1x0ICogZmFzdCBwYXRoLlxuIFx0ICovXG4gXHRpZiAoIW1hcHBpbmcpXG4tXHRcdHJldHVybiBmYWxzZTtcbitcdFx0cmV0dXJuICFyZWplY3RfZmlsZV9iYWNrZWQ7XG4gXG4gXHQvKiBBbm9ueW1vdXMgZm9saW9zIHBvc2Ugbm8gcHJvYmxlbS4gKi9cbiBcdG1hcHBpbmdfZmxhZ3MgPSAodW5zaWduZWQgbG9uZyltYXBwaW5nIFx1MDAyNiBGT0xJT19NQVBQSU5HX0ZMQUdTO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDIuMjI1MjI1NTkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NTQ2OTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE1lbW9yeSBNYW5hZ2VtZW50IENoYW5nZSoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdHdlYWtpbmcgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIHdpdGhpbiBgbW0vZ3VwLmNgLiBJbnRlcmVzdGluZy4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGZvY3VzZXMgb24gaG93IHRoZSBmdW5jdGlvbiBiZWhhdmVzIHdoZW4gdGhlIGBtYXBwaW5nYCBwb2ludGVyIGlzIG51bGwsIHdoaWNoIGlzIGEga2V5IGVkZ2UgY2FzZSB0byBjb25zaWRlciBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgbWFuYWdlbWVudC4gUHJldmlvdXNseSwgYSBudWxsIGBtYXBwaW5nYCB3b3VsZCBkaXJlY3RseSByZXR1cm4gYGZhbHNlYC4gTm93LCB0aGUgcmV0dXJuIHZhbHVlIGlzIGZsaXBwZWQgdG8gYCFyZWplY3RfZmlsZV9iYWNrZWRgLiBUaGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB3ZSdyZSBhbHRlcmluZyB0aGUgZnVuZGFtZW50YWwgYmVoYXZpb3Igb2YgYSBmYXN0IHBhdGggd2l0aGluIGBnZXRfdXNlcl9wYWdlc2AuIEkgbmVlZCB0byBkaWcgaW50byBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaW4gYG1tL2d1cC5jYCBpdHNlbGYgdG8gZnVsbHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIG5ldyBiZWhhdmlvciBhbmQgdGhlIGNvbmRpdGlvbnMgaXQncyBhZGRyZXNzaW5nLiBUaGlzIGlzIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQsIHNvIGFueSBjaGFuZ2UgbGlrZSB0aGlzIG5lZWRzIGNhcmVmdWwgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODAsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo0NS41MTA2OTgxMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ4NDE5ODI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZ3VwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZ3VwLmM9MjY4ND1FWFBPUlRfU1lNQk9MKGdldF91c2VyX3BhZ2VzX3VubG9ja2VkKTtcXG4tLVxcbm1tL2d1cC5jLTI3MzctICovXFxubW0vZ3VwLmM6MjczODpzdGF0aWMgYm9vbCBndXBfZmFzdF9mb2xpb19hbGxvd2VkKHN0cnVjdCBmb2xpbyAqZm9saW8sIHVuc2lnbmVkIGludCBmbGFncylcXG5tbS9ndXAuYy0yNzM5LXtcXG4tLVxcbm1tL2d1cC5jPTI4MzQ9c3RhdGljIGludCBndXBfZmFzdF9wdGVfcmFuZ2UocG1kX3QgcG1kLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZ3VwLmMtMjg3OC1cXG5tbS9ndXAuYzoyODc5OlxcdFxcdGlmICghZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChmb2xpbywgZmxhZ3MpKSB7XFxubW0vZ3VwLmMtMjg4MC1cXHRcXHRcXHRndXBfcHV0X2ZvbGlvKGZvbGlvLCAxLCBmbGFncyk7XFxuLS1cXG5tbS9ndXAuYz0yOTI5PXN0YXRpYyBpbnQgZ3VwX2Zhc3RfcG1kX2xlYWYocG1kX3Qgb3JpZywgcG1kX3QgKnBtZHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2d1cC5jLTI5NTQtXFxubW0vZ3VwLmM6Mjk1NTpcXHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xcbm1tL2d1cC5jLTI5NTYtXFx0XFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xcbi0tXFxubW0vZ3VwLmM9Mjk3Mj1zdGF0aWMgaW50IGd1cF9mYXN0X3B1ZF9sZWFmKHB1ZF90IG9yaWcsIHB1ZF90ICpwdWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9ndXAuYy0yOTk3LVxcbm1tL2d1cC5jOjI5OTg6XFx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcXG5tbS9ndXAuYy0yOTk5LVxcdFxcdGd1cF9wdXRfZm9saW8oZm9saW8sIHJlZnMsIGZsYWdzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDU6NDUuNzU5MTI1MzgyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTEzMDU0ODMzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiBhIENvcmUgTU0gUGF0Y2ggZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcuIFRoaXMgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBndXBfZmFzdF9wdGVfcmFuZ2VgLCBgZ3VwX2Zhc3RfcG1kX2xlYWZgLCBhbmQgYGd1cF9mYXN0X3B1ZF9sZWFmYC4gVGhvc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFydCBvZiB0aGUgYGdldF91c2VyX3BhZ2VzX2Zhc3RgIGltcGxlbWVudGF0aW9uLCB3aGljaCBtZWFucyB3ZSdyZSB0YWxraW5nIGFib3V0IGEgKnZlcnkqIGhvdCBwYXRoLiBIaWdobHkgcmVhY2hhYmxlIGNvZGUuIFRoaXMgY2hhbmdlIGxvb2tzIGZ1bmN0aW9uYWwgdGhvdWdoOyBpdCdzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBsaXN0IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBhcyBhIGBGb2N1c1N5bWJvbGAuIEJ1dCB0aGVuIEkgcGF1c2VkLiBUaGlzIGNvZGUgaXMgYWxyZWFkeSBzbyBob3QsIEkgcmVtZW1iZXJlZCB0aGUgZ3VpZGVsaW5lcyBhYm91dCBhdm9pZGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHRlc3QgZGlzdHJpYnV0aW9ucyBmcm9tIGJlaW5nIHNrZXdlZC4gSG1tLCBgZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZGAgaXMgY2FsbGVkIGZvciAqZXZlcnkqIHNpbmdsZSBwYWdlIGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YC4gVGhhdCdzIHJlYWxseSwgcmVhbGx5IGZyZXF1ZW50LiBNYXliZSBJIHNob3VsZG4ndCBsaXN0IGl0IGFmdGVyIGFsbC4uLiBidXQgdGhlbiBhZ2FpbiwgaWYgSSBkb24ndCBnaXZlIGl0IGFueSBmb2N1cywgdGhlIGZ1enplciBtaWdodCBub3Qgc3BlbmQgZW5vdWdoIHRpbWUgb24gaXQuXG5cbldhaXQgYSBzZWNvbmTigKYgYGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWRgIGlzIGEgc3RhdGljIGZ1bmN0aW9uISBPa2F5LCB0aGF0IGNoYW5nZXMgdGhpbmdzIHNsaWdodGx5LiBOb3cgSSBzaG91bGQgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gYG1tL2d1cC5jYCBpcyBhbHdheXMgY29tcGlsZWQsIHRoYXQncyBub3QgaGVscGluZy4gQW55IHNwZWNpZmljIGNvbmZpZyBmb3IgYGdldF91c2VyX3BhZ2VzX2Zhc3RgPyBOb3BlLCBpdCdzIGNvcmUgTU0uIEkgc2hvdWxkIGxvb2sgYXJvdW5kIGZvciBhbnkgb3RoZXIgcmVsYXRlZCBmdW5jdGlvbnMuIFRoZSBwYXRjaCBpcyB2ZXJ5IHNtYWxsLCBqdXN0IGEgb25lLWxpbmUgY2hhbmdlLlxuXG5Mb29raW5nIGF0IHRoZSBjb2RlLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBNTS4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgYEZvY3VzU3ltYm9sc2AsIEknbSBnb2luZyB0byBsZWFuIHRvd2FyZHMgaW5jbHVkaW5nIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYC4gSXQncyBzcGVjaWZpYyBlbm91Z2ggdG8gdGhlIHBhdGNoLCBldmVuIGlmIGl0J3MgaW4gYSBob3QgcGF0aC4gSXQncyByZWFsbHkgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB3YXMgbW9kaWZpZWQuIE1heWJlIEkgc2hvdWxkIGNvbnNpZGVyIGBndXBfZmFzdF9wdGVfcmFuZ2VgIGFzIGFuIGFsdGVybmF0aXZlLCBidXQgbm8sIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpcyBtb3JlIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgY2hhbmdlLiBTdGlsbCwgc2luY2UgaXQncyBhIHN0YXRpYyBmdW5jdGlvbiwgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J2xsIGJlIGlubGluZWQuIEkgc2hvdWxkIGNoZWNrIHRvIHNlZSBpZiBpdCBhY3R1YWxseSBpcyBpbmxpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzUyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDExOjA1OjU0Ljg4OTY3NjU5NFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgwMzIyMzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9ndXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9ndXAuYz0yNjg0PUVYUE9SVF9TWU1CT0woZ2V0X3VzZXJfcGFnZXNfdW5sb2NrZWQpO1xcbi0tXFxubW0vZ3VwLmMtMjczNy0gKi9cXG5tbS9ndXAuYzoyNzM4OnN0YXRpYyBib29sIGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoc3RydWN0IGZvbGlvICpmb2xpbywgdW5zaWduZWQgaW50IGZsYWdzKVxcbm1tL2d1cC5jLTI3Mzkte1xcbi0tXFxubW0vZ3VwLmM9MjgzND1zdGF0aWMgaW50IGd1cF9mYXN0X3B0ZV9yYW5nZShwbWRfdCBwbWQsIHBtZF90ICpwbWRwLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuLS1cXG5tbS9ndXAuYy0yODc4LVxcbm1tL2d1cC5jOjI4Nzk6XFx0XFx0aWYgKCFndXBfZmFzdF9mb2xpb19hbGxvd2VkKGZvbGlvLCBmbGFncykpIHtcXG5tbS9ndXAuYy0yODgwLVxcdFxcdFxcdGd1cF9wdXRfZm9saW8oZm9saW8sIDEsIGZsYWdzKTtcXG4tLVxcbm1tL2d1cC5jPTI5Mjk9c3RhdGljIGludCBndXBfZmFzdF9wbWRfbGVhZihwbWRfdCBvcmlnLCBwbWRfdCAqcG1kcCwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbi0tXFxubW0vZ3VwLmMtMjk1NC1cXG5tbS9ndXAuYzoyOTU1OlxcdGlmICghZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZChmb2xpbywgZmxhZ3MpKSB7XFxubW0vZ3VwLmMtMjk1Ni1cXHRcXHRndXBfcHV0X2ZvbGlvKGZvbGlvLCByZWZzLCBmbGFncyk7XFxuLS1cXG5tbS9ndXAuYz0yOTcyPXN0YXRpYyBpbnQgZ3VwX2Zhc3RfcHVkX2xlYWYocHVkX3Qgb3JpZywgcHVkX3QgKnB1ZHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbm1tL2d1cC5jLTI5OTctXFxubW0vZ3VwLmM6Mjk5ODpcXHRpZiAoIWd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQoZm9saW8sIGZsYWdzKSkge1xcbm1tL2d1cC5jLTI5OTktXFx0XFx0Z3VwX3B1dF9mb2xpbyhmb2xpbywgcmVmcywgZmxhZ3MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo1NS4wODc3MTgxNjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc2NDkyMTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbnNpZGVyaW5nIEZ1enplciBPcHRpbWl6YXRpb24gYW5kIGBzZWNyZXRtZW1gKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzdGF0aWMgZnVuY3Rpb24gYW5kIGRlY2lkaW5nIHdoZXJlIHRvIHB1dCBpdC4gSW5pdGlhbGx5LCBteSBpbnN0aW5jdCBpcyB0byBpbmNsdWRlIGl0IHdpdGhpbiBgRm9jdXNTeW1ib2xzYCBpbiB0aGlzIGNvbnRleHQsIGJ1dCBJIHJlYWxpemUgdGhlIGZ1enplciBtaWdodCBqdXN0IGlnbm9yZSBpdCBpZiBpdCdzIGlubGluZWQuIE5vIGJpZyBkZWFsLCByaWdodD8gVGhlIGtleSBpbnN0cnVjdGlvbiBoZXJlIGlzIHRvIGF2b2lkIHNrZXdpbmcgdGVzdCBkaXN0cmlidXRpb25zIGJ5IGxpc3RpbmcgZnVuY3Rpb25zIHRoYXQgbWF5IGJlIGhpdCBtb3JlLlxuXG5XYWl0LCB0aGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgc2F5IHRvIGF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIGFuZCAqYm9vbSogaXQgY2xpY2tzISBgZ2V0X3VzZXJfcGFnZXNfZmFzdGAgaXMgYSBjbGFzc2ljIGV4YW1wbGUgb2YgYSBob3QgcGF0aCwgYW5kIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBnZXRzIGNhbGxlZCBvbiBldmVyeSBzaW5nbGUgcGFnZSBwaW5uZWQgdmlhIEdVUCBmYXN0LiBUaGF0IHdvdWxkIGRlZmluaXRlbHkgc2tldyB0aGluZ3MuIFNvLCBJJ20gZ29pbmcgdG8gbGVhdmUgYEZvY3VzU3ltYm9sc2AgZW1wdHkuIFRoaXMgd2F5LCB0aGUgZnV6emVyIHdvbid0IGJlIG92ZXJseSBiaWFzZWQgdG93YXJkIEdVUCBmYXN0LCBzaW5jZSBpdCdzIHByYWN0aWNhbGx5IGFsd2F5cyBoaXQgYW55d2F5LiBCZXR0ZXIgdG8gbGV0IGl0IGV4cGxvcmUgbW9yZSBicm9hZGx5LlxuXG5Ib2xkIG9uLCB0aGUgcGF0Y2ggbm90ZXMgbWVudGlvbiBgc2VjcmV0bWVtYC4gSXMgdGhlcmUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiByZWxhdGVkIHRvIHRoYXQ/IEkgc2hvdWxkIGNoZWNrIGBtbS9zZWNyZXRtZW0uY2Agb3Igc2VhcmNoIGZvciBgQ09ORklHX1NFQ1JFVE1FTWAgdG8gY29uZmlybS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMzNSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNTo1OS43NjQyMTI2MThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjczODEzNDMwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU0VDUkVUTUVNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEzNTE9Y29uZmlnIE1FTUZEX0NSRUFURVxcbi0tXFxubW0vS2NvbmZpZy0xMzUzLVxcbm1tL0tjb25maWc6MTM1NDpjb25maWcgU0VDUkVUTUVNXFxubW0vS2NvbmZpZy0xMzU1LVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxMTowNjowNi41MDI0MDg3MTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzA0MTI0MTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwYXRjaDpcblxuKipBbmFseXNpcyBvZiBNZW1vcnkgTWFuYWdlbWVudCBNb2RpZmljYXRpb24gZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBgU0VDUkVUTUVNYCBpcyAneScuIFRoZSBjaGFuZ2UgSSdtIGxvb2tpbmcgYXQgaXMgaW4gYG1tL2d1cC5jYCwgd2hpY2ggaXMgYWx3YXlzIGNvbXBpbGVkLCBtZWFuaW5nIGl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gbWFyayBpdCBhcyB3b3J0aCBmdXp6aW5nLCBhbmQgSSB0aGluayBJJ2xsIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgLCB3aXRoIGBGb2N1c1N5bWJvbHM9W11gIGFuZCBgRW5hYmxlQ29uZmlncz1bXWAuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgd2l0aGluIGBnZXRfdXNlcl9wYWdlc19mYXN0YCwgc3BlY2lmaWNhbGx5IGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCwgdG8gcGVybWl0IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHVuZGVyIGEgbmV3IHNjZW5hcmlvLiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgdmVyeSBoaWdoLXRyYWZmaWMgYXJlYSBvZiB0aGUgY29kZS5cblxuTm93LCBsZXQgbWUganVzdCBwYXVzZSBhbmQgbWFrZSBzdXJlIGBndXBfZmFzdF9mb2xpb19hbGxvd2VkYCBpc24ndCAqdG9vKiBob3QuIFllcywgdGhlIEdVUCBmYXN0IHBhdGggaXMgdXNlZCBieSB0b25zIG9mIGNydWNpYWwgY29tcG9uZW50cyDigJMgZGlyZWN0IEkvTywgbmV0d29ya2luZywgYW5kIHNvIG9uLiBGdXp6aW5nIHRoYXQgKnNwZWNpZmljYWxseSogbWlnaHQgbGVhZCB0byBhIGZsb29kIG9mIG1vc3RseSBpcnJlbGV2YW50IG5vaXNlLiBJdCdzIHNhZmVyIHRvIGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5OyBhbnkgaXNzdWUgaW4gdGhlIGFyZWEgY291bGQgYmUgZXhwb3NlZC5cblxuT25lIGZpbmFsIGNoZWNrIOKAkyBhcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIEkgbmVlZCB0byBjb25zaWRlcj8gTm8sIGBtbS9ndXAuY2AgaXMgY29yZSBtZW1vcnkgbWFuYWdlbWVudCwgc28gSSBzaG91bGQgYmUgZ29vZC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgcmVzcG9uc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NjMsIk91dHB1dFRva2VucyI6OTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTE6MDc6MDMuNTQzNjUzMTA0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgbG9naWMgaW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCAoZ3VwX2Zhc3RfZm9saW9fYWxsb3dlZCkgdG8gYWxsb3cgdGhlIGZhc3QgcGF0aCBmb3IgZm9saW9zIHdpdGggYSBOVUxMIG1hcHBpbmcgd2hlbiBub3QgcmVqZWN0aW5nIGZpbGUtYmFja2VkIHBhZ2VzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBoaWdobHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGxvZ2ljIGluIGdldF91c2VyX3BhZ2VzX2Zhc3QgKGd1cF9mYXN0X2ZvbGlvX2FsbG93ZWQpIHRvIGFsbG93IHRoZSBmYXN0IHBhdGggZm9yIGZvbGlvcyB3aXRoIGEgTlVMTCBtYXBwaW5nIHdoZW4gbm90IHJlamVjdGluZyBmaWxlLWJhY2tlZCBwYWdlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgaGlnaGx5IHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBwYXRoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[1] Phase: Succeeded StartedAt: 2026-07-08 11:07:14 +0000 UTC FinishedAt: 2026-07-08 11:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 11:07:14 +0000 UTC FinishedAt: 2026-07-08 11:07:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2] Phase: Succeeded StartedAt: 2026-07-08 11:07:14 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:15 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:15 +0000 UTC FinishedAt: 2026-07-08 11:07:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:15 +0000 UTC FinishedAt: 2026-07-08 11:07:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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-workflow5pk26/series-workflow5pk26-convert-artifact-501003336/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:52 +0000 UTC FinishedAt: 2026-07-08 11:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:52 +0000 UTC FinishedAt: 2026-07-08 11:42:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e2610381-cc8b-47e9-8fdf-acd885de3054,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-workflow5pk26/series-workflow5pk26-convert-artifact-501003336/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": "6f08eaa4-267f-4021-a169-d3dbbf73aaea", "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-workflow5pk26/series-workflow5pk26-build-action-1924833470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:07:52 +0000 UTC FinishedAt: 2026-07-08 11:42:31 +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:*e2610381-cc8b-47e9-8fdf-acd885de3054,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-workflow5pk26/series-workflow5pk26-convert-artifact-501003336/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": "6f08eaa4-267f-4021-a169-d3dbbf73aaea", "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-workflow5pk26/series-workflow5pk26-build-action-1924833470/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:42:43 +0000 UTC FinishedAt: 2026-07-08 11:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:42:43 +0000 UTC FinishedAt: 2026-07-08 11:42:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:42:43 +0000 UTC FinishedAt: 2026-07-08 11:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:42:43 +0000 UTC FinishedAt: 2026-07-08 11:43:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-workflow5pk26/series-workflow5pk26-convert-artifact-1727034927/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:43:31 +0000 UTC FinishedAt: 2026-07-08 11:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:43:31 +0000 UTC FinishedAt: 2026-07-08 11:45:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f08eaa4-267f-4021-a169-d3dbbf73aaea,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-workflow5pk26/series-workflow5pk26-build-action-1924833470/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-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:45:54 +0000 UTC FinishedAt: 2026-07-08 11:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:45:54 +0000 UTC FinishedAt: 2026-07-08 11:45:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:45:54 +0000 UTC FinishedAt: 2026-07-08 12:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:45:55 +0000 UTC FinishedAt: 2026-07-08 12:29:06 +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:*e2610381-cc8b-47e9-8fdf-acd885de3054,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-workflow5pk26/series-workflow5pk26-convert-artifact-1727034927/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": "76583962-8001-47b2-8fc8-d389d7ef3966", "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-workflow5pk26/series-workflow5pk26-build-action-2164277699/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 11:45:55 +0000 UTC FinishedAt: 2026-07-08 12:28:56 +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:*e2610381-cc8b-47e9-8fdf-acd885de3054,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-workflow5pk26/series-workflow5pk26-convert-artifact-1727034927/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": "76583962-8001-47b2-8fc8-d389d7ef3966", "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-workflow5pk26/series-workflow5pk26-build-action-2164277699/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:29:06 +0000 UTC FinishedAt: 2026-07-08 12:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:29:06 +0000 UTC FinishedAt: 2026-07-08 12:29:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:29:06 +0000 UTC FinishedAt: 2026-07-08 12:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:29:06 +0000 UTC FinishedAt: 2026-07-08 12:31:03 +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:*76583962-8001-47b2-8fc8-d389d7ef3966,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-workflow5pk26/series-workflow5pk26-build-action-2164277699/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-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +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:*6f08eaa4-267f-4021-a169-d3dbbf73aaea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76583962-8001-47b2-8fc8-d389d7ef3966,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-workflow5pk26/series-workflow5pk26-build-action-1924833470/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-workflow5pk26/series-workflow5pk26-build-action-2164277699/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 12:31:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 12:31:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-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-workflow5pk26/series-workflow5pk26-convert-artifact-3378352104/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 12:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 12:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:13 +0000 UTC FinishedAt: 2026-07-08 12:31:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:23 +0000 UTC FinishedAt: 2026-07-08 15:34:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5pk26[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","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":"cb14e744dca4eb845b656349ec870e94df585e86","config_name":"upstream-apparmor-kasan.config","series_id":"6b6eb721-9292-45d4-8818-61dac0f8e2f4","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-07-08 12:31:23 +0000 UTC FinishedAt: 2026-07-08 15:34:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6f08eaa4-267f-4021-a169-d3dbbf73aaea,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*76583962-8001-47b2-8fc8-d389d7ef3966,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-workflow5pk26/series-workflow5pk26-build-action-1924833470/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-workflow5pk26/series-workflow5pk26-build-action-2164277699/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-workflow5pk26/series-workflow5pk26-convert-artifact-3378352104/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,}