Name: series-workflowhd6pd Phase: Succeeded StartedAt: 2026-07-29 07:29:19 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[0] Phase: Succeeded StartedAt: 2026-07-29 07:29:19 +0000 UTC FinishedAt: 2026-07-29 07:35:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 07:29:19 +0000 UTC FinishedAt: 2026-07-29 07:35:16 +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": "2a4faffc103297c4822bb269d521249b75cc2261", "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": "2a4faffc103297c4822bb269d521249b75cc2261", "config_name": "upstream-apparmor-kasan.config", "series_id": "4f8f658e-cefa-4066-80cf-a8bfb9a6961c" }, "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA3OjM0OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggMGFlY2ExMDZhNGZkZS4uMjM0ZmMwM2Q3NTZmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtNjkyNSwxNiAmIzQzOzY5MjUsMjEgQEAgc3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGlcbiBzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuIFx0XHRpbnQgd3JpdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5ndGgsIGxvZmZfdCAqcHBvcylcbiB7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgcmM7XG4gXG4tXHRwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcbiYjNDM7XHRyYyA9IHByb2NfZG9pbnR2ZWNfbWlubWF4KHRhYmxlLCB3cml0ZSwgYnVmZmVyLCBsZW5ndGgsIHBwb3MpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdHJldHVybiByYztcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9OUl9aT05FUzsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcdTAwM2MgMSlcbi1cdFx0XHRzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gPSAwO1xuJiM0MztcdGlmICh3cml0ZSkge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05SX1pPTkVTOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuJiM0MztcdFx0XHRcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcbiBcdH1cbiBcbi1cdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA3OjM0OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IDBhZWNhMTA2YTRmZGUuLjIzNGZjMDNkNzU2ZjMgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTY5MjUsMTYgJiM0Mzs2OTI1LDIxIEBAIHN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpCiBzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLAogCQlpbnQgd3JpdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5ndGgsIGxvZmZfdCAqcHBvcykKIHsKLQlpbnQgaTsKJiM0MzsJaW50IGksIHJjOwogCi0JcHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7CiYjNDM7CXJjID0gcHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7CiYjNDM7CWlmIChyYykKJiM0MzsJCXJldHVybiByYzsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhfTlJfWk9ORVM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gJmx0OyAxKQotCQkJc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldID0gMDsKJiM0MzsJaWYgKHdyaXRlKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgTUFYX05SX1pPTkVTOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWlmIChzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gJmx0OyAxKQomIzQzOwkJCQlzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gPSAwOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTsKIAl9CiAKLQlzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGFnZSBBbGxvY2F0aW9uIFN5c2N0bCBIYW5kbGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIGZ1bmN0aW9uIHdpdGhpbiBgbW0vcGFnZV9hbGxvYy5jYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBndWFyZHMgdGhlIGNhbGwgdG8gYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgIHdpdGggYSB3cml0ZSBjaGVjayBhbmQgYWxzbyBjaGVja3MgdGhlIHJldHVybiB2YWx1ZSBvZiBgcHJvY19kb2ludHZlY19taW5tYXhgLiBJdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGJ1ZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIHdhcyBiZWluZyBjYWxsZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlIHdlcmUgcmVhZGluZyB0aGUgc3lzY3RsIHZhbHVlIG9yIGlmIHRoZSBzeXNjdGwgb3BlcmF0aW9uIGZhaWxlZC4gVGhpcyBpcyBhIGNydWNpYWwgZml4IGZvciB0aGUgc3lzY3RsIGhhbmRsZXIuIEl04oCZcyBhIGNsZWFuIGFuZCB0YXJnZXRlZCBmdW5jdGlvbmFsIGNoYW5nZS4KClRoZSBmaXJzdCB0aGluZyBJJiMzOTtsbCBjaGVjayBpcyB0aGUgc2NvcGUgb2YgdGhlIGhhbmRsZXIgZnVuY3Rpb24uIEFuZCB5ZXMsIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlcmAgaXMgaW5kZWVkIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBsaW1pdHMgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucy4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGlzIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCB0aGlzPyBTaW5jZSB0aGUgZnVuY3Rpb24gaXMgc3RhdGljLCBJIHdpbGwgaGF2ZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgaXQgaXMgaW52b2tlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBoYW5kbGVyIGlzIHVzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzeXNjdGwgdGFibGUgdGhpcyBoYW5kbGVyIGlzIHBhcnQgb2YuIEkgc3VzcGVjdCBpdCYjMzk7cyByZWdpc3RlcmVkIHRocm91Z2ggYSBwcm9jIGVudHJ5LiBTeXNjdGwgaGFuZGxlcnMgYXJlIGdlbmVyYWxseSBjYWxsZWQgdmlhIGBwcm9jX3N5c19jYWxsX2hhbmRsZXJgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVsYXRpdmVseSBzaW1wbGUgcGF0Y2gsIEkgYW0gbm90IGdvaW5nIHRvIHdvcnJ5IGFib3V0IHRyYWNraW5nIGRvd24gdGhlIGV4YWN0IGZ1bmN0aW9uLCBhbmQgbXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSBieSBncmVwcGluZyBmb3IgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCB0byBmaW5kIHRoZSBleGFjdCBzeXNjdGwgdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTY5MDA9c3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjkxNi0vKlxubW0vcGFnZV9hbGxvYy5jOjY5MTc6ICogbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIgLSBqdXN0IGEgd3JhcHBlciBhcm91bmRcbm1tL3BhZ2VfYWxsb2MuYy02OTE4LSAqXHRwcm9jX2RvaW50dmVjKCkgc28gdGhhdCB3ZSBjYW4gY2FsbCBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY5MjQtICovXG5tbS9wYWdlX2FsbG9jLmM6NjkyNTpzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxubW0vcGFnZV9hbGxvYy5jLTY5MjYtXHRcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz02OTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlW10gPSB7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTcwMzktXHRcdC5tb2RlXHRcdD0gMDY0NCxcbm1tL3BhZ2VfYWxsb2MuYzo3MDQwOlx0XHQucHJvY19oYW5kbGVyXHQ9IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyLFxubW0vcGFnZV9hbGxvYy5jLTcwNDEtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlcmAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXJseSB0aGUgaGFuZGxlciBmb3IgdGhlIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb2Agc3lzY3RsLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCBvZiBjb3Vyc2UuIFRoZSBpbW1lZGlhdGUgcHJvYmxlbSBpcyB0aGF0IGl0JiMzOTtzIGEgKnN0YXRpYyogZnVuY3Rpb24uIFJpZ2h0LCB0aGF0IG1lYW5zIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBpdCBmb3IgYW55dGhpbmcgbWVhbmluZ2Z1bCBpbiBhbiBhbmFseXNpcywgbGlrZSBmaW5kaW5nIGl0cyBjYWxsIHNpdGVzLiBUaGF0IGtpbmQgb2YgbGltaXRzIHdoYXQgSSBjYW4gZG8gd2l0aCBpdCBpbiBpc29sYXRpb24uCgpUaGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgcmVsYXRlZCwgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgKmNhbiogd29yayB3aXRoLiBQZXJoYXBzIHRoaXMgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlYCBpcyBzb21ldGhpbmcgSSBjYW4gZGlnIGludG8gaW5zdGVhZC4gQnV0IHRoZSBjaGFuY2VzIGFyZSBoaWdoIHRoYXQgaXQgaXMgYWxzbyBzdGF0aWMgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZmluZCBpdHMgY2FsbCBzaXRlcyBzb21lIG90aGVyIHdheS4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgaW5kZWVkIHRoZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzQ9R2VuZXJhbFxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTctICBkZWZlbmRpbmcgdGhlc2UgbG93ZXIgem9uZXMuIFRoaXMgYXJyYXkgaXMgcmVjYWxjdWxhdGVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDE4OiAgYGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYGAgYXQgcnVudGltZSBpZiBgYHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTktICBzeXNjdGwgY2hhbmdlcy5cbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmg9MzEwPVRSQUNFX0VWRU5UKG1tX3NldHVwX3Blcl96b25lX3dtYXJrcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmgtMzQyLVxuaW5jbHVkZS90cmFjZS9ldmVudHMva21lbS5oOjM0MzpUUkFDRV9FVkVOVChtbV9zZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaC0zNDQtXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY0Njg9X19tZW1pbml0IHZvaWQgem9uZV9wY3BfaW5pdChzdHJ1Y3Qgem9uZSAqem9uZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjQ4NS1cbm1tL3BhZ2VfYWxsb2MuYzo2NDg2OnN0YXRpYyB2b2lkIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKHZvaWQpO1xubW0vcGFnZV9hbGxvYy5jLTY0ODctXG5tbS9wYWdlX2FsbG9jLmM9NjQ4OD12b2lkIGFkanVzdF9tYW5hZ2VkX3BhZ2VfY291bnQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgY291bnQpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY0OTEtXHR0b3RhbHJhbV9wYWdlc19hZGQoY291bnQpO1xubW0vcGFnZV9hbGxvYy5jOjY0OTI6XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xubW0vcGFnZV9hbGxvYy5jLTY0OTMtfVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz02NTgwPXN0YXRpYyB2b2lkIGNhbGN1bGF0ZV90b3RhbHJlc2VydmVfcGFnZXModm9pZClcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjU5Ny1cdFx0XHQgKiBpbiBqIGZvciBhIGdpdmVuIHpvbmUgKHNlZVxubW0vcGFnZV9hbGxvYy5jOjY1OTg6XHRcdFx0ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSkuIFRoZSBtYXhpbXVtXG5tbS9wYWdlX2FsbG9jLmMtNjU5OS1cdFx0XHQgKiB2YWxpZCByZXNlcnZlIGxpdmVzIGF0IHRoZSBoaWdoZXN0IGluZGV4IHdpdGggYVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02NjI0LS8qXG5tbS9wYWdlX2FsbG9jLmM6NjYyNTogKiBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSAtIGNhbGxlZCB3aGVuZXZlclxubW0vcGFnZV9hbGxvYy5jLTY2MjYtICpcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpbyBjaGFuZ2VzLiAgRW5zdXJlcyB0aGF0IGVhY2ggem9uZVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02NjI5LSAqL1xubW0vcGFnZV9hbGxvYy5jOjY2MzA6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZClcbm1tL3BhZ2VfYWxsb2MuYy02NjMxLXtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjY2NC1cdFx0XHRcdFx0em9uZS1cdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSA9IG1hbmFnZWRfcGFnZXMgLyByYXRpbztcbm1tL3BhZ2VfYWxsb2MuYzo2NjY1Olx0XHRcdFx0dHJhY2VfbW1fc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoem9uZSwgdXBwZXJfem9uZSxcbm1tL3BhZ2VfYWxsb2MuYy02NjY2LVx0XHRcdFx0XHRcdFx0XHQgICAgICAgem9uZS1cdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTY4MDM9aW50IF9fbWVtaW5pdCBpbml0X3Blcl96b25lX3dtYXJrX21pbih2b2lkKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02ODA3LVx0cmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcygpO1xubW0vcGFnZV9hbGxvYy5jOjY4MDg6XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xubW0vcGFnZV9hbGxvYy5jLTY4MDktXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY5MDA9c3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjkxNy0gKiBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlciAtIGp1c3QgYSB3cmFwcGVyIGFyb3VuZFxubW0vcGFnZV9hbGxvYy5jOjY5MTg6ICpcdHByb2NfZG9pbnR2ZWMoKSBzbyB0aGF0IHdlIGNhbiBjYWxsIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClcbm1tL3BhZ2VfYWxsb2MuYy02OTE5LSAqXHR3aGVuZXZlciBzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW8gY2hhbmdlcy5cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NjkyNT1zdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02OTM5LVxubW0vcGFnZV9hbGxvYy5jOjY5NDA6XHRcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XG5tbS9wYWdlX2FsbG9jLmMtNjk0MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb2AgU3lzY3RsIEhhbmRsZXIqKgoKT2theSwgc28gYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlYCBpcyBzdGF0aWMsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBUaGUgc3lzY3RsIGhhbmRsZXIgaXRzZWxmIGlzIHJlZ2lzdGVyZWQgdGhyb3VnaCBgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzeXNjdGwgaGFuZGxlcjsgZml4aW5nIGEgYnVnIHdoZXJlIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzIHdvdWxkIHRyaWdnZXIgdGhhdCBzZXR1cCBmdW5jdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG1lcml0cyBmdXp6aW5nLiBTaW5jZSBpdCYjMzk7cyBhIHN5c2N0bCBoYW5kbGVyLCBTeXprYWxsZXIgc2hvdWxkIGhhdmUgYSBzdHJhaWdodGZvcndhcmQgdGltZSB3aXRoIGAvcHJvYy9zeXMvdm0vbG93bWVtX3Jlc2VydmVfcmF0aW9gLiBXZSBkb24mIzM5O3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzcGVjaWZ5aW5nIGFueSBmb2N1cyBzeW1ib2xzLiBUaGUgaGFuZGxlciBpcyBzdGF0aWMsIHdlIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQsIGFuZCB0aGVyZSBhcmVuJiMzOTt0IGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLiBXYWl0LCBoYW5nIG9uLi4uIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF0IGFsbD8gVGhlbiB3ZSBjYW4ganVzdCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eSwgcmlnaHQ/IE9uZSBxdWljayB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWcgb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzPyBJJiMzOTtsbCBjaGVjayBpZiBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIGlzIHVuZGVyIGFueSBjb25maWcgZmxhZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9hbGxvY19zeXNjdGxfdGFibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTY5NTE9c3RhdGljIGludCBwZXJjcHVfcGFnZWxpc3RfaGlnaF9mcmFjdGlvbl9zeXNjdGxfaGFuZGxlcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjk5MS1cbm1tL3BhZ2VfYWxsb2MuYzo2OTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlW10gPSB7XG5tbS9wYWdlX2FsbG9jLmMtNjk5My1cdHtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzA3MT12b2lkIF9faW5pdCBwYWdlX2FsbG9jX3N5c2N0bF9pbml0KHZvaWQpXG5tbS9wYWdlX2FsbG9jLmMtNzA3Mi17XG5tbS9wYWdlX2FsbG9jLmM6NzA3MzpcdHJlZ2lzdGVyX3N5c2N0bF9pbml0KFwmIzM0O3ZtXCYjMzQ7LCBwYWdlX2FsbG9jX3N5c2N0bF90YWJsZSk7XG5tbS9wYWdlX2FsbG9jLmMtNzA3NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtbS9wYWdlX2FsbG9jLmMgQnVnZml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBpbnRvIHRoaXMgcHJvcG9zZWQgY2hhbmdlLCBhbmQgaXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgbm90aGluZyBjb21wbGV4LCB0aGFua2Z1bGx5LiBUaGUgdnVsbmVyYWJpbGl0eSBpcyByaWdodCB0aGVyZSBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgc28gaXQmIzM5O3MgYSBjb3JlIGNvbXBvbmVudCwgYW5kIHRoZSBmaXggc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEkgZGlkbiYjMzk7dCBzZWUgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byBlbmFibGUgaXQsIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGFwcGxpY2FiaWxpdHkuCgpUaGUgY2hhbmdlIGl0c2VsZiBpcyBzbWFsbCwgaXQmIzM5O3MgZnVuY3Rpb25hbCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGl0IGFkZHJlc3NlcyBhIGNvbmNyZXRlIGlzc3VlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByZXZlbnRpbmcgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgIGZyb20gYmVpbmcgY2FsbGVkIGNvcnJlY3RseSB3aGVuIGludGVyYWN0aW5nIHdpdGggYHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvYCB0aHJvdWdoIHRoZSBzeXNjdGwgaW50ZXJmYWNlLiBJdCBzZWVtcyB0aGF0IHJlYWRzIG9yIGZhaWxlZCB3cml0ZXMgd2VyZSBieXBhc3NpbmcgdGhlIGZ1bmN0aW9uLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgaW52ZXN0aWdhdGUgZnVydGhlciB3aXRoIGZ1enppbmcuIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHksIGJlY2F1c2UgdGhlIGZpeCBpcyBwcmV0dHkgYnJvYWQgYW5kIGFmZmVjdHMgYSB3aG9sZSBzeXN0ZW0gb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgaXMgYWxzbyBlbXB0eSwgYmVjYXVzZSB0aGUgZml4IGlzIG5vdCBndWFyZGVkIGJ5IGNvbmZpZ3MuCgpUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGJlOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjM4LjAzNTQ1NDQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMzk0Mzc1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNDozOC4wMzU0NjEwMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwOTg5Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNzozNDozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCAwYWVjYTEwNmE0ZmRlLi4yMzRmYzAzZDc1NmYzIDEwMDY0NFxcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xcbisrKyBiL21tL3BhZ2VfYWxsb2MuY1xcbkBAIC02OTI1LDE2ICs2OTI1LDIxIEBAIHN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpXFxuIHN0YXRpYyBpbnQgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXFxuIFxcdFxcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxcbiB7XFxuLVxcdGludCBpO1xcbitcXHRpbnQgaSwgcmM7XFxuIFxcbi1cXHRwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcXG4rXFx0cmMgPSBwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcXG4tXFx0XFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcXHUwMDNjIDEpXFxuLVxcdFxcdFxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XFxuK1xcdGlmICh3cml0ZSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcXG4rXFx0XFx0XFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcXHUwMDNjIDEpXFxuK1xcdFxcdFxcdFxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XFxuIFxcdH1cXG4gXFxuLVxcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNDozOC40NjcyMTk0MDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjcwNzY2NDkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVkNjJmZGY2Zjk0ODU4NWQyNTFhNTBkMzQ2MDU5M2I1ODYwZGQ0NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNzozNDozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggMGFlY2ExMDZhNGZkZS4uMjM0ZmMwM2Q3NTZmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtNjkyNSwxNiArNjkyNSwyMSBAQCBzdGF0aWMgaW50IHN5c2N0bF9taW5fc2xhYl9yYXRpb19zeXNjdGxfaGFuZGxlcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaVxuIHN0YXRpYyBpbnQgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXG4gXHRcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxuIHtcbi1cdGludCBpO1xuK1x0aW50IGksIHJjO1xuIFxuLVx0cHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7XG4rXHRyYyA9IHByb2NfZG9pbnR2ZWNfbWlubWF4KHRhYmxlLCB3cml0ZSwgYnVmZmVyLCBsZW5ndGgsIHBwb3MpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfTlJfWk9ORVM7IGkrKykge1xuLVx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuLVx0XHRcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XG4rXHRpZiAod3JpdGUpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcbitcdFx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuK1x0XHRcdFx0c3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldID0gMDtcbitcdFx0fVxuK1xuK1x0XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xuIFx0fVxuIFxuLVx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjM4LjQ2NzIyMDYzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NTcwNDk1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGFnZSBBbGxvY2F0aW9uIFN5c2N0bCBIYW5kbGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbiB3aXRoaW4gYG1tL3BhZ2VfYWxsb2MuY2AuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgZ3VhcmRzIHRoZSBjYWxsIHRvIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYCB3aXRoIGEgd3JpdGUgY2hlY2sgYW5kIGFsc28gY2hlY2tzIHRoZSByZXR1cm4gdmFsdWUgb2YgYHByb2NfZG9pbnR2ZWNfbWlubWF4YC4gSXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBidWcgd2hlcmUgdGhpcyBmdW5jdGlvbiB3YXMgYmVpbmcgY2FsbGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSB3ZXJlIHJlYWRpbmcgdGhlIHN5c2N0bCB2YWx1ZSBvciBpZiB0aGUgc3lzY3RsIG9wZXJhdGlvbiBmYWlsZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZpeCBmb3IgdGhlIHN5c2N0bCBoYW5kbGVyLiBJdOKAmXMgYSBjbGVhbiBhbmQgdGFyZ2V0ZWQgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZSBmaXJzdCB0aGluZyBJJ2xsIGNoZWNrIGlzIHRoZSBzY29wZSBvZiB0aGUgaGFuZGxlciBmdW5jdGlvbi4gQW5kIHllcywgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGxpbWl0cyB0aGUgc2NvcGUgYW5kIHRoZSBvcHRpb25zLiBUaGlzIGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuTm93IHRoZSBxdWVzdGlvbiBpcywgd2hhdCBpcyB0aGUgYmVzdCB3YXkgdG8gYXBwcm9hY2ggdGhpcz8gU2luY2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSB3aWxsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IGl0IGlzIGludm9rZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaGFuZGxlciBpcyB1c2VkLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzeXNjdGwgdGFibGUgdGhpcyBoYW5kbGVyIGlzIHBhcnQgb2YuIEkgc3VzcGVjdCBpdCdzIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByb2MgZW50cnkuIFN5c2N0bCBoYW5kbGVycyBhcmUgZ2VuZXJhbGx5IGNhbGxlZCB2aWEgYHByb2Nfc3lzX2NhbGxfaGFuZGxlcmAgb3Igc2ltaWxhciBtZWNoYW5pc21zLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBwYXRjaCwgSSBhbSBub3QgZ29pbmcgdG8gd29ycnkgYWJvdXQgdHJhY2tpbmcgZG93biB0aGUgZXhhY3QgZnVuY3Rpb24sIGFuZCBteSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjb25maXJtIGJ5IGdyZXBwaW5nIGZvciBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIHRvIGZpbmQgdGhlIGV4YWN0IHN5c2N0bCB0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjQ2LjEyNDI3MzQ2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwMjQ0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz02OTAwPXN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkxNi0vKlxcbm1tL3BhZ2VfYWxsb2MuYzo2OTE3OiAqIGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyIC0ganVzdCBhIHdyYXBwZXIgYXJvdW5kXFxubW0vcGFnZV9hbGxvYy5jLTY5MTgtICpcXHRwcm9jX2RvaW50dmVjKCkgc28gdGhhdCB3ZSBjYW4gY2FsbCBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkyNC0gKi9cXG5tbS9wYWdlX2FsbG9jLmM6NjkyNTpzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxcbm1tL3BhZ2VfYWxsb2MuYy02OTI2LVxcdFxcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTY5OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVbXSA9IHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03MDM5LVxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbm1tL3BhZ2VfYWxsb2MuYzo3MDQwOlxcdFxcdC5wcm9jX2hhbmRsZXJcXHQ9IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy03MDQxLVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjQ4LjM0NDUyNDYzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzI1MjcwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IHRoZSBoYW5kbGVyIGZvciB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvYCBzeXNjdGwsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgbWVtb3J5IG1hbmFnZW1lbnQsIG9mIGNvdXJzZS4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgaXQncyBhICpzdGF0aWMqIGZ1bmN0aW9uLiBSaWdodCwgdGhhdCBtZWFucyBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCBpdCBmb3IgYW55dGhpbmcgbWVhbmluZ2Z1bCBpbiBhbiBhbmFseXNpcywgbGlrZSBmaW5kaW5nIGl0cyBjYWxsIHNpdGVzLiBUaGF0IGtpbmQgb2YgbGltaXRzIHdoYXQgSSBjYW4gZG8gd2l0aCBpdCBpbiBpc29sYXRpb24uXG5cblRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIHJlbGF0ZWQsIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJICpjYW4qIHdvcmsgd2l0aC4gUGVyaGFwcyB0aGlzIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZWAgaXMgc29tZXRoaW5nIEkgY2FuIGRpZyBpbnRvIGluc3RlYWQuIEJ1dCB0aGUgY2hhbmNlcyBhcmUgaGlnaCB0aGF0IGl0IGlzIGFsc28gc3RhdGljIGFuZCBJJ2xsIG5lZWQgdG8gZmluZCBpdHMgY2FsbCBzaXRlcyBzb21lIG90aGVyIHdheS4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgaW5kZWVkIHRoZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDc6MzQ6NTEuOTE3MDU0MDQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDgwNjQ4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3ND1HZW5lcmFsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDE3LSAgZGVmZW5kaW5nIHRoZXNlIGxvd2VyIHpvbmVzLiBUaGlzIGFycmF5IGlzIHJlY2FsY3VsYXRlZCBieVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0MTg6ICBgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgYCBhdCBydW50aW1lIGlmIGBgdm0ubG93bWVtX3Jlc2VydmVfcmF0aW9gYFxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTktICBzeXNjdGwgY2hhbmdlcy5cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaD0zMTA9VFJBQ0VfRVZFTlQobW1fc2V0dXBfcGVyX3pvbmVfd21hcmtzLFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMva21lbS5oLTM0Mi1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmg6MzQzOlRSQUNFX0VWRU5UKG1tX3NldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaC0zNDQtXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjQ2OD1fX21lbWluaXQgdm9pZCB6b25lX3BjcF9pbml0KHN0cnVjdCB6b25lICp6b25lKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY0ODUtXFxubW0vcGFnZV9hbGxvYy5jOjY0ODY6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZCk7XFxubW0vcGFnZV9hbGxvYy5jLTY0ODctXFxubW0vcGFnZV9hbGxvYy5jPTY0ODg9dm9pZCBhZGp1c3RfbWFuYWdlZF9wYWdlX2NvdW50KHN0cnVjdCBwYWdlICpwYWdlLCBsb25nIGNvdW50KVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY0OTEtXFx0dG90YWxyYW1fcGFnZXNfYWRkKGNvdW50KTtcXG5tbS9wYWdlX2FsbG9jLmM6NjQ5MjpcXHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xcbm1tL3BhZ2VfYWxsb2MuYy02NDkzLX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02NTgwPXN0YXRpYyB2b2lkIGNhbGN1bGF0ZV90b3RhbHJlc2VydmVfcGFnZXModm9pZClcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy02NTk3LVxcdFxcdFxcdCAqIGluIGogZm9yIGEgZ2l2ZW4gem9uZSAoc2VlXFxubW0vcGFnZV9hbGxvYy5jOjY1OTg6XFx0XFx0XFx0ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSkuIFRoZSBtYXhpbXVtXFxubW0vcGFnZV9hbGxvYy5jLTY1OTktXFx0XFx0XFx0ICogdmFsaWQgcmVzZXJ2ZSBsaXZlcyBhdCB0aGUgaGlnaGVzdCBpbmRleCB3aXRoIGFcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy02NjI0LS8qXFxubW0vcGFnZV9hbGxvYy5jOjY2MjU6ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUgLSBjYWxsZWQgd2hlbmV2ZXJcXG5tbS9wYWdlX2FsbG9jLmMtNjYyNi0gKlxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpbyBjaGFuZ2VzLiAgRW5zdXJlcyB0aGF0IGVhY2ggem9uZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY2MjktICovXFxubW0vcGFnZV9hbGxvYy5jOjY2MzA6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNjYzMS17XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjY2NC1cXHRcXHRcXHRcXHRcXHR6b25lLVxcdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSA9IG1hbmFnZWRfcGFnZXMgLyByYXRpbztcXG5tbS9wYWdlX2FsbG9jLmM6NjY2NTpcXHRcXHRcXHRcXHR0cmFjZV9tbV9zZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSh6b25lLCB1cHBlcl96b25lLFxcbm1tL3BhZ2VfYWxsb2MuYy02NjY2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB6b25lLVxcdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjgwMz1pbnQgX19tZW1pbml0IGluaXRfcGVyX3pvbmVfd21hcmtfbWluKHZvaWQpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjgwNy1cXHRyZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKCk7XFxubW0vcGFnZV9hbGxvYy5jOjY4MDg6XFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcXG5tbS9wYWdlX2FsbG9jLmMtNjgwOS1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02OTAwPXN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkxNy0gKiBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlciAtIGp1c3QgYSB3cmFwcGVyIGFyb3VuZFxcbm1tL3BhZ2VfYWxsb2MuYzo2OTE4OiAqXFx0cHJvY19kb2ludHZlYygpIHNvIHRoYXQgd2UgY2FuIGNhbGwgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKVxcbm1tL3BhZ2VfYWxsb2MuYy02OTE5LSAqXFx0d2hlbmV2ZXIgc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvIGNoYW5nZXMuXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjkyNT1zdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY5MzktXFxubW0vcGFnZV9hbGxvYy5jOjY5NDA6XFx0XFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcXG5tbS9wYWdlX2FsbG9jLmMtNjk0MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjUzLjc2NTEyNzM0NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjM0OTA1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvYCBTeXNjdGwgSGFuZGxlcioqXG5cbk9rYXksIHNvIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZWAgaXMgc3RhdGljLCB0aGF0J3MgaW1wb3J0YW50LiBUaGUgc3lzY3RsIGhhbmRsZXIgaXRzZWxmIGlzIHJlZ2lzdGVyZWQgdGhyb3VnaCBgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzeXNjdGwgaGFuZGxlcjsgZml4aW5nIGEgYnVnIHdoZXJlIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzIHdvdWxkIHRyaWdnZXIgdGhhdCBzZXR1cCBmdW5jdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG1lcml0cyBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgc3lzY3RsIGhhbmRsZXIsIFN5emthbGxlciBzaG91bGQgaGF2ZSBhIHN0cmFpZ2h0Zm9yd2FyZCB0aW1lIHdpdGggYC9wcm9jL3N5cy92bS9sb3dtZW1fcmVzZXJ2ZV9yYXRpb2AuIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc3BlY2lmeWluZyBhbnkgZm9jdXMgc3ltYm9scy4gVGhlIGhhbmRsZXIgaXMgc3RhdGljLCB3ZSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQsIGFuZCB0aGVyZSBhcmVuJ3QgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQuIFdhaXQsIGhhbmcgb24uLi4gbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXQgYWxsPyBUaGVuIHdlIGNhbiBqdXN0IGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LCByaWdodD8gT25lIHF1aWNrIHRoaW5nLCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoaXM/IEknbGwgY2hlY2sgaWYgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBpcyB1bmRlciBhbnkgY29uZmlnIGZsYWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQ3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjU4LjQyODYyMDU5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgzNzc4MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz02OTUxPXN0YXRpYyBpbnQgcGVyY3B1X3BhZ2VsaXN0X2hpZ2hfZnJhY3Rpb25fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjk5MS1cXG5tbS9wYWdlX2FsbG9jLmM6Njk5MjpzdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSBwYWdlX2FsbG9jX3N5c2N0bF90YWJsZVtdID0ge1xcbm1tL3BhZ2VfYWxsb2MuYy02OTkzLVxcdHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03MDcxPXZvaWQgX19pbml0IHBhZ2VfYWxsb2Nfc3lzY3RsX2luaXQodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNzA3Mi17XFxubW0vcGFnZV9hbGxvYy5jOjcwNzM6XFx0cmVnaXN0ZXJfc3lzY3RsX2luaXQoXFxcInZtXFxcIiwgcGFnZV9hbGxvY19zeXNjdGxfdGFibGUpO1xcbm1tL3BhZ2VfYWxsb2MuYy03MDc0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDc6MzU6MDAuNDEyNDAzNjY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MjQ1NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtbS9wYWdlX2FsbG9jLmMgQnVnZml4KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIHByb3Bvc2VkIGNoYW5nZSwgYW5kIGl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgbm90aGluZyBjb21wbGV4LCB0aGFua2Z1bGx5LiBUaGUgdnVsbmVyYWJpbGl0eSBpcyByaWdodCB0aGVyZSBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgc28gaXQncyBhIGNvcmUgY29tcG9uZW50LCBhbmQgdGhlIGZpeCBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGluIHRoZSBidWlsZC4gSSBkaWRuJ3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBuZWVkZWQgdG8gZW5hYmxlIGl0LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBpcyBzbWFsbCwgaXQncyBmdW5jdGlvbmFsLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgaXQgYWRkcmVzc2VzIGEgY29uY3JldGUgaXNzdWUuIEl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYCBmcm9tIGJlaW5nIGNhbGxlZCBjb3JyZWN0bHkgd2hlbiBpbnRlcmFjdGluZyB3aXRoIGB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpb2AgdGhyb3VnaCB0aGUgc3lzY3RsIGludGVyZmFjZS4gSXQgc2VlbXMgdGhhdCByZWFkcyBvciBmYWlsZWQgd3JpdGVzIHdlcmUgYnlwYXNzaW5nIHRoZSBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBmdXJ0aGVyIHdpdGggZnV6emluZy4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSwgYmVjYXVzZSB0aGUgZml4IGlzIHByZXR0eSBicm9hZCBhbmQgYWZmZWN0cyBhIHdob2xlIHN5c3RlbSBvZiBpbnRlcmFjdGlvbiwgYW5kIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhbHNvIGVtcHR5LCBiZWNhdXNlIHRoZSBmaXggaXMgbm90IGd1YXJkZWQgYnkgY29uZmlncy5cblxuVGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZTogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NTYxOCwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNTowNS4xNzQ4NjA5NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 07:29:19 +0000 UTC FinishedAt: 2026-07-29 07:35:06 +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": "2a4faffc103297c4822bb269d521249b75cc2261", "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": "2a4faffc103297c4822bb269d521249b75cc2261", "config_name": "upstream-apparmor-kasan.config", "series_id": "4f8f658e-cefa-4066-80cf-a8bfb9a6961c" }, "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+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDI5IDA3OjM0OjM3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggMGFlY2ExMDZhNGZkZS4uMjM0ZmMwM2Q3NTZmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtNjkyNSwxNiAmIzQzOzY5MjUsMjEgQEAgc3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGlcbiBzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuIFx0XHRpbnQgd3JpdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5ndGgsIGxvZmZfdCAqcHBvcylcbiB7XG4tXHRpbnQgaTtcbiYjNDM7XHRpbnQgaSwgcmM7XG4gXG4tXHRwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcbiYjNDM7XHRyYyA9IHByb2NfZG9pbnR2ZWNfbWlubWF4KHRhYmxlLCB3cml0ZSwgYnVmZmVyLCBsZW5ndGgsIHBwb3MpO1xuJiM0MztcdGlmIChyYylcbiYjNDM7XHRcdHJldHVybiByYztcbiBcbi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1BWF9OUl9aT05FUzsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcdTAwM2MgMSlcbi1cdFx0XHRzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gPSAwO1xuJiM0MztcdGlmICh3cml0ZSkge1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05SX1pPTkVTOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuJiM0MztcdFx0XHRcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcbiBcdH1cbiBcbi1cdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDI5IDA3OjM0OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9hbGxvYy5jIGIvbW0vcGFnZV9hbGxvYy5jCmluZGV4IDBhZWNhMTA2YTRmZGUuLjIzNGZjMDNkNzU2ZjMgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTY5MjUsMTYgJiM0Mzs2OTI1LDIxIEBAIHN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpCiBzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLAogCQlpbnQgd3JpdGUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5ndGgsIGxvZmZfdCAqcHBvcykKIHsKLQlpbnQgaTsKJiM0MzsJaW50IGksIHJjOwogCi0JcHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7CiYjNDM7CXJjID0gcHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7CiYjNDM7CWlmIChyYykKJiM0MzsJCXJldHVybiByYzsKIAotCWZvciAoaSA9IDA7IGkgJmx0OyBNQVhfTlJfWk9ORVM7IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gJmx0OyAxKQotCQkJc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldID0gMDsKJiM0MzsJaWYgKHdyaXRlKSB7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgTUFYX05SX1pPTkVTOyBpJiM0MzsmIzQzOykgewomIzQzOwkJCWlmIChzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gJmx0OyAxKQomIzQzOwkJCQlzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW9baV0gPSAwOwomIzQzOwkJfQomIzQzOwomIzQzOwkJc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTsKIAl9CiAKLQlzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzYKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGFnZSBBbGxvY2F0aW9uIFN5c2N0bCBIYW5kbGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIGZ1bmN0aW9uIHdpdGhpbiBgbW0vcGFnZV9hbGxvYy5jYC4gVGhlIGNoYW5nZSBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpdCBndWFyZHMgdGhlIGNhbGwgdG8gYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgIHdpdGggYSB3cml0ZSBjaGVjayBhbmQgYWxzbyBjaGVja3MgdGhlIHJldHVybiB2YWx1ZSBvZiBgcHJvY19kb2ludHZlY19taW5tYXhgLiBJdCBhcHBlYXJzIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIGJ1ZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIHdhcyBiZWluZyBjYWxsZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlIHdlcmUgcmVhZGluZyB0aGUgc3lzY3RsIHZhbHVlIG9yIGlmIHRoZSBzeXNjdGwgb3BlcmF0aW9uIGZhaWxlZC4gVGhpcyBpcyBhIGNydWNpYWwgZml4IGZvciB0aGUgc3lzY3RsIGhhbmRsZXIuIEl04oCZcyBhIGNsZWFuIGFuZCB0YXJnZXRlZCBmdW5jdGlvbmFsIGNoYW5nZS4KClRoZSBmaXJzdCB0aGluZyBJJiMzOTtsbCBjaGVjayBpcyB0aGUgc2NvcGUgb2YgdGhlIGhhbmRsZXIgZnVuY3Rpb24uIEFuZCB5ZXMsIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlcmAgaXMgaW5kZWVkIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhpcyBsaW1pdHMgdGhlIHNjb3BlIGFuZCB0aGUgb3B0aW9ucy4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIGFzc2Vzc21lbnQuCgpOb3cgdGhlIHF1ZXN0aW9uIGlzLCB3aGF0IGlzIHRoZSBiZXN0IHdheSB0byBhcHByb2FjaCB0aGlzPyBTaW5jZSB0aGUgZnVuY3Rpb24gaXMgc3RhdGljLCBJIHdpbGwgaGF2ZSB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgaXQgaXMgaW52b2tlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhpcyBoYW5kbGVyIGlzIHVzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzeXNjdGwgdGFibGUgdGhpcyBoYW5kbGVyIGlzIHBhcnQgb2YuIEkgc3VzcGVjdCBpdCYjMzk7cyByZWdpc3RlcmVkIHRocm91Z2ggYSBwcm9jIGVudHJ5LiBTeXNjdGwgaGFuZGxlcnMgYXJlIGdlbmVyYWxseSBjYWxsZWQgdmlhIGBwcm9jX3N5c19jYWxsX2hhbmRsZXJgIG9yIHNpbWlsYXIgbWVjaGFuaXNtcy4gR2l2ZW4gdGhhdCB0aGlzIGlzIGEgcmVsYXRpdmVseSBzaW1wbGUgcGF0Y2gsIEkgYW0gbm90IGdvaW5nIHRvIHdvcnJ5IGFib3V0IHRyYWNraW5nIGRvd24gdGhlIGV4YWN0IGZ1bmN0aW9uLCBhbmQgbXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gY29uZmlybSBieSBncmVwcGluZyBmb3IgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCB0byBmaW5kIHRoZSBleGFjdCBzeXNjdGwgdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTY5MDA9c3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjkxNi0vKlxubW0vcGFnZV9hbGxvYy5jOjY5MTc6ICogbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIgLSBqdXN0IGEgd3JhcHBlciBhcm91bmRcbm1tL3BhZ2VfYWxsb2MuYy02OTE4LSAqXHRwcm9jX2RvaW50dmVjKCkgc28gdGhhdCB3ZSBjYW4gY2FsbCBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY5MjQtICovXG5tbS9wYWdlX2FsbG9jLmM6NjkyNTpzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxubW0vcGFnZV9hbGxvYy5jLTY5MjYtXHRcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz02OTkyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlW10gPSB7XG4tLVxubW0vcGFnZV9hbGxvYy5jLTcwMzktXHRcdC5tb2RlXHRcdD0gMDY0NCxcbm1tL3BhZ2VfYWxsb2MuYzo3MDQwOlx0XHQucHJvY19oYW5kbGVyXHQ9IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyLFxubW0vcGFnZV9hbGxvYy5jLTcwNDEtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlcmAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXJseSB0aGUgaGFuZGxlciBmb3IgdGhlIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb2Agc3lzY3RsLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCBvZiBjb3Vyc2UuIFRoZSBpbW1lZGlhdGUgcHJvYmxlbSBpcyB0aGF0IGl0JiMzOTtzIGEgKnN0YXRpYyogZnVuY3Rpb24uIFJpZ2h0LCB0aGF0IG1lYW5zIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBpdCBmb3IgYW55dGhpbmcgbWVhbmluZ2Z1bCBpbiBhbiBhbmFseXNpcywgbGlrZSBmaW5kaW5nIGl0cyBjYWxsIHNpdGVzLiBUaGF0IGtpbmQgb2YgbGltaXRzIHdoYXQgSSBjYW4gZG8gd2l0aCBpdCBpbiBpc29sYXRpb24uCgpUaGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGEgcmVsYXRlZCwgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IEkgKmNhbiogd29yayB3aXRoLiBQZXJoYXBzIHRoaXMgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlYCBpcyBzb21ldGhpbmcgSSBjYW4gZGlnIGludG8gaW5zdGVhZC4gQnV0IHRoZSBjaGFuY2VzIGFyZSBoaWdoIHRoYXQgaXQgaXMgYWxzbyBzdGF0aWMgYW5kIEkmIzM5O2xsIG5lZWQgdG8gZmluZCBpdHMgY2FsbCBzaXRlcyBzb21lIG90aGVyIHdheS4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgaW5kZWVkIHRoZSBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA3OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzQ9R2VuZXJhbFxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTctICBkZWZlbmRpbmcgdGhlc2UgbG93ZXIgem9uZXMuIFRoaXMgYXJyYXkgaXMgcmVjYWxjdWxhdGVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDE4OiAgYGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYGAgYXQgcnVudGltZSBpZiBgYHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTktICBzeXNjdGwgY2hhbmdlcy5cbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmg9MzEwPVRSQUNFX0VWRU5UKG1tX3NldHVwX3Blcl96b25lX3dtYXJrcyxcbi0tXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmgtMzQyLVxuaW5jbHVkZS90cmFjZS9ldmVudHMva21lbS5oOjM0MzpUUkFDRV9FVkVOVChtbV9zZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaC0zNDQtXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY0Njg9X19tZW1pbml0IHZvaWQgem9uZV9wY3BfaW5pdChzdHJ1Y3Qgem9uZSAqem9uZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjQ4NS1cbm1tL3BhZ2VfYWxsb2MuYzo2NDg2OnN0YXRpYyB2b2lkIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKHZvaWQpO1xubW0vcGFnZV9hbGxvYy5jLTY0ODctXG5tbS9wYWdlX2FsbG9jLmM9NjQ4OD12b2lkIGFkanVzdF9tYW5hZ2VkX3BhZ2VfY291bnQoc3RydWN0IHBhZ2UgKnBhZ2UsIGxvbmcgY291bnQpXG4tLVxubW0vcGFnZV9hbGxvYy5jLTY0OTEtXHR0b3RhbHJhbV9wYWdlc19hZGQoY291bnQpO1xubW0vcGFnZV9hbGxvYy5jOjY0OTI6XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xubW0vcGFnZV9hbGxvYy5jLTY0OTMtfVxuLS1cbm1tL3BhZ2VfYWxsb2MuYz02NTgwPXN0YXRpYyB2b2lkIGNhbGN1bGF0ZV90b3RhbHJlc2VydmVfcGFnZXModm9pZClcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjU5Ny1cdFx0XHQgKiBpbiBqIGZvciBhIGdpdmVuIHpvbmUgKHNlZVxubW0vcGFnZV9hbGxvYy5jOjY1OTg6XHRcdFx0ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSkuIFRoZSBtYXhpbXVtXG5tbS9wYWdlX2FsbG9jLmMtNjU5OS1cdFx0XHQgKiB2YWxpZCByZXNlcnZlIGxpdmVzIGF0IHRoZSBoaWdoZXN0IGluZGV4IHdpdGggYVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02NjI0LS8qXG5tbS9wYWdlX2FsbG9jLmM6NjYyNTogKiBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSAtIGNhbGxlZCB3aGVuZXZlclxubW0vcGFnZV9hbGxvYy5jLTY2MjYtICpcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpbyBjaGFuZ2VzLiAgRW5zdXJlcyB0aGF0IGVhY2ggem9uZVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02NjI5LSAqL1xubW0vcGFnZV9hbGxvYy5jOjY2MzA6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZClcbm1tL3BhZ2VfYWxsb2MuYy02NjMxLXtcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjY2NC1cdFx0XHRcdFx0em9uZS1cdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSA9IG1hbmFnZWRfcGFnZXMgLyByYXRpbztcbm1tL3BhZ2VfYWxsb2MuYzo2NjY1Olx0XHRcdFx0dHJhY2VfbW1fc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoem9uZSwgdXBwZXJfem9uZSxcbm1tL3BhZ2VfYWxsb2MuYy02NjY2LVx0XHRcdFx0XHRcdFx0XHQgICAgICAgem9uZS1cdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTY4MDM9aW50IF9fbWVtaW5pdCBpbml0X3Blcl96b25lX3dtYXJrX21pbih2b2lkKVxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02ODA3LVx0cmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcygpO1xubW0vcGFnZV9hbGxvYy5jOjY4MDg6XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xubW0vcGFnZV9hbGxvYy5jLTY4MDktXG4tLVxubW0vcGFnZV9hbGxvYy5jPTY5MDA9c3RhdGljIGludCBzeXNjdGxfbWluX3NsYWJfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsIGludCB3cml0ZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjkxNy0gKiBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlciAtIGp1c3QgYSB3cmFwcGVyIGFyb3VuZFxubW0vcGFnZV9hbGxvYy5jOjY5MTg6ICpcdHByb2NfZG9pbnR2ZWMoKSBzbyB0aGF0IHdlIGNhbiBjYWxsIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClcbm1tL3BhZ2VfYWxsb2MuYy02OTE5LSAqXHR3aGVuZXZlciBzeXNjdGxfbG93bWVtX3Jlc2VydmVfcmF0aW8gY2hhbmdlcy5cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NjkyNT1zdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxuLS1cbm1tL3BhZ2VfYWxsb2MuYy02OTM5LVxubW0vcGFnZV9hbGxvYy5jOjY5NDA6XHRcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XG5tbS9wYWdlX2FsbG9jLmMtNjk0MS1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNzozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ3CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBsb3dtZW1fcmVzZXJ2ZV9yYXRpb2AgU3lzY3RsIEhhbmRsZXIqKgoKT2theSwgc28gYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlYCBpcyBzdGF0aWMsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBUaGUgc3lzY3RsIGhhbmRsZXIgaXRzZWxmIGlzIHJlZ2lzdGVyZWQgdGhyb3VnaCBgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzeXNjdGwgaGFuZGxlcjsgZml4aW5nIGEgYnVnIHdoZXJlIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzIHdvdWxkIHRyaWdnZXIgdGhhdCBzZXR1cCBmdW5jdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG1lcml0cyBmdXp6aW5nLiBTaW5jZSBpdCYjMzk7cyBhIHN5c2N0bCBoYW5kbGVyLCBTeXprYWxsZXIgc2hvdWxkIGhhdmUgYSBzdHJhaWdodGZvcndhcmQgdGltZSB3aXRoIGAvcHJvYy9zeXMvdm0vbG93bWVtX3Jlc2VydmVfcmF0aW9gLiBXZSBkb24mIzM5O3QgaGF2ZSB0byB3b3JyeSBhYm91dCBzcGVjaWZ5aW5nIGFueSBmb2N1cyBzeW1ib2xzLiBUaGUgaGFuZGxlciBpcyBzdGF0aWMsIHdlIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQsIGFuZCB0aGVyZSBhcmVuJiMzOTt0IGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLiBXYWl0LCBoYW5nIG9uLi4uIG5vIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGF0IGFsbD8gVGhlbiB3ZSBjYW4ganVzdCBsZWF2ZSBgRm9jdXNTeW1ib2xzYCBlbXB0eSwgcmlnaHQ/IE9uZSBxdWljayB0aGluZywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWcgb3B0aW9ucyB0aGF0IGdvdmVybiB0aGlzPyBJJiMzOTtsbCBjaGVjayBpZiBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIGlzIHVuZGVyIGFueSBjb25maWcgZmxhZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGFnZV9hbGxvY19zeXNjdGxfdGFibGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vcGFnZV9hbGxvYy5jPTY5NTE9c3RhdGljIGludCBwZXJjcHVfcGFnZWxpc3RfaGlnaF9mcmFjdGlvbl9zeXNjdGxfaGFuZGxlcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSxcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNjk5MS1cbm1tL3BhZ2VfYWxsb2MuYzo2OTkyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlIHBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlW10gPSB7XG5tbS9wYWdlX2FsbG9jLmMtNjk5My1cdHtcbi0tXG5tbS9wYWdlX2FsbG9jLmM9NzA3MT12b2lkIF9faW5pdCBwYWdlX2FsbG9jX3N5c2N0bF9pbml0KHZvaWQpXG5tbS9wYWdlX2FsbG9jLmMtNzA3Mi17XG5tbS9wYWdlX2FsbG9jLmM6NzA3MzpcdHJlZ2lzdGVyX3N5c2N0bF9pbml0KFwmIzM0O3ZtXCYjMzQ7LCBwYWdlX2FsbG9jX3N5c2N0bF90YWJsZSk7XG5tbS9wYWdlX2FsbG9jLmMtNzA3NC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDc6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDExMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtbS9wYWdlX2FsbG9jLmMgQnVnZml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBpbnRvIHRoaXMgcHJvcG9zZWQgY2hhbmdlLCBhbmQgaXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgbm90aGluZyBjb21wbGV4LCB0aGFua2Z1bGx5LiBUaGUgdnVsbmVyYWJpbGl0eSBpcyByaWdodCB0aGVyZSBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgc28gaXQmIzM5O3MgYSBjb3JlIGNvbXBvbmVudCwgYW5kIHRoZSBmaXggc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQuIEkgZGlkbiYjMzk7dCBzZWUgYW55IHNwZWNpYWwgY29uZmlndXJhdGlvbnMgb3IgZGVwZW5kZW5jaWVzIG5lZWRlZCB0byBlbmFibGUgaXQsIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBmdXp6aW5nIGFwcGxpY2FiaWxpdHkuCgpUaGUgY2hhbmdlIGl0c2VsZiBpcyBzbWFsbCwgaXQmIzM5O3MgZnVuY3Rpb25hbCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIGl0IGFkZHJlc3NlcyBhIGNvbmNyZXRlIGlzc3VlLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHByZXZlbnRpbmcgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgIGZyb20gYmVpbmcgY2FsbGVkIGNvcnJlY3RseSB3aGVuIGludGVyYWN0aW5nIHdpdGggYHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvYCB0aHJvdWdoIHRoZSBzeXNjdGwgaW50ZXJmYWNlLiBJdCBzZWVtcyB0aGF0IHJlYWRzIG9yIGZhaWxlZCB3cml0ZXMgd2VyZSBieXBhc3NpbmcgdGhlIGZ1bmN0aW9uLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgaW52ZXN0aWdhdGUgZnVydGhlciB3aXRoIGZ1enppbmcuIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgZW1wdHksIGJlY2F1c2UgdGhlIGZpeCBpcyBwcmV0dHkgYnJvYWQgYW5kIGFmZmVjdHMgYSB3aG9sZSBzeXN0ZW0gb2YgaW50ZXJhY3Rpb24sIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgaXMgYWxzbyBlbXB0eSwgYmVjYXVzZSB0aGUgZml4IGlzIG5vdCBndWFyZGVkIGJ5IGNvbmZpZ3MuCgpUaGUgYFJlYXNvbmluZ2Agc2hvdWxkIGJlOiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNzozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjM4LjAzNTQ1NDQ5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcxMzk0Mzc1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBzeXNjdGwgaGFuZGxlciBmb3Igdm0ubG93bWVtX3Jlc2VydmVfcmF0aW8sIHByZXZlbnRpbmcgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSBmcm9tIGJlaW5nIGNhbGxlZCBvbiByZWFkIG9wZXJhdGlvbnMgb3IgZmFpbGVkIHdyaXRlcy4gSXQgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNDozOC4wMzU0NjEwMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMwOTg5Mzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWQ2MmZkZjZmOTQ4NTg1ZDI1MWE1MGQzNDYwNTkzYjU4NjBkZDQ0ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNzozNDozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9wYWdlX2FsbG9jLmMgYi9tbS9wYWdlX2FsbG9jLmNcXG5pbmRleCAwYWVjYTEwNmE0ZmRlLi4yMzRmYzAzZDc1NmYzIDEwMDY0NFxcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xcbisrKyBiL21tL3BhZ2VfYWxsb2MuY1xcbkBAIC02OTI1LDE2ICs2OTI1LDIxIEBAIHN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpXFxuIHN0YXRpYyBpbnQgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXFxuIFxcdFxcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxcbiB7XFxuLVxcdGludCBpO1xcbitcXHRpbnQgaSwgcmM7XFxuIFxcbi1cXHRwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcXG4rXFx0cmMgPSBwcm9jX2RvaW50dmVjX21pbm1heCh0YWJsZSwgd3JpdGUsIGJ1ZmZlciwgbGVuZ3RoLCBwcG9zKTtcXG4rXFx0aWYgKHJjKVxcbitcXHRcXHRyZXR1cm4gcmM7XFxuIFxcbi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcXG4tXFx0XFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcXHUwMDNjIDEpXFxuLVxcdFxcdFxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XFxuK1xcdGlmICh3cml0ZSkge1xcbitcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcXG4rXFx0XFx0XFx0aWYgKHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSBcXHUwMDNjIDEpXFxuK1xcdFxcdFxcdFxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XFxuIFxcdH1cXG4gXFxuLVxcdHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNDozOC40NjcyMTk0MDRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNjcwNzY2NDkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVkNjJmZGY2Zjk0ODU4NWQyNTFhNTBkMzQ2MDU5M2I1ODYwZGQ0NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNzozNDozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuY1xuaW5kZXggMGFlY2ExMDZhNGZkZS4uMjM0ZmMwM2Q3NTZmMyAxMDA2NDRcbi0tLSBhL21tL3BhZ2VfYWxsb2MuY1xuKysrIGIvbW0vcGFnZV9hbGxvYy5jXG5AQCAtNjkyNSwxNiArNjkyNSwyMSBAQCBzdGF0aWMgaW50IHN5c2N0bF9taW5fc2xhYl9yYXRpb19zeXNjdGxfaGFuZGxlcihjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICp0YWJsZSwgaVxuIHN0YXRpYyBpbnQgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXG4gXHRcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxuIHtcbi1cdGludCBpO1xuK1x0aW50IGksIHJjO1xuIFxuLVx0cHJvY19kb2ludHZlY19taW5tYXgodGFibGUsIHdyaXRlLCBidWZmZXIsIGxlbmd0aCwgcHBvcyk7XG4rXHRyYyA9IHByb2NfZG9pbnR2ZWNfbWlubWF4KHRhYmxlLCB3cml0ZSwgYnVmZmVyLCBsZW5ndGgsIHBwb3MpO1xuK1x0aWYgKHJjKVxuK1x0XHRyZXR1cm4gcmM7XG4gXG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBNQVhfTlJfWk9ORVM7IGkrKykge1xuLVx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuLVx0XHRcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpb1tpXSA9IDA7XG4rXHRpZiAod3JpdGUpIHtcbitcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTUFYX05SX1pPTkVTOyBpKyspIHtcbitcdFx0XHRpZiAoc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldIFx1MDAzYyAxKVxuK1x0XHRcdFx0c3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvW2ldID0gMDtcbitcdFx0fVxuK1xuK1x0XHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xuIFx0fVxuIFxuLVx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjM4LjQ2NzIyMDYzNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NTcwNDk1NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUGFnZSBBbGxvY2F0aW9uIFN5c2N0bCBIYW5kbGVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbiB3aXRoaW4gYG1tL3BhZ2VfYWxsb2MuY2AuIFRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogaXQgZ3VhcmRzIHRoZSBjYWxsIHRvIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYCB3aXRoIGEgd3JpdGUgY2hlY2sgYW5kIGFsc28gY2hlY2tzIHRoZSByZXR1cm4gdmFsdWUgb2YgYHByb2NfZG9pbnR2ZWNfbWlubWF4YC4gSXQgYXBwZWFycyB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBidWcgd2hlcmUgdGhpcyBmdW5jdGlvbiB3YXMgYmVpbmcgY2FsbGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB3ZSB3ZXJlIHJlYWRpbmcgdGhlIHN5c2N0bCB2YWx1ZSBvciBpZiB0aGUgc3lzY3RsIG9wZXJhdGlvbiBmYWlsZWQuIFRoaXMgaXMgYSBjcnVjaWFsIGZpeCBmb3IgdGhlIHN5c2N0bCBoYW5kbGVyLiBJdOKAmXMgYSBjbGVhbiBhbmQgdGFyZ2V0ZWQgZnVuY3Rpb25hbCBjaGFuZ2UuXG5cblRoZSBmaXJzdCB0aGluZyBJJ2xsIGNoZWNrIGlzIHRoZSBzY29wZSBvZiB0aGUgaGFuZGxlciBmdW5jdGlvbi4gQW5kIHllcywgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGlzIGxpbWl0cyB0aGUgc2NvcGUgYW5kIHRoZSBvcHRpb25zLiBUaGlzIGNvbmZpcm1zIG15IGluaXRpYWwgYXNzZXNzbWVudC5cblxuTm93IHRoZSBxdWVzdGlvbiBpcywgd2hhdCBpcyB0aGUgYmVzdCB3YXkgdG8gYXBwcm9hY2ggdGhpcz8gU2luY2UgdGhlIGZ1bmN0aW9uIGlzIHN0YXRpYywgSSB3aWxsIGhhdmUgdG8gbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IGl0IGlzIGludm9rZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgaGFuZGxlciBpcyB1c2VkLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBzeXNjdGwgdGFibGUgdGhpcyBoYW5kbGVyIGlzIHBhcnQgb2YuIEkgc3VzcGVjdCBpdCdzIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByb2MgZW50cnkuIFN5c2N0bCBoYW5kbGVycyBhcmUgZ2VuZXJhbGx5IGNhbGxlZCB2aWEgYHByb2Nfc3lzX2NhbGxfaGFuZGxlcmAgb3Igc2ltaWxhciBtZWNoYW5pc21zLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSByZWxhdGl2ZWx5IHNpbXBsZSBwYXRjaCwgSSBhbSBub3QgZ29pbmcgdG8gd29ycnkgYWJvdXQgdHJhY2tpbmcgZG93biB0aGUgZXhhY3QgZnVuY3Rpb24sIGFuZCBteSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBjb25maXJtIGJ5IGdyZXBwaW5nIGZvciBgbG93bWVtX3Jlc2VydmVfcmF0aW9fc3lzY3RsX2hhbmRsZXJgIHRvIGZpbmQgdGhlIGV4YWN0IHN5c2N0bCB0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI3NiwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjQ2LjEyNDI3MzQ2NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjIwMjQ0OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz02OTAwPXN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkxNi0vKlxcbm1tL3BhZ2VfYWxsb2MuYzo2OTE3OiAqIGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyIC0ganVzdCBhIHdyYXBwZXIgYXJvdW5kXFxubW0vcGFnZV9hbGxvYy5jLTY5MTgtICpcXHRwcm9jX2RvaW50dmVjKCkgc28gdGhhdCB3ZSBjYW4gY2FsbCBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkyNC0gKi9cXG5tbS9wYWdlX2FsbG9jLmM6NjkyNTpzdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxcbm1tL3BhZ2VfYWxsb2MuYy02OTI2LVxcdFxcdGludCB3cml0ZSwgdm9pZCAqYnVmZmVyLCBzaXplX3QgKmxlbmd0aCwgbG9mZl90ICpwcG9zKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTY5OTI9c3RhdGljIGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVbXSA9IHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03MDM5LVxcdFxcdC5tb2RlXFx0XFx0PSAwNjQ0LFxcbm1tL3BhZ2VfYWxsb2MuYzo3MDQwOlxcdFxcdC5wcm9jX2hhbmRsZXJcXHQ9IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyLFxcbm1tL3BhZ2VfYWxsb2MuYy03MDQxLVxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjQ4LjM0NDUyNDYzNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NzI1MjcwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBmdW5jdGlvbi4gSXQncyBjbGVhcmx5IHRoZSBoYW5kbGVyIGZvciB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvYCBzeXNjdGwsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgbWVtb3J5IG1hbmFnZW1lbnQsIG9mIGNvdXJzZS4gVGhlIGltbWVkaWF0ZSBwcm9ibGVtIGlzIHRoYXQgaXQncyBhICpzdGF0aWMqIGZ1bmN0aW9uLiBSaWdodCwgdGhhdCBtZWFucyBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCBpdCBmb3IgYW55dGhpbmcgbWVhbmluZ2Z1bCBpbiBhbiBhbmFseXNpcywgbGlrZSBmaW5kaW5nIGl0cyBjYWxsIHNpdGVzLiBUaGF0IGtpbmQgb2YgbGltaXRzIHdoYXQgSSBjYW4gZG8gd2l0aCBpdCBpbiBpc29sYXRpb24uXG5cblRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgdGhlcmUncyBhIHJlbGF0ZWQsIG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBJICpjYW4qIHdvcmsgd2l0aC4gUGVyaGFwcyB0aGlzIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZWAgaXMgc29tZXRoaW5nIEkgY2FuIGRpZyBpbnRvIGluc3RlYWQuIEJ1dCB0aGUgY2hhbmNlcyBhcmUgaGlnaCB0aGF0IGl0IGlzIGFsc28gc3RhdGljIGFuZCBJJ2xsIG5lZWQgdG8gZmluZCBpdHMgY2FsbCBzaXRlcyBzb21lIG90aGVyIHdheS4gTGV0IG1lIGNoZWNrIGlmIHRoYXQgaXMgaW5kZWVkIHRoZSBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDc6MzQ6NTEuOTE3MDU0MDQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDgwNjQ4NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3ND1HZW5lcmFsXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDE3LSAgZGVmZW5kaW5nIHRoZXNlIGxvd2VyIHpvbmVzLiBUaGlzIGFycmF5IGlzIHJlY2FsY3VsYXRlZCBieVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0MTg6ICBgYHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKClgYCBhdCBydW50aW1lIGlmIGBgdm0ubG93bWVtX3Jlc2VydmVfcmF0aW9gYFxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00MTktICBzeXNjdGwgY2hhbmdlcy5cXG4tLVxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaD0zMTA9VFJBQ0VfRVZFTlQobW1fc2V0dXBfcGVyX3pvbmVfd21hcmtzLFxcbi0tXFxuaW5jbHVkZS90cmFjZS9ldmVudHMva21lbS5oLTM0Mi1cXG5pbmNsdWRlL3RyYWNlL2V2ZW50cy9rbWVtLmg6MzQzOlRSQUNFX0VWRU5UKG1tX3NldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlLFxcbmluY2x1ZGUvdHJhY2UvZXZlbnRzL2ttZW0uaC0zNDQtXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjQ2OD1fX21lbWluaXQgdm9pZCB6b25lX3BjcF9pbml0KHN0cnVjdCB6b25lICp6b25lKVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY0ODUtXFxubW0vcGFnZV9hbGxvYy5jOjY0ODY6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZCk7XFxubW0vcGFnZV9hbGxvYy5jLTY0ODctXFxubW0vcGFnZV9hbGxvYy5jPTY0ODg9dm9pZCBhZGp1c3RfbWFuYWdlZF9wYWdlX2NvdW50KHN0cnVjdCBwYWdlICpwYWdlLCBsb25nIGNvdW50KVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY0OTEtXFx0dG90YWxyYW1fcGFnZXNfYWRkKGNvdW50KTtcXG5tbS9wYWdlX2FsbG9jLmM6NjQ5MjpcXHRzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpO1xcbm1tL3BhZ2VfYWxsb2MuYy02NDkzLX1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02NTgwPXN0YXRpYyB2b2lkIGNhbGN1bGF0ZV90b3RhbHJlc2VydmVfcGFnZXModm9pZClcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy02NTk3LVxcdFxcdFxcdCAqIGluIGogZm9yIGEgZ2l2ZW4gem9uZSAoc2VlXFxubW0vcGFnZV9hbGxvYy5jOjY1OTg6XFx0XFx0XFx0ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKSkuIFRoZSBtYXhpbXVtXFxubW0vcGFnZV9hbGxvYy5jLTY1OTktXFx0XFx0XFx0ICogdmFsaWQgcmVzZXJ2ZSBsaXZlcyBhdCB0aGUgaGlnaGVzdCBpbmRleCB3aXRoIGFcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy02NjI0LS8qXFxubW0vcGFnZV9hbGxvYy5jOjY2MjU6ICogc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUgLSBjYWxsZWQgd2hlbmV2ZXJcXG5tbS9wYWdlX2FsbG9jLmMtNjYyNi0gKlxcdHN5c2N0bF9sb3dtZW1fcmVzZXJ2ZV9yYXRpbyBjaGFuZ2VzLiAgRW5zdXJlcyB0aGF0IGVhY2ggem9uZVxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY2MjktICovXFxubW0vcGFnZV9hbGxvYy5jOjY2MzA6c3RhdGljIHZvaWQgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNjYzMS17XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjY2NC1cXHRcXHRcXHRcXHRcXHR6b25lLVxcdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSA9IG1hbmFnZWRfcGFnZXMgLyByYXRpbztcXG5tbS9wYWdlX2FsbG9jLmM6NjY2NTpcXHRcXHRcXHRcXHR0cmFjZV9tbV9zZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSh6b25lLCB1cHBlcl96b25lLFxcbm1tL3BhZ2VfYWxsb2MuYy02NjY2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICB6b25lLVxcdTAwM2Vsb3dtZW1fcmVzZXJ2ZVtqXSk7XFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjgwMz1pbnQgX19tZW1pbml0IGluaXRfcGVyX3pvbmVfd21hcmtfbWluKHZvaWQpXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjgwNy1cXHRyZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKCk7XFxubW0vcGFnZV9hbGxvYy5jOjY4MDg6XFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcXG5tbS9wYWdlX2FsbG9jLmMtNjgwOS1cXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz02OTAwPXN0YXRpYyBpbnQgc3lzY3RsX21pbl9zbGFiX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjkxNy0gKiBsb3dtZW1fcmVzZXJ2ZV9yYXRpb19zeXNjdGxfaGFuZGxlciAtIGp1c3QgYSB3cmFwcGVyIGFyb3VuZFxcbm1tL3BhZ2VfYWxsb2MuYzo2OTE4OiAqXFx0cHJvY19kb2ludHZlYygpIHNvIHRoYXQgd2UgY2FuIGNhbGwgc2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKVxcbm1tL3BhZ2VfYWxsb2MuYy02OTE5LSAqXFx0d2hlbmV2ZXIgc3lzY3RsX2xvd21lbV9yZXNlcnZlX3JhdGlvIGNoYW5nZXMuXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NjkyNT1zdGF0aWMgaW50IGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyKGNvbnN0IHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLFxcbi0tXFxubW0vcGFnZV9hbGxvYy5jLTY5MzktXFxubW0vcGFnZV9hbGxvYy5jOjY5NDA6XFx0XFx0c2V0dXBfcGVyX3pvbmVfbG93bWVtX3Jlc2VydmUoKTtcXG5tbS9wYWdlX2FsbG9jLmMtNjk0MS1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjUzLjc2NTEyNzM0NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NjM0OTA1MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYGxvd21lbV9yZXNlcnZlX3JhdGlvYCBTeXNjdGwgSGFuZGxlcioqXG5cbk9rYXksIHNvIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZWAgaXMgc3RhdGljLCB0aGF0J3MgaW1wb3J0YW50LiBUaGUgc3lzY3RsIGhhbmRsZXIgaXRzZWxmIGlzIHJlZ2lzdGVyZWQgdGhyb3VnaCBgcGFnZV9hbGxvY19zeXNjdGxfdGFibGVgLCBhbmQgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBzeXNjdGwgaGFuZGxlcjsgZml4aW5nIGEgYnVnIHdoZXJlIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzIHdvdWxkIHRyaWdnZXIgdGhhdCBzZXR1cCBmdW5jdGlvbi4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0IG1lcml0cyBmdXp6aW5nLiBTaW5jZSBpdCdzIGEgc3lzY3RsIGhhbmRsZXIsIFN5emthbGxlciBzaG91bGQgaGF2ZSBhIHN0cmFpZ2h0Zm9yd2FyZCB0aW1lIHdpdGggYC9wcm9jL3N5cy92bS9sb3dtZW1fcmVzZXJ2ZV9yYXRpb2AuIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc3BlY2lmeWluZyBhbnkgZm9jdXMgc3ltYm9scy4gVGhlIGhhbmRsZXIgaXMgc3RhdGljLCB3ZSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQsIGFuZCB0aGVyZSBhcmVuJ3QgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQuIFdhaXQsIGhhbmcgb24uLi4gbm8gbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXQgYWxsPyBUaGVuIHdlIGNhbiBqdXN0IGxlYXZlIGBGb2N1c1N5bWJvbHNgIGVtcHR5LCByaWdodD8gT25lIHF1aWNrIHRoaW5nLCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZyBvcHRpb25zIHRoYXQgZ292ZXJuIHRoaXM/IEknbGwgY2hlY2sgaWYgYGxvd21lbV9yZXNlcnZlX3JhdGlvX3N5c2N0bF9oYW5kbGVyYCBpcyB1bmRlciBhbnkgY29uZmlnIGZsYWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTQ3LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA3OjM0OjU4LjQyODYyMDU5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTgzNzc4MjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBhZ2VfYWxsb2Nfc3lzY3RsX3RhYmxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3BhZ2VfYWxsb2MuYz02OTUxPXN0YXRpYyBpbnQgcGVyY3B1X3BhZ2VsaXN0X2hpZ2hfZnJhY3Rpb25fc3lzY3RsX2hhbmRsZXIoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqdGFibGUsXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmMtNjk5MS1cXG5tbS9wYWdlX2FsbG9jLmM6Njk5MjpzdGF0aWMgY29uc3Qgc3RydWN0IGN0bF90YWJsZSBwYWdlX2FsbG9jX3N5c2N0bF90YWJsZVtdID0ge1xcbm1tL3BhZ2VfYWxsb2MuYy02OTkzLVxcdHtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz03MDcxPXZvaWQgX19pbml0IHBhZ2VfYWxsb2Nfc3lzY3RsX2luaXQodm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNzA3Mi17XFxubW0vcGFnZV9hbGxvYy5jOjcwNzM6XFx0cmVnaXN0ZXJfc3lzY3RsX2luaXQoXFxcInZtXFxcIiwgcGFnZV9hbGxvY19zeXNjdGxfdGFibGUpO1xcbm1tL3BhZ2VfYWxsb2MuYy03MDc0LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDc6MzU6MDAuNDEyNDAzNjY5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc2MjQ1NDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIENhbmRpZGF0ZSBBc3Nlc3NtZW50OiBtbS9wYWdlX2FsbG9jLmMgQnVnZml4KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgaW50byB0aGlzIHByb3Bvc2VkIGNoYW5nZSwgYW5kIGl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeCDigJMgbm90aGluZyBjb21wbGV4LCB0aGFua2Z1bGx5LiBUaGUgdnVsbmVyYWJpbGl0eSBpcyByaWdodCB0aGVyZSBpbiBgbW0vcGFnZV9hbGxvYy5jYCwgc28gaXQncyBhIGNvcmUgY29tcG9uZW50LCBhbmQgdGhlIGZpeCBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGluIHRoZSBidWlsZC4gSSBkaWRuJ3Qgc2VlIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBuZWVkZWQgdG8gZW5hYmxlIGl0LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LlxuXG5UaGUgY2hhbmdlIGl0c2VsZiBpcyBzbWFsbCwgaXQncyBmdW5jdGlvbmFsLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgaXQgYWRkcmVzc2VzIGEgY29uY3JldGUgaXNzdWUuIEl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpYCBmcm9tIGJlaW5nIGNhbGxlZCBjb3JyZWN0bHkgd2hlbiBpbnRlcmFjdGluZyB3aXRoIGB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpb2AgdGhyb3VnaCB0aGUgc3lzY3RsIGludGVyZmFjZS4gSXQgc2VlbXMgdGhhdCByZWFkcyBvciBmYWlsZWQgd3JpdGVzIHdlcmUgYnlwYXNzaW5nIHRoZSBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCBJJ20gY29uZmlkZW50IGluIHJldHVybmluZyBgV29ydGhGdXp6aW5nPXRydWVgLiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBpbnZlc3RpZ2F0ZSBmdXJ0aGVyIHdpdGggZnV6emluZy4gYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBlbXB0eSwgYmVjYXVzZSB0aGUgZml4IGlzIHByZXR0eSBicm9hZCBhbmQgYWZmZWN0cyBhIHdob2xlIHN5c3RlbSBvZiBpbnRlcmFjdGlvbiwgYW5kIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBpcyBhbHNvIGVtcHR5LCBiZWNhdXNlIHRoZSBmaXggaXMgbm90IGd1YXJkZWQgYnkgY29uZmlncy5cblxuVGhlIGBSZWFzb25pbmdgIHNob3VsZCBiZTogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCJcblxuXG4iLCJJbnB1dFRva2VucyI6NTYxOCwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNzozNTowNS4xNzQ4NjA5NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgc3lzY3RsIGhhbmRsZXIgZm9yIHZtLmxvd21lbV9yZXNlcnZlX3JhdGlvLCBwcmV2ZW50aW5nIHNldHVwX3Blcl96b25lX2xvd21lbV9yZXNlcnZlKCkgZnJvbSBiZWluZyBjYWxsZWQgb24gcmVhZCBvcGVyYXRpb25zIG9yIGZhaWxlZCB3cml0ZXMuIEl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBtZW1vcnkgbWFuYWdlbWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIHN5c2N0bCBoYW5kbGVyIGZvciB2bS5sb3dtZW1fcmVzZXJ2ZV9yYXRpbywgcHJldmVudGluZyBzZXR1cF9wZXJfem9uZV9sb3dtZW1fcmVzZXJ2ZSgpIGZyb20gYmVpbmcgY2FsbGVkIG9uIHJlYWQgb3BlcmF0aW9ucyBvciBmYWlsZWQgd3JpdGVzLiBJdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[1] Phase: Succeeded StartedAt: 2026-07-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 07:35:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 07:35:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2] Phase: Succeeded StartedAt: 2026-07-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 07:35:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:16 +0000 UTC FinishedAt: 2026-07-29 07:35:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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-workflowhd6pd/series-workflowhd6pd-convert-artifact-514820009/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:26 +0000 UTC FinishedAt: 2026-07-29 07:59:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:26 +0000 UTC FinishedAt: 2026-07-29 07:59:35 +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:*00f93ff1-a768-41b4-8ebc-f8d9077dd088,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-workflowhd6pd/series-workflowhd6pd-convert-artifact-514820009/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": "94ae8fd6-057b-4ba0-a6b5-6265fde0b733", "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-workflowhd6pd/series-workflowhd6pd-build-action-396750855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:35:26 +0000 UTC FinishedAt: 2026-07-29 07:59:30 +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:*00f93ff1-a768-41b4-8ebc-f8d9077dd088,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-workflowhd6pd/series-workflowhd6pd-convert-artifact-514820009/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": "94ae8fd6-057b-4ba0-a6b5-6265fde0b733", "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-workflowhd6pd/series-workflowhd6pd-build-action-396750855/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:35 +0000 UTC FinishedAt: 2026-07-29 07:59:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:35 +0000 UTC FinishedAt: 2026-07-29 07:59:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:35 +0000 UTC FinishedAt: 2026-07-29 07:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:35 +0000 UTC FinishedAt: 2026-07-29 07:59:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-workflowhd6pd/series-workflowhd6pd-convert-artifact-3579753020/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:45 +0000 UTC FinishedAt: 2026-07-29 08:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 07:59:45 +0000 UTC FinishedAt: 2026-07-29 08:01:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94ae8fd6-057b-4ba0-a6b5-6265fde0b733,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-workflowhd6pd/series-workflowhd6pd-build-action-396750855/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-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:01:52 +0000 UTC FinishedAt: 2026-07-29 08:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:01:52 +0000 UTC FinishedAt: 2026-07-29 08:01:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:01:52 +0000 UTC FinishedAt: 2026-07-29 08:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:01:52 +0000 UTC FinishedAt: 2026-07-29 08:32:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00f93ff1-a768-41b4-8ebc-f8d9077dd088,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-workflowhd6pd/series-workflowhd6pd-convert-artifact-3579753020/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": "996ad541-3b3e-4d52-b42b-d6cee378f082", "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-workflowhd6pd/series-workflowhd6pd-build-action-2974830821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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: Failed StartedAt: 2026-07-29 08:01:52 +0000 UTC FinishedAt: 2026-07-29 08:06:31 +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:*00f93ff1-a768-41b4-8ebc-f8d9077dd088,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-workflowhd6pd/series-workflowhd6pd-convert-artifact-3579753020/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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(1) Phase: Succeeded StartedAt: 2026-07-29 08:11:35 +0000 UTC FinishedAt: 2026-07-29 08:32:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*00f93ff1-a768-41b4-8ebc-f8d9077dd088,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-workflowhd6pd/series-workflowhd6pd-convert-artifact-3579753020/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": "996ad541-3b3e-4d52-b42b-d6cee378f082", "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-workflowhd6pd/series-workflowhd6pd-build-action-2974830821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:32:51 +0000 UTC FinishedAt: 2026-07-29 08:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:32:51 +0000 UTC FinishedAt: 2026-07-29 08:32:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:32:51 +0000 UTC FinishedAt: 2026-07-29 08:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:32:51 +0000 UTC FinishedAt: 2026-07-29 08:34:47 +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:*996ad541-3b3e-4d52-b42b-d6cee378f082,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-workflowhd6pd/series-workflowhd6pd-build-action-2974830821/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-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +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:*94ae8fd6-057b-4ba0-a6b5-6265fde0b733,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*996ad541-3b3e-4d52-b42b-d6cee378f082,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-workflowhd6pd/series-workflowhd6pd-build-action-396750855/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-workflowhd6pd/series-workflowhd6pd-build-action-2974830821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 08:35:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 08:35:01 +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-workflowhd6pd/series-workflowhd6pd-convert-artifact-1691373573/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 08:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 08:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:34:57 +0000 UTC FinishedAt: 2026-07-29 08:34:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:35:07 +0000 UTC FinishedAt: 2026-07-29 11:39:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhd6pd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2a4faffc103297c4822bb269d521249b75cc2261","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":"2a4faffc103297c4822bb269d521249b75cc2261","config_name":"upstream-apparmor-kasan.config","series_id":"4f8f658e-cefa-4066-80cf-a8bfb9a6961c","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-29 08:35:07 +0000 UTC FinishedAt: 2026-07-29 11:38:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*94ae8fd6-057b-4ba0-a6b5-6265fde0b733,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*996ad541-3b3e-4d52-b42b-d6cee378f082,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-workflowhd6pd/series-workflowhd6pd-build-action-396750855/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-workflowhd6pd/series-workflowhd6pd-build-action-2974830821/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-workflowhd6pd/series-workflowhd6pd-convert-artifact-1691373573/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,}