Name: series-workflowcf8f4 Phase: Succeeded StartedAt: 2026-07-30 19:25:20 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[0] Phase: Succeeded StartedAt: 2026-07-30 19:25:20 +0000 UTC FinishedAt: 2026-07-30 19:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 19:25:20 +0000 UTC FinishedAt: 2026-07-30 19:40:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_add", "br_mrp_parse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDE5OjM5OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAxNzlkMjQ3MGI3MjQ4Li5lZjE2ZDA3MDM5MjQxIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tcnAuY1xuQEAgLTIyNCwxMSAmIzQzOzIyNCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3ViX29wdCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl9vcHQpKTtcbiBcdFx0bWVtc2V0KHN1Yl9vcHQsIDB4MCwgc2l6ZW9mKCpzdWJfb3B0KSk7XG4gXG4tXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4tXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuLVxuIFx0XHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXG4tXHRcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuJiM0MztcdFx0c3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgJiM0MzsgTVJQX09QVF9QQURESU5HKTtcbiYjNDM7XHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDMwIDE5OjM5OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmMKaW5kZXggMTc5ZDI0NzBiNzI0OC4uZWYxNmQwNzAzOTI0MSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMjQsMTEgJiM0MzsyMjQsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsCiAJCXN1Yl9vcHQgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfb3B0KSk7CiAJCW1lbXNldChzdWJfb3B0LCAweDAsIHNpemVvZigqc3ViX29wdCkpOwogCi0JCXN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7Ci0JCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKLQogCQkvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovCi0JCXNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpOwomIzQzOwkJc3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgJiM0MzsgTVJQX09QVF9QQURESU5HKTsKJiM0MzsJCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKIAl9CiAKIAlicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJyaWRnZSBNUlAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB0d2Vha2luZyB0aGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnVuY3Rpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGV5JiMzOTtyZSBhbGxvY2F0aW5nIGBzdWJfdGx2YCB3aXRoaW4gdGhlIGBza2JgLiBJbnN0ZWFkIG9mIHNlcGFyYXRlIGBza2JfcHV0YCBjYWxscyBmb3IgdGhlIGBzdWJfdGx2YCBzdHJ1Y3R1cmUgaXRzZWxmIGFuZCB0aGVuIHBvdGVudGlhbGx5IGFkZGluZyBwYWRkaW5nIHZpYSBgTVJQX09QVF9QQURESU5HYCwgdGhleSYjMzk7dmUgY29uc29saWRhdGVkIGV2ZXJ5dGhpbmcgaW50byBhIHNpbmdsZSBgc2tiX3B1dF96ZXJvYCBjYWxsLgoKVGhpcyBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGFpbWluZyBmb3IgYSBjbGVhbmVyIGFsbG9jYXRpb24gYW5kLCBjcnVjaWFsbHksIHplcm9pbmcgb3V0IHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBUaGF0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGFkZHJlc3MgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBsdXJraW5nIGluIHRoZSBvbGQgYXBwcm9hY2gsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuIFplcm9pbmcgdGhlIHBhZGRpbmcgaXMgYWxzbyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTXkgbmV4dCBzdGVwLCBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgc3BlY2lmaWNzLCBpcyB0byBleGFtaW5lIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIG1vcmUgY2xvc2VseSBhbmQsIGltcG9ydGFudGx5LCB0cmFjZSBhbGwgaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIHdpbGwgYmUgY3JpdGljYWwgdG8gZnVsbHkgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgbWFraW5nIHN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfYWxsb2NfdGVzdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjY6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBDYWxsKioKCk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGdldHRpbmcgY2FsbGVkICpzcGVjaWZpY2FsbHkqIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhpcyBjYWxsLiBUaGUga2V5IGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdC4gV2hlcmUgaXMgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgKml0c2VsZiogYmVpbmcgaW52b2tlZD8gSXMgaXQgY2FsbGVkIGRpcmVjdGx5LCBvciBzY2hlZHVsZWQ/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgaWRlbnRpZnlpbmcgYWxsIHRoZSBjYWxsZXJzIG9mIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIG9yIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBzY2hlZHVsZWQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBhbmQgcG90ZW50aWFsIGlzc3VlcyBzdXJyb3VuZGluZyB0aGUgYWxsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfdGVzdF93b3JrX2V4cGlyZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjM3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc3OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTU9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0MC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQxOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiBXb3JrIHdpdGggYGJyX21ycF9hZGRgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyBmcmVzaCwgYW5kIGBicl9tcnBfYWRkYCBpcyB0aGUga2V5LiBSaWdodCwgdGhpcyBmdW5jdGlvbiBhcHBlYXJzIHRvIGJlIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnQsIHRoZSBpbml0aWFsaXphdGlvbiwgdGhlIHNldC11cC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBhbHdheXMgb24gdGhlIGRlcGVuZGVuY2llcywgc28gbGV0JiMzOTtzIHF1aWNrbHkgc2VlIHdobyYjMzk7cyBjYWxsaW5nIHRoaXMgYmVhc3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNhbGxlcnMgb2YgYGJyX21ycF9hZGRgIHNob3VsZCBnaXZlIG1lIHRoZSBpbml0aWFsIGNvbnRleHQsIHRoZSBvcmlnaW5hdGluZyBjb21wb25lbnRzLiBJcyBpdCB0cmlnZ2VyZWQgYnkgdXNlciBhY3Rpb25zLCBhIHNjaGVkdWxlciwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciBkZWJ1Z2dpbmcgbGF0ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyNj1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTQtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NTppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1SUCBJbnN0YW5jZSBQYXJzaW5nIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhpcyBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBHb29kLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIHJlYWNoYWJsZSBhbmQgYXBwZWFycyB0byBiZSBmdW5jdGlvbmluZywgd2hpY2ggaXMgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MgdGhlcmUuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBXaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpcyB0aGluZz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB3aGF0IHBhcmFtZXRlcnMgY2FuIGJlIHR3ZWFrZWQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYnJfbXJwLm8qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYGJyX21ycC5vYCBpcyBiZWluZyBidWlsdC4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgbG9va2luZywgb2J2aW91c2x5LCBpcyB0aGUgYG5ldC9icmlkZ2UvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnJpZGdlLXJlbGF0ZWQgb2JqZWN0IGZpbGVzIGFuZCBtb2R1bGVzIGFyZSBsaWtlbHkgYmVpbmcgY29tcGlsZWQuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBNYWtlZmlsZSBwcm92aWRlcyB0aGUgZGV0YWlscyBJIG5lZWQgb24gdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBicl9tcnAub2AuIEl0JiMzOTtzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCBmb3IgZmlndXJpbmcgb3V0IHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGZsYWdzLiBUaW1lIHRvIGdldCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX05FVEZJTFRFUikgJiM0Mzs9IG5ldGZpbHRlci9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjgtXG5uZXQvYnJpZGdlL01ha2VmaWxlOjI5OmJyaWRnZS0kKENPTkZJR19CUklER0VfTVJQKVx0JiM0Mzs9IGJyX21ycF9zd2l0Y2hkZXYubyBicl9tcnAubyBicl9tcnBfbmV0bGluay5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTMwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpdGVtIGlzIGBDT05GSUdfQlJJREdFX01SUGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGtpbmQgb2YgYnJpZGdpbmcgZnVuY3Rpb25hbGl0eSwgcHJvYmFibHkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBuZXQvYnJpZGdlL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdHlwaWNhbGx5IGRlZmluZWQsIGFuZCB3aGVyZSB0aGUgaGVscCB0ZXh0LCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggYEJSSURHRV9NUlBgIHdpbGwgcmVzaWRlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoaXMgb3B0aW9uICpkb2VzKiBhbmQgd2hhdCBpdCYjMzk7cyBkZXBlbmRlbnQgb24uIExvb2tpbmcgYXQgdGhlIEtjb25maWcgd2lsbCBsZXQgbWUgZmluZCB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZyBpdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUklER0VfTVJQYDoKCioqQW5hbHl6aW5nIEJSSURHRV9NUlAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYEJSSURHRV9NUlBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXRoaW5nIHRoaXMgdGhpbmcgbGVhbnMgb24g4oCTIGFsbCB0aGUgb3RoZXIgY29tcG9uZW50cywgc2VydmljZXMsIGRhdGEgc291cmNlcywgeW91IG5hbWUgaXQg4oCTIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGJsYXN0IHJhZGl1cyBvZiBhbnkgY2hhbmdlcywgcGlucG9pbnRpbmcgdGhlIHJvb3QgY2F1c2Ugb2YgaXNzdWVzLCBhbmQgZW5zdXJpbmcgZXZlcnl0aGluZyBzdGF5cyBjb2hlc2l2ZS4KCkkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZGVuY2llcy4gRGlyZWN0IG9uZXMgYXJlIHRoZSBvYnZpb3VzIHRoaW5ncyBgQlJJREdFX01SUGAgY2FsbHMgZGlyZWN0bHkgb3IgaXMgZGlyZWN0bHkgbGlua2VkIHRvLiBUaGUgaW5kaXJlY3Qgb25lcyBhcmUgYSBiaXQgdHJpY2tpZXI7IHRoZXNlIGFyZSBjb21wb25lbnRzIHRoYXQgYEJSSURHRV9NUlBgIHJlbGllcyBvbiwgYnV0IG9ubHkgdGhyb3VnaCBvdGhlciBzeXN0ZW1zIG9yIHNlcnZpY2VzLiBNaXNzIG9uZSBvZiB0aG9zZSwgYW5kIHlvdSYjMzk7cmUgaW4gZm9yIGEgd29ybGQgb2YgaHVydCBkb3duIHRoZSBsaW5lLgoKSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgZ3JhcGgsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCBkaWFncmFtLiBJIGNhbiB1c2UgdGhhdCB0byB2aXN1YWxpemUgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY2hva2Vwb2ludHMgb3Igc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgY29kZSBhbmQgY29uZmlndXJhdGlvbnMgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgdW5jb3ZlciBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcywgbGlrZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIG9yIHNwZWNpZmljIGRhdGEgZm9ybWF0cy4KClRoZW4sIHRoZXJlJiMzOTtzIHRoZSBxdWVzdGlvbiBvZiB2ZXJzaW9uaW5nLiBXaGF0IHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzIGFyZSB3ZSBleHBlY3Rpbmc/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXM/IERvIHdlIGhhdmUgYSBjbGVhciB1cGdyYWRlIHBhdGg/IEkmIzM5O2xsIG5lZWQgdG8gZmFjdG9yIGFsbCBvZiB0aGF0IGluLgoKRXNzZW50aWFsbHksIEkgd2FudCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiBgQlJJREdFX01SUGAmIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIHdpbGwgYWxsb3cgbWUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgbW9kaWZ5aW5nLCBtYWludGFpbmluZywgYW5kIGludGVncmF0aW5nIGl0IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjQ6XHRjb25maWcgQlJJREdFX01SUFxuICA2NTpcdFx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiAgNjY6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDY3Olx0XHRkZWZhdWx0IG5cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxuICA3MDpcdFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiAgNzE6XHRcbiAgNzI6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDczOlx0XG4gIDc0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEJSSURHRV9DRk1cbiAgNzc6XHRcdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEJSSURHRVxuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXG4gIDgxOlx0XHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxuICA4MjpcdFxuICA4MzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc4NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1SUCBCcmlkZ2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNUlAgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEJSSURHRV9NUlBgIGlzIGNvbnRpbmdlbnQgb24gaGF2aW5nIGBCUklER0VgIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBhcmUsIHRoZXJlZm9yZSwgYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLiBUaGUgb25lcyB0aGF0IGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcmUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCBgYnJfbXJwX2FkZGAsIGFuZCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYC4gQSBxdWljayBnbGFuY2UgcmV2ZWFscyB0aGF0IGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBhcmUgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIHdvcnRoIHJlbWVtYmVyaW5nLiBIb3dldmVyLCBgYnJfbXJwX2FkZGAgaXMgKm5vdCogc3RhdGljLCBzbyB0aGF0IGlzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHRob3VnaCBzdGlsbCB3aXRoaW4gdGhlIHJlYWxtIG9mIHVuZGVyc3RhbmRpbmcuCgpCdXQgd2FpdCBhIG1vbWVudC4uLkkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIHNlZW1zIGxpa2UgdGhlIG9uZSB0aGF0JiMzOTtzIHNjaGVkdWxpbmcgdGhlIHdvcmssIG5vdyAqdGhhdCogaXMgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lIGEgYml0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02Njk9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5OS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAwOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMTpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDIte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV0gPSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXHRpbnQgZXJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlx0XHRcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXHUwMDI2dGVzdCk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1Olx0XHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXHRcdFx0XHRcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIE1SUCBUZXN0IEluaXRpYXRpb24qKgoKQWxyaWdodCwgc28gYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5IGZ1bmN0aW9uLCB0aGUgcGxhY2Ugd2hlcmUgZXZlcnl0aGluZyBraWNrcyBvZmYgaW4gdGhpcyBNUlAgdGVzdGluZyBzY2VuYXJpby4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgdGVzdCBnZXRzIGl0cyBjb25maWd1cmF0aW9uIGRpYWxlZCBpbiBhbmQsIGNydWNpYWxseSwgdGhlIHdvcmsgaXRzZWxmIGlzIHNjaGVkdWxlZC4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIHNldHVwIHBoYXNlLiBHaXZlbiB0aGF0IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoYXQgZnVuY3Rpb24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYG5ldC9icmlkZ2UvYnJfbXJwLmNgIGFuZCBkaWcgaW50byBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgc2V0LCB3aGF0IHRhc2tzIGFyZSBiZWluZyBxdWV1ZWQsIGFuZCB3aGF0IGNvbnRyb2wgc3RydWN0dXJlcyBhcmUgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IGEgcmVhbCBoYW5kbGUgb24gdGhlIHRlc3Rpbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzAwOlx0aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiA3MDE6XHRcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxuIDcwMjpcdHtcbiA3MDM6XHRcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVx1MDAzZXJpbmdfaWQpO1xuIDcwNDpcdFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xuIDcwNTpcdFxuIDcwNjpcdFx0aWYgKCFtcnApXG4gNzA3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDcwODpcdFxuIDcwOTpcdFx0LyogVHJ5IHRvIHB1c2ggaXQgdG8gdGhlIEhXIGFuZCBpZiBpdCBmYWlscyB0aGVuIGNvbnRpbnVlIHdpdGggU1dcbiA3MTA6XHRcdCAqIGltcGxlbWVudGF0aW9uIGFuZCBpZiB0aGF0IGFsc28gZmFpbHMgdGhlbiByZXR1cm4gZXJyb3IuXG4gNzExOlx0XHQgKi9cbiA3MTI6XHRcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIHRlc3QtXHUwMDNlaW50ZXJ2YWwsXG4gNzEzOlx0XHRcdFx0XHRcdFx0ICB0ZXN0LVx1MDAzZW1heF9taXNzLCB0ZXN0LVx1MDAzZXBlcmlvZCxcbiA3MTQ6XHRcdFx0XHRcdFx0XHQgIHRlc3QtXHUwMDNlbW9uaXRvcik7XG4gNzE1Olx0XHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfTk9ORSlcbiA3MTY6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDcxNzpcdFxuIDcxODpcdFx0aWYgKHN1cHBvcnQgPT0gQlJfTVJQX0hXKVxuIDcxOTpcdFx0XHRyZXR1cm4gMDtcbiA3MjA6XHRcbiA3MjE6XHRcdG1ycC1cdTAwM2V0ZXN0X2ludGVydmFsID0gdGVzdC1cdTAwM2VpbnRlcnZhbDtcbiA3MjI6XHRcdG1ycC1cdTAwM2V0ZXN0X2VuZCA9IGppZmZpZXMgJiM0MzsgdXNlY3NfdG9famlmZmllcyh0ZXN0LVx1MDAzZXBlcmlvZCk7XG4gNzIzOlx0XHRtcnAtXHUwMDNldGVzdF9tYXhfbWlzcyA9IHRlc3QtXHUwMDNlbWF4X21pc3M7XG4gNzI0Olx0XHRtcnAtXHUwMDNldGVzdF9tb25pdG9yID0gdGVzdC1cdTAwM2Vtb25pdG9yO1xuIDcyNTpcdFx0bXJwLVx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XG4gNzI2Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbiA3Mjc6XHRcdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbiA3Mjg6XHRcbiA3Mjk6XHRcdHJldHVybiAwO1xuIDczMDpcdH1cbiA3MzE6XHRcbiA3MzI6XHQvKiBTZXQgaW4gc3RhdGUsIGludCBzdGF0ZSBjYW4gYmUgb25seSBPcGVuIG9yIENsb3NlZFxuIDczMzpcdCAqIG5vdGU6IGFscmVhZHkgY2FsbGVkIHdpdGggcnRubF9sb2NrXG4gNzM0Olx0ICovXG4gNzM1Olx0aW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSlcbiA3MzY6XHR7XG4gNzM3Olx0XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXHUwMDNlaW5faWQpO1xuIDczODpcdFxuIDczOTpcdFx0aWYgKCFtcnApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMjUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQnJpZGdlIE1SUCBUZXN0IFNjaGVkdWxlcioqCgpPa2F5LCBzbyB0aGUgYGJyX21ycF9zdGFydF90ZXN0YCBmdW5jdGlvbiBpcyBrZXkgaGVyZS4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzY2hlZHVsaW5nIHRoZSBgbXJwLSZndDt0ZXN0X3dvcmtgIHdoaWNoIGV2ZW50dWFsbHkgbGVhZHMgdG8gdGhlIGV4ZWN1dGlvbiBvZiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGVyZSB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGluaXRpYWxpemF0aW9uIHByb2JsZW0uIFRoaXMgaXMgYSBjbGFzc2ljOiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWVzIGFyZSBicmVhZCBhbmQgYnV0dGVyIGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgY3ljbGVzIGhlcmUuCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBhIGZldyBjcml0aWNhbCBzeW1ib2xzOiBzcGVjaWZpY2FsbHksIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfcGFyc2VgLiBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHRlc3QsIGBicl9tcnBfYWRkYCB3aWxsIGxpa2VseSBiZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHN0dWZmIChsaWtlbHkgdHJpZ2dlcnMgYWxsb2NhdGlvbiksIGFuZCBgYnJfbXJwX3BhcnNlYCBjb3VsZCBiZSB3aGVyZSBpbnZhbGlkIGlucHV0IGxlYWRzIHRvIHRoZSB2dWxuZXJhYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHRocmVlLgoKSSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgY29uZmlndXJhdGlvbnMsIGFzIHRoYXQmIzM5O3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbGx5IHVzZWZ1bCBjb25maWdzIHRoYXQgY291bGQgYWRkIGNvdmVyYWdlIGhlcmUuIEFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGF0IHRoaXMgc3RhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSSURHRV9NUlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7TVJQIHByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXM6IFRoZSBCUklER0UgUHJvamVjdCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogZ290dGEgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYEJSSURHRWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGFydGljdWxhciBjb21wb25lbnQgaXMgYSBzdGFuZGFsb25lIHBpZWNlIG9mIHdvcmssIG9yIGlmIGl0JiMzOTtzIGludHJpY2F0ZWx5IHdvdmVuIGludG8gdGhlIGZhYnJpYyBvZiBvdGhlciBzeXN0ZW1zLiBJcyBgQlJJREdFYCBhIGxlYWYgbm9kZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaCwgb3IgZG9lcyBpdCBoYXZlIHRlbnRhY2xlcyByZWFjaGluZyBvdXQ/IEFyZSB0aGVyZSB1cHN0cmVhbSBzeXN0ZW1zIHJlbHlpbmcgb24gaXRzIG91dHB1dHM/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGxpYnJhcmllcz8gQW55IG90aGVyIHNlcnZpY2VzPyBHb3R0YSBtYXAgdGhpcyBvdXQgYmVmb3JlIEkgZG8gYW55dGhpbmcgZWxzZS4gTmVlZCB0byBrbm93IHRoZSBicmVhZHRoIGFuZCBkZXB0aCBvZiBpdHMgaW50ZWdyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyBpdC4gVGhpcyBpcyBiYXNlbGluZTogZXN0YWJsaXNoIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIGFuZCB0aGlua2luZyBhbG9uZyB0aGVzZSBsaW5lczoKCioqQ2hlY2tpbmcgYEJSSURHRWAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGxhbmRzY2FwZSBvZiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgYEJSSURHRWAgc3lzdGVtLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIGltcGFjdHMsIGlkZW50aWZ5aW5nIGFueSBsdXJraW5nIGNvbmZsaWN0cywgb3IgcGlucG9pbnRpbmcgYXJlYXMgd2hlcmUgd2UgbWlnaHQgYmUgdnVsbmVyYWJsZSB0byB1cHN0cmVhbSBjaGFuZ2VzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjb3JlIGZvdW5kYXRpb25zIGFyZSBzb2xpZC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgd2Ugc3RhbmQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgQlJJREdFYCBzeXN0ZW0gYmVmb3JlIEkgbW92ZSBvbi4gV2hhdCBkb2VzIHRoZSBkZXBlbmRlbmN5IHRyZWUgbG9vayBsaWtlPyBBcmUgd2UgcmVseWluZyBvbiBhbnkgbGlicmFyaWVzIHRoYXQgYXJlIGtub3duIHBhaW4gcG9pbnRzLCBvciB0aGF0IGFyZSBhYm91dCB0byByZWFjaCBlbmQtb2YtbGlmZT8gQSBxdWljayBkZXBlbmRlbmN5IGF1ZGl0IGlzIG15IHN0YXJ0aW5nIHBvaW50IGhlcmUuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGhhdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0Y29uZmlnIEJSSURHRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTExDXG4gICA5Olx0XHRzZWxlY3QgU1RQXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHlvdXIgTGludXggYm94IHdpbGwgYmUgYWJsZSB0byBhY3QgYXMgYW5cbiAgMTI6XHRcdCAgRXRoZXJuZXQgYnJpZGdlLCB3aGljaCBtZWFucyB0aGF0IHRoZSBkaWZmZXJlbnQgRXRoZXJuZXQgc2VnbWVudHMgaXRcbiAgMTM6XHRcdCAgaXMgY29ubmVjdGVkIHRvIHdpbGwgYXBwZWFyIGFzIG9uZSBFdGhlcm5ldCB0byB0aGUgcGFydGljaXBhbnRzLlxuICAxNDpcdFx0ICBTZXZlcmFsIHN1Y2ggYnJpZGdlcyBjYW4gd29yayB0b2dldGhlciB0byBjcmVhdGUgZXZlbiBsYXJnZXJcbiAgMTU6XHRcdCAgbmV0d29ya3Mgb2YgRXRoZXJuZXRzIHVzaW5nIHRoZSBJRUVFIDgwMi4xIHNwYW5uaW5nIHRyZWUgYWxnb3JpdGhtLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkZvY3VzaW5nIEluIG9uIEJSSURHRSBDb25maWd1cmF0aW9uIGFuZCBNUlAgUGFyc2luZyoqCgpSaWdodCwgc28gZm9yIHRoaXMgYEJSSURHRWAgY29tcG9uZW50LCBJIGRvbiYjMzk7dCBzZWUgYW55IHdlaXJkIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCYjMzk7cyBnb29kIG5ld3MuIFNvLCB0aGUgbWFpbiBjb25maWd1cmF0aW9ucyB0byBrZWVwIGluIG1pbmQgYXJlIGBCUklER0VgIGl0c2VsZiBhbmQgYEJSSURHRV9NUlBgLiBOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGFuZCBlc3BlY2lhbGx5IGBicl9tcnBfcGFyc2VgLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGNsYXJpZnkgaXRzIHJvbGUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1Ny1cdFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg0OC1cdFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzo4NDk6XHRcdFx0ZXJyID0gYnJfbXJwX3BhcnNlKGJyLCBwLCBhdHRyLCBjbWQsIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXHRcdFx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDY4PXVuc2lnbmVkIGxvbmcgYnJfdGltZXJfdmFsdWUoY29uc3Qgc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA3NDppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzktI2Vsc2Vcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXHRcdFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBNUlAgTmV0bGluayBQYXJzaW5nKioKCk9rYXksIHNvIGBicl9tcnBfcGFyc2VgIGlzIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGZvciBoYW5kbGluZyBNUlAgbmV0bGluayBjb21tYW5kcy4gVGhhdCBtYWtlcyBzZW5zZSwgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBJdCBhcHBlYXJzIHRoYXQgYGJyX21ycF9wYXJzZWAgdGhlbiBjYWxscyBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgLCB3aGljaCBpbiB0dXJuLCBnb2VzIG9uIHRvIGNhbGwgYGJyX21ycF9zdGFydF90ZXN0YC4gR2l2ZW4gdGhpcyBmbG93LCBgYnJfbXJwX3BhcnNlYCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3ltYm9sIHRvIHplcm8gaW4gb24gZm9yIGluaXRpYWwgaW52ZXN0aWdhdGlvbi4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBzZWUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGVsc2V3aGVyZS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugb3V0c2lkZSBvZiB0aGlzIHNwZWNpZmljIHBhdGggbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIHJlbGF0aW9uc2hpcHMgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHVzZWQ7IHRoYXQgY291bGQgZ2l2ZSBtZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjY6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDEzCgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEJyaWRnZSBNUlAgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmaXgsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgdnVsbmVyYWJpbGl0eSBvciBwb3RlbnRpYWwgaXNzdWUgYXJpc2luZyBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGUgY29yZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gSXQgYXBwZWFycyB0aGF0IGBza2JfcHV0YCB3YXMgYmVpbmcgbWlzdXNlZCB0byBwYWQgZGF0YSB3aXRoaW4gdGhlIHBhY2tldCwgd2l0aG91dCBlbnN1cmluZyB0aGF0IHRoaXMgcGFkZGluZyB3YXMgemVyb2VkLiBUaGlzIGNvdWxkIGxlYWQgdG8gdGhlIGxlYWthZ2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludHJvZHVjZSBvdGhlciBzdWJ0bGUgcHJvYmxlbXMgZG93biB0aGUgbGluZSDigJMgYSBjbGFzc2ljIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIHJlYWxseSwgYW5kIG9uZSB0aGF0IGNvdWxkIGJpdGUgeW91IGxhdGVyIG9uIHdpdGggc3VidGxlIGJ1Z3MuCgpUaGUgZml4LCB0aGFua2Z1bGx5LCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIGVsZWdhbnQuIEl0IHJlcGxhY2VzIHRoZSBwcm9ibGVtYXRpYyBgc2tiX3B1dGAgY2FsbCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciBib3RoIHRoZSBUeXBlLUxlbmd0aC1WYWx1ZSAoVExWKSBzZWN0aW9uIGFuZCB0aGUgcGFkZGluZy4gVGhpcyBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3Q7IHplcm9pbmcgdGhlIG1lbW9yeSBpcyBhYnNvbHV0ZWx5IHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIFRoZSBtb3JlIGludGVyZXN0aW5nIHRoaXMgZ2V0cywgdGhlIG1vcmUgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IG90aGVyIHBvc3NpYmxlIG1lbW9yeSBsZWFrcy4KClRoaXMgZml4IGlzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBpcyByZWFjaGFibGUgY29kZSwgc28gdGhhdCYjMzk7cyBnb29kLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdXAgd2l0aCB0aGUgY29kZSYjMzk7cyBpbnRlbmRlZCBiZWhhdmlvci4gVGhhdCBsZWFkcyBtZSB0byB0aGUga2V5IHN5bWJvbHMgaGVyZS4gVGhlIGZsb3cgb2YgZXZlbnRzIHNlZW1zIHRvIGRlcGVuZCBvbjoKCiogICBgYnJfbXJwX3N0YXJ0X3Rlc3RgIC0gU3RhcnRpbmcgdGhlIHRlc3QgcHJvY2VzcyBmb3IgTVJQLgoqICAgYGJyX21ycF9hZGRgIC0gQWRkaW5nIGZyYW1lcyB0byB0aGUgTVJQIHByb2Nlc3MuCiogICBgYnJfbXJwX3BhcnNlYCAtIEhhbmRsaW5nIGFuZCBwYXJzaW5nIGFueSBpbmNvbWluZyBNUlAgZnJhbWVzLgoKSSYjMzk7bSBhbHNvIGxvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgLiBUaGVzZSB0ZWxsIG1lIHRoYXQgdGhlIGZpeCBpcyBzcGVjaWZpYyB0byBicmlkZ2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIE1SUCBwcm90b2NvbCB3aXRoaW4gYSBicmlkZ2luZyBlbnZpcm9ubWVudCwgYXMgZXhwZWN0ZWQuCgpSaWdodCwgd2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGdvaW5nIHRvIG5vdyBjYWxsIHRoZSBmdW5jdGlvbiBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9NUlAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfYWRkJiMzNDssCiAgICAmIzM0O2JyX21ycF9wYXJzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBieSByZXBsYWNpbmcgYHNrYl9wdXRgIHdpdGggYHNrYl9wdXRfemVyb2AgZm9yIHRoZSBUTFYgYW5kIHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoZW4gY29uZmlndXJpbmcgTVJQIHRlc3RzIHZpYSBuZXRsaW5rLiBUaGUgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NDYuODMxOTQ2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk3NTA4MjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ni44MzE5NTQxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4MTg2Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAxOTozOTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbmluZGV4IDE3OWQyNDcwYjcyNDguLmVmMTZkMDcwMzkyNDEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuY1xcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcXG5AQCAtMjI0LDExICsyMjQsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuIFxcdFxcdHN1Yl9vcHQgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfb3B0KSk7XFxuIFxcdFxcdG1lbXNldChzdWJfb3B0LCAweDAsIHNpemVvZigqc3ViX29wdCkpO1xcbiBcXG4tXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl90bHYpKTtcXG4tXFx0XFx0c3ViX3Rsdi1cXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xcbi1cXG4gXFx0XFx0LyogMzIgYml0IGFsbGlnbWVudCBzaGFsbCBiZSBlbnN1cmVkIHRoZXJlZm9yZSBhZGQgMiBieXRlcyAqL1xcbi1cXHRcXHRza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtcXG4rXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgKyBNUlBfT1BUX1BBRERJTkcpO1xcbitcXHRcXHRzdWJfdGx2LVxcdTAwM2V0eXBlID0gQlJfTVJQX1NVQl9UTFZfSEVBREVSX1RFU1RfQVVUT19NR1I7XFxuIFxcdH1cXG4gXFxuIFxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ny4xODA4MTQyNTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NTYyNjIwNTAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMzE2Y2IwOWNlMDYxMmVmMjQzZjg0NzZmNWI2YTQ0NDY2ZmZiMmRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTk6Mzk6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xuaW5kZXggMTc5ZDI0NzBiNzI0OC4uZWYxNmQwNzAzOTI0MSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMjQsMTEgKzIyNCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3ViX29wdCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl9vcHQpKTtcbiBcdFx0bWVtc2V0KHN1Yl9vcHQsIDB4MCwgc2l6ZW9mKCpzdWJfb3B0KSk7XG4gXG4tXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4tXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuLVxuIFx0XHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXG4tXHRcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuK1x0XHRzdWJfdGx2ID0gc2tiX3B1dF96ZXJvKHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSArIE1SUF9PUFRfUEFERElORyk7XG4rXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ny4xODA4MTU0NDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyODIzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHR3ZWFraW5nIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXkncmUgYWxsb2NhdGluZyBgc3ViX3RsdmAgd2l0aGluIHRoZSBgc2tiYC4gSW5zdGVhZCBvZiBzZXBhcmF0ZSBgc2tiX3B1dGAgY2FsbHMgZm9yIHRoZSBgc3ViX3RsdmAgc3RydWN0dXJlIGl0c2VsZiBhbmQgdGhlbiBwb3RlbnRpYWxseSBhZGRpbmcgcGFkZGluZyB2aWEgYE1SUF9PUFRfUEFERElOR2AsIHRoZXkndmUgY29uc29saWRhdGVkIGV2ZXJ5dGhpbmcgaW50byBhIHNpbmdsZSBgc2tiX3B1dF96ZXJvYCBjYWxsLlxuXG5UaGlzIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc3VnZ2VzdHMgdGhleSdyZSBhaW1pbmcgZm9yIGEgY2xlYW5lciBhbGxvY2F0aW9uIGFuZCwgY3J1Y2lhbGx5LCB6ZXJvaW5nIG91dCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbHVya2luZyBpbiB0aGUgb2xkIGFwcHJvYWNoLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBaZXJvaW5nIHRoZSBwYWRkaW5nIGlzIGFsc28gYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwLCBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgc3BlY2lmaWNzLCBpcyB0byBleGFtaW5lIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIG1vcmUgY2xvc2VseSBhbmQsIGltcG9ydGFudGx5LCB0cmFjZSBhbGwgaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIHdpbGwgYmUgY3JpdGljYWwgdG8gZnVsbHkgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgbWFraW5nIHN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzIGluIHRoZSBsYXJnZXIgcGljdHVyZS4gU28sIGxldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo1MS41NzM2NDExNTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNzM5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc3PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTA6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI1LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyNjpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjM5OjUxLjYxNjgxODcwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQ2NzY3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIENhbGwqKlxuXG5Pa2F5LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBnZXR0aW5nIGNhbGxlZCAqc3BlY2lmaWNhbGx5KiBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhpcyBjYWxsLiBUaGUga2V5IGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0J3MgdHJpZ2dlcmluZyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0LiBXaGVyZSBpcyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCAqaXRzZWxmKiBiZWluZyBpbnZva2VkPyBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIHNjaGVkdWxlZD8gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBvciBzZWUgd2hlcmUgaXQncyBiZWluZyBzY2hlZHVsZWQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHdoYXQncyBoYXBwZW5pbmcgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIGFuZCBwb3RlbnRpYWwgaXNzdWVzIHN1cnJvdW5kaW5nIHRoZSBhbGxvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NTUuMDYxNDk3NTI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODgyMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc3OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTU9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQxOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjM5OjU1LjEwNzM4MzY1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODMxODQ0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgV29yayB3aXRoIGBicl9tcnBfYWRkYCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIGZyZXNoLCBhbmQgYGJyX21ycF9hZGRgIGlzIHRoZSBrZXkuIFJpZ2h0LCB0aGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgd2hlcmUgZXZlcnl0aGluZyBraWNrcyBvZmYuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludCwgdGhlIGluaXRpYWxpemF0aW9uLCB0aGUgc2V0LXVwLiBNeSBwcmltYXJ5IGZvY3VzIGlzIGFsd2F5cyBvbiB0aGUgZGVwZW5kZW5jaWVzLCBzbyBsZXQncyBxdWlja2x5IHNlZSB3aG8ncyBjYWxsaW5nIHRoaXMgYmVhc3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNhbGxlcnMgb2YgYGJyX21ycF9hZGRgIHNob3VsZCBnaXZlIG1lIHRoZSBpbml0aWFsIGNvbnRleHQsIHRoZSBvcmlnaW5hdGluZyBjb21wb25lbnRzLiBJcyBpdCB0cmlnZ2VyZWQgYnkgdXNlciBhY3Rpb25zLCBhIHNjaGVkdWxlciwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciBkZWJ1Z2dpbmcgbGF0ZXIuIExldCdzIHNlZSB3aGF0IHdlIGhhdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo1Ny45OTA1Njk1OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI1MzE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTQyNj1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5NC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NTppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNjEtXFx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NjI6XFx0XFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFxcdTAwMjZpbnN0KTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNjMtXFx0ZWxzZVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTU5PWVudW0gYnJfbXJwX2h3X3N1cHBvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTY1LS8qIGJyX21ycC5jICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjY2OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NTguMDMzMTA0MzI4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTcwNjExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTVJQIEluc3RhbmNlIFBhcnNpbmcgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhpcyBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBHb29kLiBUaGF0IGNvbmZpcm1zIGl0J3MgcmVhY2hhYmxlIGFuZCBhcHBlYXJzIHRvIGJlIGZ1bmN0aW9uaW5nLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpczogV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBjb250cm9sIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbXBvbmVudCBpcyBhY3R1YWxseSBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGNhbiBiZSB0d2Vha2VkLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwncyBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDEuMzIyODEzMzQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ1ODY2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDEuMzY2MjgwMTgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTM0Nzc5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb21waWxhdGlvbiBvZiBicl9tcnAubyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGBicl9tcnAub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcsIG9idmlvdXNseSwgaXMgdGhlIGBuZXQvYnJpZGdlL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnJpZGdlLXJlbGF0ZWQgb2JqZWN0IGZpbGVzIGFuZCBtb2R1bGVzIGFyZSBsaWtlbHkgYmVpbmcgY29tcGlsZWQuIExldCdzIHNlZSBpZiB0aGF0IE1ha2VmaWxlIHByb3ZpZGVzIHRoZSBkZXRhaWxzIEkgbmVlZCBvbiB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGJyX21ycC5vYC4gSXQncyBhIHN0YW5kYXJkIGFuZCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGZpZ3VyaW5nIG91dCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBmbGFncy4gVGltZSB0byBnZXQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDU0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjA0LjQ1OTc1OTkzOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyMTU5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfTkVURklMVEVSKSArPSBuZXRmaWx0ZXIvXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yOC1cXG5uZXQvYnJpZGdlL01ha2VmaWxlOjI5OmJyaWRnZS0kKENPTkZJR19CUklER0VfTVJQKVxcdCs9IGJyX21ycF9zd2l0Y2hkZXYubyBicl9tcnAubyBicl9tcnBfbmV0bGluay5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0zMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDQuNTAwOTc4MzI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDMzNDgwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpdGVtIGlzIGBDT05GSUdfQlJJREdFX01SUGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGtpbmQgb2YgYnJpZGdpbmcgZnVuY3Rpb25hbGl0eSwgcHJvYmFibHkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBuZXQvYnJpZGdlL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0eXBpY2FsbHkgZGVmaW5lZCwgYW5kIHdoZXJlIHRoZSBoZWxwIHRleHQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBgQlJJREdFX01SUGAgd2lsbCByZXNpZGUuIEkgbmVlZCB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhpcyBvcHRpb24gKmRvZXMqIGFuZCB3aGF0IGl0J3MgZGVwZW5kZW50IG9uLiBMb29raW5nIGF0IHRoZSBLY29uZmlnIHdpbGwgbGV0IG1lIGZpbmQgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyB1c2VkLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgY29uZmlnIGl0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDowNy42NDQzMjg0MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzQwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDcuNjg4NjcyNTE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTAyMDUzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSSURHRV9NUlBgOlxuXG4qKkFuYWx5emluZyBCUklER0VfTVJQIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQlJJREdFX01SUGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV2ZXJ5dGhpbmcgdGhpcyB0aGluZyBsZWFucyBvbiDigJMgYWxsIHRoZSBvdGhlciBjb21wb25lbnRzLCBzZXJ2aWNlcywgZGF0YSBzb3VyY2VzLCB5b3UgbmFtZSBpdCDigJMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgYmxhc3QgcmFkaXVzIG9mIGFueSBjaGFuZ2VzLCBwaW5wb2ludGluZyB0aGUgcm9vdCBjYXVzZSBvZiBpc3N1ZXMsIGFuZCBlbnN1cmluZyBldmVyeXRoaW5nIHN0YXlzIGNvaGVzaXZlLlxuXG5JJ2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZGVuY2llcy4gRGlyZWN0IG9uZXMgYXJlIHRoZSBvYnZpb3VzIHRoaW5ncyBgQlJJREdFX01SUGAgY2FsbHMgZGlyZWN0bHkgb3IgaXMgZGlyZWN0bHkgbGlua2VkIHRvLiBUaGUgaW5kaXJlY3Qgb25lcyBhcmUgYSBiaXQgdHJpY2tpZXI7IHRoZXNlIGFyZSBjb21wb25lbnRzIHRoYXQgYEJSSURHRV9NUlBgIHJlbGllcyBvbiwgYnV0IG9ubHkgdGhyb3VnaCBvdGhlciBzeXN0ZW1zIG9yIHNlcnZpY2VzLiBNaXNzIG9uZSBvZiB0aG9zZSwgYW5kIHlvdSdyZSBpbiBmb3IgYSB3b3JsZCBvZiBodXJ0IGRvd24gdGhlIGxpbmUuXG5cbkknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgZ3JhcGgsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCBkaWFncmFtLiBJIGNhbiB1c2UgdGhhdCB0byB2aXN1YWxpemUgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY2hva2Vwb2ludHMgb3Igc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBjb2RlIGFuZCBjb25maWd1cmF0aW9ucyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCB1bmNvdmVyIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBsaWtlIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHRoZSBvcmRlciBvZiBleGVjdXRpb24gb3Igc3BlY2lmaWMgZGF0YSBmb3JtYXRzLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSBxdWVzdGlvbiBvZiB2ZXJzaW9uaW5nLiBXaGF0IHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzIGFyZSB3ZSBleHBlY3Rpbmc/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXM/IERvIHdlIGhhdmUgYSBjbGVhciB1cGdyYWRlIHBhdGg/IEknbGwgbmVlZCB0byBmYWN0b3IgYWxsIG9mIHRoYXQgaW4uXG5cbkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBtYXAgb2YgYEJSSURHRV9NUlBgJ3MgZW52aXJvbm1lbnQsIHdoaWNoIHdpbGwgYWxsb3cgbWUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgbW9kaWZ5aW5nLCBtYWludGFpbmluZywgYW5kIGludGVncmF0aW5nIGl0IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0J3MgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxMS40Nzg4Nzk3NjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDY0OlxcdGNvbmZpZyBCUklER0VfTVJQXFxuICA2NTpcXHRcXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuICA2NjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNjc6XFx0XFx0ZGVmYXVsdCBuXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBNUlBcXG4gIDcwOlxcdFxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEJSSURHRV9DRk1cXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA3OTpcXHRcXHRoZWxwXFxuICA4MDpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBDRk1cXG4gIDgxOlxcdFxcdCAgcHJvdG9jb2wgYWNjb3JkaW5nIHRvIDgwMi4xUSBzZWN0aW9uIDEyLjE0XFxuICA4MjpcXHRcXG4gIDgzOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjExLjQ3ODkzMzM0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYxNDcyMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIEJyaWRnZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNUlAgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEJSSURHRV9NUlBgIGlzIGNvbnRpbmdlbnQgb24gaGF2aW5nIGBCUklER0VgIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBhcmUsIHRoZXJlZm9yZSwgYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCwgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfaW5zdGFuY2VfcGFyc2VgLiBBIHF1aWNrIGdsYW5jZSByZXZlYWxzIHRoYXQgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFyZSBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgd29ydGggcmVtZW1iZXJpbmcuIEhvd2V2ZXIsIGBicl9tcnBfYWRkYCBpcyAqbm90KiBzdGF0aWMsIHNvIHRoYXQgaXMgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgdGhvdWdoIHN0aWxsIHdpdGhpbiB0aGUgcmVhbG0gb2YgdW5kZXJzdGFuZGluZy5cblxuQnV0IHdhaXQgYSBtb21lbnQuLi5JIHNob3VsZCBwcm9iYWJseSBjaGVjayBvdXQgYGJyX21ycF9zdGFydF90ZXN0YCB3aGljaCBzZWVtcyBsaWtlIHRoZSBvbmUgdGhhdCdzIHNjaGVkdWxpbmcgdGhlIHdvcmssIG5vdyAqdGhhdCogaXMgaW50ZXJlc3RpbmcuIExldCdzIGRlbHZlIGludG8gdGhhdCBvbmUgYSBiaXQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjE1Ljc0MDQwNzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDAzNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NjY5PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5OS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMDppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAxOlxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMi17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoxOTY6YnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCArIDFdID0ge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0xOTctXFx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cXHQ9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDU6c3RhdGljIGludCBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA4LVxcdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCArIDFdO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XFx0c3RydWN0IGJyX21ycF9zdGFydF90ZXN0IHRlc3Q7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMC1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMi1cXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIxMzpcXHRcXHRcXHQgICAgICAgYnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5LCBleHRhY2spO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTQtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzctXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcXHRyZXR1cm4gYnJfbXJwX3N0YXJ0X3Rlc3QoYnIsIFxcdTAwMjZ0ZXN0KTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zNTY9aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE0LVxcdGlmICh0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0pIHtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1OlxcdFxcdGVyciA9IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKGJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTc0PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NzU6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjE1Ljc4MjgxNjQ1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTUzMTE0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgTVJQIFRlc3QgSW5pdGlhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgdGhlIGtleSBmdW5jdGlvbiwgdGhlIHBsYWNlIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmIGluIHRoaXMgTVJQIHRlc3Rpbmcgc2NlbmFyaW8uIFRoYXQncyB3aGVyZSB0aGUgdGVzdCBnZXRzIGl0cyBjb25maWd1cmF0aW9uIGRpYWxlZCBpbiBhbmQsIGNydWNpYWxseSwgdGhlIHdvcmsgaXRzZWxmIGlzIHNjaGVkdWxlZC4gVGhhdCBtZWFucyBpdCdzIHRoZSBoZWFydCBvZiB0aGUgc2V0dXAgcGhhc2UuIEdpdmVuIHRoYXQgdW5kZXJzdGFuZGluZywgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhhdCBmdW5jdGlvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIGBuZXQvYnJpZGdlL2JyX21ycC5jYCBhbmQgZGlnIGludG8gYGJyX21ycF9zdGFydF90ZXN0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCB0YXNrcyBhcmUgYmVpbmcgcXVldWVkLCBhbmQgd2hhdCBjb250cm9sIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IGEgcmVhbCBoYW5kbGUgb24gdGhlIHRlc3Rpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxOS4wNzgxMzAxNDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDA6XFx0aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gNzAxOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG4gNzAyOlxcdHtcXG4gNzAzOlxcdFxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVxcdTAwM2VyaW5nX2lkKTtcXG4gNzA0OlxcdFxcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcXG4gNzA1OlxcdFxcbiA3MDY6XFx0XFx0aWYgKCFtcnApXFxuIDcwNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNzA4OlxcdFxcbiA3MDk6XFx0XFx0LyogVHJ5IHRvIHB1c2ggaXQgdG8gdGhlIEhXIGFuZCBpZiBpdCBmYWlscyB0aGVuIGNvbnRpbnVlIHdpdGggU1dcXG4gNzEwOlxcdFxcdCAqIGltcGxlbWVudGF0aW9uIGFuZCBpZiB0aGF0IGFsc28gZmFpbHMgdGhlbiByZXR1cm4gZXJyb3IuXFxuIDcxMTpcXHRcXHQgKi9cXG4gNzEyOlxcdFxcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIHRlc3QtXFx1MDAzZWludGVydmFsLFxcbiA3MTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0ZXN0LVxcdTAwM2VtYXhfbWlzcywgdGVzdC1cXHUwMDNlcGVyaW9kLFxcbiA3MTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0ZXN0LVxcdTAwM2Vtb25pdG9yKTtcXG4gNzE1OlxcdFxcdGlmIChzdXBwb3J0ID09IEJSX01SUF9OT05FKVxcbiA3MTY6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfSFcpXFxuIDcxOTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzIwOlxcdFxcbiA3MjE6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2ludGVydmFsID0gdGVzdC1cXHUwMDNlaW50ZXJ2YWw7XFxuIDcyMjpcXHRcXHRtcnAtXFx1MDAzZXRlc3RfZW5kID0gamlmZmllcyArIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlcGVyaW9kKTtcXG4gNzIzOlxcdFxcdG1ycC1cXHUwMDNldGVzdF9tYXhfbWlzcyA9IHRlc3QtXFx1MDAzZW1heF9taXNzO1xcbiA3MjQ6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X21vbml0b3IgPSB0ZXN0LVxcdTAwM2Vtb25pdG9yO1xcbiA3MjU6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbiA3MjY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG4gNzI3OlxcdFxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG4gNzI4OlxcdFxcbiA3Mjk6XFx0XFx0cmV0dXJuIDA7XFxuIDczMDpcXHR9XFxuIDczMTpcXHRcXG4gNzMyOlxcdC8qIFNldCBpbiBzdGF0ZSwgaW50IHN0YXRlIGNhbiBiZSBvbmx5IE9wZW4gb3IgQ2xvc2VkXFxuIDczMzpcXHQgKiBub3RlOiBhbHJlYWR5IGNhbGxlZCB3aXRoIHJ0bmxfbG9ja1xcbiA3MzQ6XFx0ICovXFxuIDczNTpcXHRpbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxcbiA3MzY6XFx0e1xcbiA3Mzc6XFx0XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaW5faWQoYnIsIHN0YXRlLVxcdTAwM2Vpbl9pZCk7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdGlmICghbXJwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxOS4wNzgyMjE1MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNjQ5NjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBCcmlkZ2UgTVJQIFRlc3QgU2NoZWR1bGVyKipcblxuT2theSwgc28gdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgZnVuY3Rpb24gaXMga2V5IGhlcmUuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzY2hlZHVsaW5nIHRoZSBgbXJwLVx1MDAzZXRlc3Rfd29ya2Agd2hpY2ggZXZlbnR1YWxseSBsZWFkcyB0byB0aGUgZXhlY3V0aW9uIG9mIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0IGZ1bmN0aW9uIHRoZW4gY2FsbHMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoZXJlIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gcHJvYmxlbS4gVGhpcyBpcyBhIGNsYXNzaWM6IG1lbW9yeSBpbml0aWFsaXphdGlvbiBpc3N1ZXMgYXJlIGJyZWFkIGFuZCBidXR0ZXIgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggc3BlbmRpbmcgc29tZSBjeWNsZXMgaGVyZS5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYSBmZXcgY3JpdGljYWwgc3ltYm9sczogc3BlY2lmaWNhbGx5LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGFuZCBgYnJfbXJwX3BhcnNlYC4gYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSB0ZXN0LCBgYnJfbXJwX2FkZGAgd2lsbCBsaWtlbHkgYmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyBzdHVmZiAobGlrZWx5IHRyaWdnZXJzIGFsbG9jYXRpb24pLCBhbmQgYGJyX21ycF9wYXJzZWAgY291bGQgYmUgd2hlcmUgaW52YWxpZCBpbnB1dCBsZWFkcyB0byB0aGUgdnVsbmVyYWJpbGl0eS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHRocmVlLlxuXG5JJ2xsIGJlIHN1cmUgdG8gZW5hYmxlIHRoZSBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGNvbmZpZ3VyYXRpb25zLCBhcyB0aGF0J3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbGx5IHVzZWZ1bCBjb25maWdzIHRoYXQgY291bGQgYWRkIGNvdmVyYWdlIGhlcmUuIEFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGF0IHRoaXMgc3RhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoyMy40MDQ3MjA1MDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODEyNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MjMuNDQ2NTM1NjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NDMwNDYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzOiBUaGUgQlJJREdFIFByb2plY3QqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEZpcnN0IHRoaW5nJ3MgZmlyc3Q6IGdvdHRhIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGBCUklER0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhcnRpY3VsYXIgY29tcG9uZW50IGlzIGEgc3RhbmRhbG9uZSBwaWVjZSBvZiB3b3JrLCBvciBpZiBpdCdzIGludHJpY2F0ZWx5IHdvdmVuIGludG8gdGhlIGZhYnJpYyBvZiBvdGhlciBzeXN0ZW1zLiBJcyBgQlJJREdFYCBhIGxlYWYgbm9kZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaCwgb3IgZG9lcyBpdCBoYXZlIHRlbnRhY2xlcyByZWFjaGluZyBvdXQ/IEFyZSB0aGVyZSB1cHN0cmVhbSBzeXN0ZW1zIHJlbHlpbmcgb24gaXRzIG91dHB1dHM/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGxpYnJhcmllcz8gQW55IG90aGVyIHNlcnZpY2VzPyBHb3R0YSBtYXAgdGhpcyBvdXQgYmVmb3JlIEkgZG8gYW55dGhpbmcgZWxzZS4gTmVlZCB0byBrbm93IHRoZSBicmVhZHRoIGFuZCBkZXB0aCBvZiBpdHMgaW50ZWdyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyBpdC4gVGhpcyBpcyBiYXNlbGluZTogZXN0YWJsaXNoIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI2LjgxMDg0MjUwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDQ4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnLTUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY6Y29uZmlnIEJSSURHRVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCI4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctMzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJJR01QL01MRCBzbm9vcGluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTc1LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI2Ljg1NDE4OTM0N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzODI0NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBhbmQgdGhpbmtpbmcgYWxvbmcgdGhlc2UgbGluZXM6XG5cbioqQ2hlY2tpbmcgYEJSSURHRWAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncy4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgbGFuZHNjYXBlIG9mIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSBgQlJJREdFYCBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cywgaWRlbnRpZnlpbmcgYW55IGx1cmtpbmcgY29uZmxpY3RzLCBvciBwaW5wb2ludGluZyBhcmVhcyB3aGVyZSB3ZSBtaWdodCBiZSB2dWxuZXJhYmxlIHRvIHVwc3RyZWFtIGNoYW5nZXMuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZm91bmRhdGlvbnMgYXJlIHNvbGlkLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB3ZSBzdGFuZCwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIGBCUklER0VgIHN5c3RlbSBiZWZvcmUgSSBtb3ZlIG9uLiBXaGF0IGRvZXMgdGhlIGRlcGVuZGVuY3kgdHJlZSBsb29rIGxpa2U/IEFyZSB3ZSByZWx5aW5nIG9uIGFueSBsaWJyYXJpZXMgdGhhdCBhcmUga25vd24gcGFpbiBwb2ludHMsIG9yIHRoYXQgYXJlIGFib3V0IHRvIHJlYWNoIGVuZC1vZi1saWZlPyBBIHF1aWNrIGRlcGVuZGVuY3kgYXVkaXQgaXMgbXkgc3RhcnRpbmcgcG9pbnQgaGVyZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoyOS43OTgwMTY1MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0Y29uZmlnIEJSSURHRVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBMTENcXG4gICA5OlxcdFxcdHNlbGVjdCBTVFBcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4geW91ciBMaW51eCBib3ggd2lsbCBiZSBhYmxlIHRvIGFjdCBhcyBhblxcbiAgMTI6XFx0XFx0ICBFdGhlcm5ldCBicmlkZ2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRpZmZlcmVudCBFdGhlcm5ldCBzZWdtZW50cyBpdFxcbiAgMTM6XFx0XFx0ICBpcyBjb25uZWN0ZWQgdG8gd2lsbCBhcHBlYXIgYXMgb25lIEV0aGVybmV0IHRvIHRoZSBwYXJ0aWNpcGFudHMuXFxuICAxNDpcXHRcXHQgIFNldmVyYWwgc3VjaCBicmlkZ2VzIGNhbiB3b3JrIHRvZ2V0aGVyIHRvIGNyZWF0ZSBldmVuIGxhcmdlclxcbiAgMTU6XFx0XFx0ICBuZXR3b3JrcyBvZiBFdGhlcm5ldHMgdXNpbmcgdGhlIElFRUUgODAyLjEgc3Bhbm5pbmcgdHJlZSBhbGdvcml0aG0uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI5Ljc5ODEwMTI3NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU2MjQ0Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqRm9jdXNpbmcgSW4gb24gQlJJREdFIENvbmZpZ3VyYXRpb24gYW5kIE1SUCBQYXJzaW5nKipcblxuUmlnaHQsIHNvIGZvciB0aGlzIGBCUklER0VgIGNvbXBvbmVudCwgSSBkb24ndCBzZWUgYW55IHdlaXJkIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCdzIGdvb2QgbmV3cy4gU28sIHRoZSBtYWluIGNvbmZpZ3VyYXRpb25zIHRvIGtlZXAgaW4gbWluZCBhcmUgYEJSSURHRWAgaXRzZWxmIGFuZCBgQlJJREdFX01SUGAuIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gYSBmZXcga2V5IHN5bWJvbHM6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGVzcGVjaWFsbHkgYGJyX21ycF9wYXJzZWAuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayB3aGVyZSBgYnJfbXJwX3BhcnNlYCBpcyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhlIGNvZGUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCByZWFsbHkgY2xhcmlmeSBpdHMgcm9sZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTA4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDozMy4xNTQzNDgwODVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzEyNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1NS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTctXFx0XFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTgwOT1zdGF0aWMgaW50IGJyX2Fmc3BlYyhzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NDgtXFx0XFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6ODQ5OlxcdFxcdFxcdGVyciA9IGJyX21ycF9wYXJzZShiciwgcCwgYXR0ciwgY21kLCBleHRhY2spO1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg1MC1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MjA2OD11bnNpZ25lZCBsb25nIGJyX3RpbWVyX3ZhbHVlKGNvbnN0IHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcik7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwNzQ6aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3NS1cXHRcXHQgc3RydWN0IG5sYXR0ciAqYXR0ciwgaW50IGNtZCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDc5LSNlbHNlXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA4MDpzdGF0aWMgaW5saW5lIGludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjMzLjE5ODY2MzY5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk1MTIwOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIE1SUCBOZXRsaW5rIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBgYnJfbXJwX3BhcnNlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgTVJQIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGl0J3MgdGhlIGVudHJ5IHBvaW50LiBJdCBhcHBlYXJzIHRoYXQgYGJyX21ycF9wYXJzZWAgdGhlbiBjYWxscyBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgLCB3aGljaCBpbiB0dXJuLCBnb2VzIG9uIHRvIGNhbGwgYGJyX21ycF9zdGFydF90ZXN0YC4gR2l2ZW4gdGhpcyBmbG93LCBgYnJfbXJwX3BhcnNlYCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3ltYm9sIHRvIHplcm8gaW4gb24gZm9yIGluaXRpYWwgaW52ZXN0aWdhdGlvbi5cblxuTm93LCBJJ20gY3VyaW91cyBhYm91dCB0aGUgYWxsb2NhdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGVsc2V3aGVyZS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugb3V0c2lkZSBvZiB0aGlzIHNwZWNpZmljIHBhdGggbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIHJlbGF0aW9uc2hpcHMgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIHNlZSB3aGVyZSBlbHNlIGl0J3MgdXNlZDsgdGhhdCBjb3VsZCBnaXZlIG1lIHNvbWUgdmFsdWFibGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDozNi45OTM3ODY3MjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDk4MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzA5LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI2OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MzcuMDM5MjkwMTA4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTA0MzA0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBCcmlkZ2UgTVJQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGZpeCwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYSB2dWxuZXJhYmlsaXR5IG9yIHBvdGVudGlhbCBpc3N1ZSBhcmlzaW5nIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBJdCBhcHBlYXJzIHRoYXQgYHNrYl9wdXRgIHdhcyBiZWluZyBtaXN1c2VkIHRvIHBhZCBkYXRhIHdpdGhpbiB0aGUgcGFja2V0LCB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhpcyBwYWRkaW5nIHdhcyB6ZXJvZWQuIFRoaXMgY291bGQgbGVhZCB0byB0aGUgbGVha2FnZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW50cm9kdWNlIG90aGVyIHN1YnRsZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBhIGNsYXNzaWMgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcmVhbGx5LCBhbmQgb25lIHRoYXQgY291bGQgYml0ZSB5b3UgbGF0ZXIgb24gd2l0aCBzdWJ0bGUgYnVncy5cblxuVGhlIGZpeCwgdGhhbmtmdWxseSwgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlbGVnYW50LiBJdCByZXBsYWNlcyB0aGUgcHJvYmxlbWF0aWMgYHNrYl9wdXRgIGNhbGwgd2l0aCBgc2tiX3B1dF96ZXJvYCBmb3IgYm90aCB0aGUgVHlwZS1MZW5ndGgtVmFsdWUgKFRMVikgc2VjdGlvbiBhbmQgdGhlIHBhZGRpbmcuIFRoaXMgaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3Q7IHplcm9pbmcgdGhlIG1lbW9yeSBpcyBhYnNvbHV0ZWx5IHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIFRoZSBtb3JlIGludGVyZXN0aW5nIHRoaXMgZ2V0cywgdGhlIG1vcmUgSSdtIGdvaW5nIHRvIGxvb2sgYXQgb3RoZXIgcG9zc2libGUgbWVtb3J5IGxlYWtzLlxuXG5UaGlzIGZpeCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgcmVhY2hhYmxlIGNvZGUsIHNvIHRoYXQncyBnb29kLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdXAgd2l0aCB0aGUgY29kZSdzIGludGVuZGVkIGJlaGF2aW9yLiBUaGF0IGxlYWRzIG1lIHRvIHRoZSBrZXkgc3ltYm9scyBoZXJlLiBUaGUgZmxvdyBvZiBldmVudHMgc2VlbXMgdG8gZGVwZW5kIG9uOlxuXG4qICAgYGJyX21ycF9zdGFydF90ZXN0YCAtIFN0YXJ0aW5nIHRoZSB0ZXN0IHByb2Nlc3MgZm9yIE1SUC5cbiogICBgYnJfbXJwX2FkZGAgLSBBZGRpbmcgZnJhbWVzIHRvIHRoZSBNUlAgcHJvY2Vzcy5cbiogICBgYnJfbXJwX3BhcnNlYCAtIEhhbmRsaW5nIGFuZCBwYXJzaW5nIGFueSBpbmNvbWluZyBNUlAgZnJhbWVzLlxuXG5JJ20gYWxzbyBsb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uczogYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC4gVGhlc2UgdGVsbCBtZSB0aGF0IHRoZSBmaXggaXMgc3BlY2lmaWMgdG8gYnJpZGdlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBNUlAgcHJvdG9jb2wgd2l0aGluIGEgYnJpZGdpbmcgZW52aXJvbm1lbnQsIGFzIGV4cGVjdGVkLlxuXG5SaWdodCwgd2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJ20gZ29pbmcgdG8gbm93IGNhbGwgdGhlIGZ1bmN0aW9uIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDEzLCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDo0Mi43Mjk3MjMyMDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI5MzE5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGJ5IHJlcGxhY2luZyBgc2tiX3B1dGAgd2l0aCBgc2tiX3B1dF96ZXJvYCBmb3IgdGhlIFRMViBhbmQgcGFkZGluZy4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAgd2hlbiBjb25maWd1cmluZyBNUlAgdGVzdHMgdmlhIG5ldGxpbmsuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 19:25:20 +0000 UTC FinishedAt: 2026-07-30 19:40:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "451c9075d6c53f2438d110addbeeeea6fac18567", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRIDGE", "BRIDGE_MRP" ], "series_id": "695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "br_mrp_start_test", "br_mrp_add", "br_mrp_parse" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDE5OjM5OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9icmlkZ2UvYnJfbXJwLmMgYi9uZXQvYnJpZGdlL2JyX21ycC5jXG5pbmRleCAxNzlkMjQ3MGI3MjQ4Li5lZjE2ZDA3MDM5MjQxIDEwMDY0NFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2JyaWRnZS9icl9tcnAuY1xuQEAgLTIyNCwxMSAmIzQzOzIyNCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3ViX29wdCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl9vcHQpKTtcbiBcdFx0bWVtc2V0KHN1Yl9vcHQsIDB4MCwgc2l6ZW9mKCpzdWJfb3B0KSk7XG4gXG4tXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4tXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuLVxuIFx0XHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXG4tXHRcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuJiM0MztcdFx0c3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgJiM0MzsgTVJQX09QVF9QQURESU5HKTtcbiYjNDM7XHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDMwIDE5OjM5OjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2JyaWRnZS9icl9tcnAuYyBiL25ldC9icmlkZ2UvYnJfbXJwLmMKaW5kZXggMTc5ZDI0NzBiNzI0OC4uZWYxNmQwNzAzOTI0MSAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvYnJpZGdlL2JyX21ycC5jCkBAIC0yMjQsMTEgJiM0MzsyMjQsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsCiAJCXN1Yl9vcHQgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfb3B0KSk7CiAJCW1lbXNldChzdWJfb3B0LCAweDAsIHNpemVvZigqc3ViX29wdCkpOwogCi0JCXN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7Ci0JCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKLQogCQkvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovCi0JCXNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpOwomIzQzOwkJc3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgJiM0MzsgTVJQX09QVF9QQURESU5HKTsKJiM0MzsJCXN1Yl90bHYtJmd0O3R5cGUgPSBCUl9NUlBfU1VCX1RMVl9IRUFERVJfVEVTVF9BVVRPX01HUjsKIAl9CiAKIAlicl9tcnBfc2tiX3Rsdihza2IsIEJSX01SUF9UTFZfSEVBREVSX0VORCwgMHgwKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIwMQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEJyaWRnZSBNUlAgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyB0d2Vha2luZyB0aGUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgZnVuY3Rpb24uIEZyb20gd2hhdCBJIGNhbiBzZWUsIGl0IHNlZW1zIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGV5JiMzOTtyZSBhbGxvY2F0aW5nIGBzdWJfdGx2YCB3aXRoaW4gdGhlIGBza2JgLiBJbnN0ZWFkIG9mIHNlcGFyYXRlIGBza2JfcHV0YCBjYWxscyBmb3IgdGhlIGBzdWJfdGx2YCBzdHJ1Y3R1cmUgaXRzZWxmIGFuZCB0aGVuIHBvdGVudGlhbGx5IGFkZGluZyBwYWRkaW5nIHZpYSBgTVJQX09QVF9QQURESU5HYCwgdGhleSYjMzk7dmUgY29uc29saWRhdGVkIGV2ZXJ5dGhpbmcgaW50byBhIHNpbmdsZSBgc2tiX3B1dF96ZXJvYCBjYWxsLgoKVGhpcyBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHN1Z2dlc3RzIHRoZXkmIzM5O3JlIGFpbWluZyBmb3IgYSBjbGVhbmVyIGFsbG9jYXRpb24gYW5kLCBjcnVjaWFsbHksIHplcm9pbmcgb3V0IHRoZSBhbGxvY2F0ZWQgbWVtb3J5LiBUaGF0IGhhcyB0aGUgcG90ZW50aWFsIHRvIGFkZHJlc3MgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlcyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBsdXJraW5nIGluIHRoZSBvbGQgYXBwcm9hY2gsIHdoaWNoIGlzIGFsd2F5cyBhIGdvb2QgdGhpbmcuIFplcm9pbmcgdGhlIHBhZGRpbmcgaXMgYWxzbyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLgoKTXkgbmV4dCBzdGVwLCBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgc3BlY2lmaWNzLCBpcyB0byBleGFtaW5lIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIG1vcmUgY2xvc2VseSBhbmQsIGltcG9ydGFudGx5LCB0cmFjZSBhbGwgaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIHdpbGwgYmUgY3JpdGljYWwgdG8gZnVsbHkgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgbWFraW5nIHN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBpbiB0aGUgbGFyZ2VyIHBpY3R1cmUuIFNvLCBsZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfYWxsb2NfdGVzdF9za2ImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjY6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAzOAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBDYWxsKioKCk9rYXksIHNvIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGlzIGdldHRpbmcgY2FsbGVkICpzcGVjaWZpY2FsbHkqIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhpcyBjYWxsLiBUaGUga2V5IGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0JiMzOTtzIHRyaWdnZXJpbmcgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdC4gV2hlcmUgaXMgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAgKml0c2VsZiogYmVpbmcgaW52b2tlZD8gSXMgaXQgY2FsbGVkIGRpcmVjdGx5LCBvciBzY2hlZHVsZWQ/IEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgaWRlbnRpZnlpbmcgYWxsIHRoZSBjYWxsZXJzIG9mIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIG9yIHNlZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBzY2hlZHVsZWQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBUaGlzIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHByb3Blcmx5IHVuZGVyc3RhbmQgdGhlIGxpZmVjeWNsZSBhbmQgcG90ZW50aWFsIGlzc3VlcyBzdXJyb3VuZGluZyB0aGUgYWxsb2NhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfdGVzdF93b3JrX2V4cGlyZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MjM3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3Ni0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc3OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvYnJpZGdlL2JyX21ycC5jLTI3OC17XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz00OTU9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0MC1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQxOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQyLVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2bXJwLVx1MDAzZWluX3Rlc3Rfd29yaywgYnJfbXJwX2luX3Rlc3Rfd29ya19leHBpcmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiBXb3JrIHdpdGggYGJyX21ycF9hZGRgKioKCk9rYXksIHNvIHdlJiMzOTtyZSBzdGFydGluZyBmcmVzaCwgYW5kIGBicl9tcnBfYWRkYCBpcyB0aGUga2V5LiBSaWdodCwgdGhpcyBmdW5jdGlvbiBhcHBlYXJzIHRvIGJlIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmLiBHaXZlbiBteSBleHBlcmllbmNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZW50cnkgcG9pbnQsIHRoZSBpbml0aWFsaXphdGlvbiwgdGhlIHNldC11cC4gTXkgcHJpbWFyeSBmb2N1cyBpcyBhbHdheXMgb24gdGhlIGRlcGVuZGVuY2llcywgc28gbGV0JiMzOTtzIHF1aWNrbHkgc2VlIHdobyYjMzk7cyBjYWxsaW5nIHRoaXMgYmVhc3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNhbGxlcnMgb2YgYGJyX21ycF9hZGRgIHNob3VsZCBnaXZlIG1lIHRoZSBpbml0aWFsIGNvbnRleHQsIHRoZSBvcmlnaW5hdGluZyBjb21wb25lbnRzLiBJcyBpdCB0cmlnZ2VyZWQgYnkgdXNlciBhY3Rpb25zLCBhIHNjaGVkdWxlciwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciBkZWJ1Z2dpbmcgbGF0ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBoYXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycC5jPTQyNj1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTQtICovXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NTppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxubmV0L2JyaWRnZS9icl9tcnAuYy00OTYte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYxLVx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzo2MjpcdFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFx1MDAyNmluc3QpO1xubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTYzLVx0ZWxzZVxuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaD01OT1lbnVtIGJyX21ycF9od19zdXBwb3J0IHtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNjUtLyogYnJfbXJwLmMgKi9cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaDo2NjppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIE1SUCBJbnN0YW5jZSBQYXJzaW5nIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuLi4gdGhpcyBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBHb29kLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIHJlYWNoYWJsZSBhbmQgYXBwZWFycyB0byBiZSBmdW5jdGlvbmluZywgd2hpY2ggaXMgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MgdGhlcmUuCgpOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBXaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYXZhaWxhYmxlIHRvIGNvbnRyb2wgdGhpcyB0aGluZz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgY29tcG9uZW50IGlzIGFjdHVhbGx5IGVuYWJsZWQgb3IgZGlzYWJsZWQsIGFuZCB3aGF0IHBhcmFtZXRlcnMgY2FuIGJlIHR3ZWFrZWQuIFRpbWUgdG8gZGlnIGludG8gdGhlIGtlcm5lbCYjMzk7cyBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDkKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gb2YgYnJfbXJwLm8qKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYGJyX21ycC5vYCBpcyBiZWluZyBidWlsdC4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQgbG9va2luZywgb2J2aW91c2x5LCBpcyB0aGUgYG5ldC9icmlkZ2UvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnJpZGdlLXJlbGF0ZWQgb2JqZWN0IGZpbGVzIGFuZCBtb2R1bGVzIGFyZSBsaWtlbHkgYmVpbmcgY29tcGlsZWQuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBNYWtlZmlsZSBwcm92aWRlcyB0aGUgZGV0YWlscyBJIG5lZWQgb24gdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIGBicl9tcnAub2AuIEl0JiMzOTtzIGEgc3RhbmRhcmQgYW5kIGVmZmVjdGl2ZSBhcHByb2FjaCBmb3IgZmlndXJpbmcgb3V0IHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvbXBpbGF0aW9uIGZsYWdzLiBUaW1lIHRvIGdldCBkaWdnaW5nIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX05FVEZJTFRFUikgJiM0Mzs9IG5ldGZpbHRlci9cbm5ldC9icmlkZ2UvTWFrZWZpbGUtMjgtXG5uZXQvYnJpZGdlL01ha2VmaWxlOjI5OmJyaWRnZS0kKENPTkZJR19CUklER0VfTVJQKVx0JiM0Mzs9IGJyX21ycF9zd2l0Y2hkZXYubyBicl9tcnAubyBicl9tcnBfbmV0bGluay5vXG5uZXQvYnJpZGdlL01ha2VmaWxlLTMwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODM0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpdGVtIGlzIGBDT05GSUdfQlJJREdFX01SUGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGtpbmQgb2YgYnJpZGdpbmcgZnVuY3Rpb25hbGl0eSwgcHJvYmFibHkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBuZXQvYnJpZGdlL0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgdHlwaWNhbGx5IGRlZmluZWQsIGFuZCB3aGVyZSB0aGUgaGVscCB0ZXh0LCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggYEJSSURHRV9NUlBgIHdpbGwgcmVzaWRlLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoaXMgb3B0aW9uICpkb2VzKiBhbmQgd2hhdCBpdCYjMzk7cyBkZXBlbmRlbnQgb24uIExvb2tpbmcgYXQgdGhlIEtjb25maWcgd2lsbCBsZXQgbWUgZmluZCB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gVGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBpbXBhY3Qgb2YgdGhpcyBwYXJ0aWN1bGFyIGNvbmZpZyBpdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUklER0VfTVJQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBCUklER0VfTVJQYDoKCioqQW5hbHl6aW5nIEJSSURHRV9NUlAgRGVwZW5kZW5jaWVzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBmb3IgYEJSSURHRV9NUlBgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBldmVyeXRoaW5nIHRoaXMgdGhpbmcgbGVhbnMgb24g4oCTIGFsbCB0aGUgb3RoZXIgY29tcG9uZW50cywgc2VydmljZXMsIGRhdGEgc291cmNlcywgeW91IG5hbWUgaXQg4oCTIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgcG90ZW50aWFsIGJsYXN0IHJhZGl1cyBvZiBhbnkgY2hhbmdlcywgcGlucG9pbnRpbmcgdGhlIHJvb3QgY2F1c2Ugb2YgaXNzdWVzLCBhbmQgZW5zdXJpbmcgZXZlcnl0aGluZyBzdGF5cyBjb2hlc2l2ZS4KCkkmIzM5O2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZGVuY2llcy4gRGlyZWN0IG9uZXMgYXJlIHRoZSBvYnZpb3VzIHRoaW5ncyBgQlJJREdFX01SUGAgY2FsbHMgZGlyZWN0bHkgb3IgaXMgZGlyZWN0bHkgbGlua2VkIHRvLiBUaGUgaW5kaXJlY3Qgb25lcyBhcmUgYSBiaXQgdHJpY2tpZXI7IHRoZXNlIGFyZSBjb21wb25lbnRzIHRoYXQgYEJSSURHRV9NUlBgIHJlbGllcyBvbiwgYnV0IG9ubHkgdGhyb3VnaCBvdGhlciBzeXN0ZW1zIG9yIHNlcnZpY2VzLiBNaXNzIG9uZSBvZiB0aG9zZSwgYW5kIHlvdSYjMzk7cmUgaW4gZm9yIGEgd29ybGQgb2YgaHVydCBkb3duIHRoZSBsaW5lLgoKSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgZ3JhcGgsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCBkaWFncmFtLiBJIGNhbiB1c2UgdGhhdCB0byB2aXN1YWxpemUgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY2hva2Vwb2ludHMgb3Igc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLiBGcm9tIHRoZXJlLCBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgY29kZSBhbmQgY29uZmlndXJhdGlvbnMgdG8gY29uZmlybSBteSBhc3N1bXB0aW9ucyBhbmQgdW5jb3ZlciBhbnkgaGlkZGVuIGRlcGVuZGVuY2llcywgbGlrZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhYm91dCB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIG9yIHNwZWNpZmljIGRhdGEgZm9ybWF0cy4KClRoZW4sIHRoZXJlJiMzOTtzIHRoZSBxdWVzdGlvbiBvZiB2ZXJzaW9uaW5nLiBXaGF0IHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzIGFyZSB3ZSBleHBlY3Rpbmc/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXM/IERvIHdlIGhhdmUgYSBjbGVhciB1cGdyYWRlIHBhdGg/IEkmIzM5O2xsIG5lZWQgdG8gZmFjdG9yIGFsbCBvZiB0aGF0IGluLgoKRXNzZW50aWFsbHksIEkgd2FudCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIG1hcCBvZiBgQlJJREdFX01SUGAmIzM5O3MgZW52aXJvbm1lbnQsIHdoaWNoIHdpbGwgYWxsb3cgbWUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgbW9kaWZ5aW5nLCBtYWludGFpbmluZywgYW5kIGludGVncmF0aW5nIGl0IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGdldCB0byB3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNjQ6XHRjb25maWcgQlJJREdFX01SUFxuICA2NTpcdFx0Ym9vbCBcJiMzNDtNUlAgcHJvdG9jb2xcJiMzNDtcbiAgNjY6XHRcdGRlcGVuZHMgb24gQlJJREdFXG4gIDY3Olx0XHRkZWZhdWx0IG5cbiAgNjg6XHRcdGhlbHBcbiAgNjk6XHRcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4gdGhlIEV0aGVybmV0IGJyaWRnZSB3aWxsIGJlIGFibGUgdG8gcnVuIE1SUFxuICA3MDpcdFx0ICBwcm90b2NvbCB0byBkZXRlY3QgbG9vcHNcbiAgNzE6XHRcbiAgNzI6XHRcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXG4gIDczOlx0XG4gIDc0Olx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4gIDc1Olx0XG4gIDc2Olx0Y29uZmlnIEJSSURHRV9DRk1cbiAgNzc6XHRcdGJvb2wgXCYjMzQ7Q0ZNIHByb3RvY29sXCYjMzQ7XG4gIDc4Olx0XHRkZXBlbmRzIG9uIEJSSURHRVxuICA3OTpcdFx0aGVscFxuICA4MDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgdGhlbiB0aGUgRXRoZXJuZXQgYnJpZGdlIHdpbGwgYmUgYWJsZSB0byBydW4gQ0ZNXG4gIDgxOlx0XHQgIHByb3RvY29sIGFjY29yZGluZyB0byA4MDIuMVEgc2VjdGlvbiAxMi4xNFxuICA4MjpcdFxuICA4MzpcdFx0ICBTYXkgTiB0byBleGNsdWRlIHRoaXMgc3VwcG9ydCBhbmQgcmVkdWNlIHRoZSBiaW5hcnkgc2l6ZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc4NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1SUCBCcmlkZ2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBNUlAgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEJSSURHRV9NUlBgIGlzIGNvbnRpbmdlbnQgb24gaGF2aW5nIGBCUklER0VgIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBhcmUsIHRoZXJlZm9yZSwgYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBoZXJlLiBUaGUgb25lcyB0aGF0IGltbWVkaWF0ZWx5IHN0YW5kIG91dCBhcmUgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCBgYnJfbXJwX2FkZGAsIGFuZCBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYC4gQSBxdWljayBnbGFuY2UgcmV2ZWFscyB0aGF0IGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGFuZCBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBhcmUgZGVjbGFyZWQgYHN0YXRpY2AsIHdoaWNoIGlzIHdvcnRoIHJlbWVtYmVyaW5nLiBIb3dldmVyLCBgYnJfbXJwX2FkZGAgaXMgKm5vdCogc3RhdGljLCBzbyB0aGF0IGlzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHRob3VnaCBzdGlsbCB3aXRoaW4gdGhlIHJlYWxtIG9mIHVuZGVyc3RhbmRpbmcuCgpCdXQgd2FpdCBhIG1vbWVudC4uLkkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIG91dCBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoaWNoIHNlZW1zIGxpa2UgdGhlIG9uZSB0aGF0JiMzOTtzIHNjaGVkdWxpbmcgdGhlIHdvcmssIG5vdyAqdGhhdCogaXMgaW50ZXJlc3RpbmcuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoYXQgb25lIGEgYml0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9zdGFydF90ZXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYz02Njk9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpicixcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5OS0gKi9cbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAwOmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMTpcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxubmV0L2JyaWRnZS9icl9tcnAuYy03MDIte1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0xOTU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MTk2OmJyX21ycF9zdGFydF90ZXN0X3BvbGljeVtJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVggJiM0MzsgMV0gPSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMTk3LVx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cdD0geyAudHlwZSA9IE5MQV9SRUpFQ1QgfSxcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIwNTpzdGF0aWMgaW50IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5sYXR0ciAqYXR0cixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMDYtXHRcdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwOC1cdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCAmIzQzOyAxXTtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XHRzdHJ1Y3QgYnJfbXJwX3N0YXJ0X3Rlc3QgdGVzdDtcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTAtXHRpbnQgZXJyO1xuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTItXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MjEzOlx0XHRcdCAgICAgICBicl9tcnBfc3RhcnRfdGVzdF9wb2xpY3ksIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjE0LVx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM3LVxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcdHJldHVybiBicl9tcnBfc3RhcnRfdGVzdChiciwgXHUwMDI2dGVzdCk7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cbi0tXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzU2PWludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTQtXHRpZiAodGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdKSB7XG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1Olx0XHRlcnIgPSBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShicixcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXHRcdFx0XHRcdCAgICAgIHRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUXSxcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg9NzQ9aW50IGJyX21ycF9zZXRfcmluZ19yb2xlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9yaW5nX3JvbGUgKnJvbGUpO1xubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjc1OmludCBicl9tcnBfc3RhcnRfdGVzdChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdCk7XG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gdGhlIE1SUCBUZXN0IEluaXRpYXRpb24qKgoKQWxyaWdodCwgc28gYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUga2V5IGZ1bmN0aW9uLCB0aGUgcGxhY2Ugd2hlcmUgZXZlcnl0aGluZyBraWNrcyBvZmYgaW4gdGhpcyBNUlAgdGVzdGluZyBzY2VuYXJpby4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgdGVzdCBnZXRzIGl0cyBjb25maWd1cmF0aW9uIGRpYWxlZCBpbiBhbmQsIGNydWNpYWxseSwgdGhlIHdvcmsgaXRzZWxmIGlzIHNjaGVkdWxlZC4gVGhhdCBtZWFucyBpdCYjMzk7cyB0aGUgaGVhcnQgb2YgdGhlIHNldHVwIHBoYXNlLiBHaXZlbiB0aGF0IHVuZGVyc3RhbmRpbmcsIEkgbmVlZCB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIHRoYXQgZnVuY3Rpb24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYG5ldC9icmlkZ2UvYnJfbXJwLmNgIGFuZCBkaWcgaW50byBgYnJfbXJwX3N0YXJ0X3Rlc3RgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgcGFyYW1ldGVycyBhcmUgYmVpbmcgc2V0LCB3aGF0IHRhc2tzIGFyZSBiZWluZyBxdWV1ZWQsIGFuZCB3aGF0IGNvbnRyb2wgc3RydWN0dXJlcyBhcmUgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IGEgcmVhbCBoYW5kbGUgb24gdGhlIHRlc3Rpbmcgc3RyYXRlZ3kuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9icl9tcnAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzAwOlx0aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcbiA3MDE6XHRcdFx0ICAgICAgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KVxuIDcwMjpcdHtcbiA3MDM6XHRcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVx1MDAzZXJpbmdfaWQpO1xuIDcwNDpcdFx0ZW51bSBicl9tcnBfaHdfc3VwcG9ydCBzdXBwb3J0O1xuIDcwNTpcdFxuIDcwNjpcdFx0aWYgKCFtcnApXG4gNzA3Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDcwODpcdFxuIDcwOTpcdFx0LyogVHJ5IHRvIHB1c2ggaXQgdG8gdGhlIEhXIGFuZCBpZiBpdCBmYWlscyB0aGVuIGNvbnRpbnVlIHdpdGggU1dcbiA3MTA6XHRcdCAqIGltcGxlbWVudGF0aW9uIGFuZCBpZiB0aGF0IGFsc28gZmFpbHMgdGhlbiByZXR1cm4gZXJyb3IuXG4gNzExOlx0XHQgKi9cbiA3MTI6XHRcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIHRlc3QtXHUwMDNlaW50ZXJ2YWwsXG4gNzEzOlx0XHRcdFx0XHRcdFx0ICB0ZXN0LVx1MDAzZW1heF9taXNzLCB0ZXN0LVx1MDAzZXBlcmlvZCxcbiA3MTQ6XHRcdFx0XHRcdFx0XHQgIHRlc3QtXHUwMDNlbW9uaXRvcik7XG4gNzE1Olx0XHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfTk9ORSlcbiA3MTY6XHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIDcxNzpcdFxuIDcxODpcdFx0aWYgKHN1cHBvcnQgPT0gQlJfTVJQX0hXKVxuIDcxOTpcdFx0XHRyZXR1cm4gMDtcbiA3MjA6XHRcbiA3MjE6XHRcdG1ycC1cdTAwM2V0ZXN0X2ludGVydmFsID0gdGVzdC1cdTAwM2VpbnRlcnZhbDtcbiA3MjI6XHRcdG1ycC1cdTAwM2V0ZXN0X2VuZCA9IGppZmZpZXMgJiM0MzsgdXNlY3NfdG9famlmZmllcyh0ZXN0LVx1MDAzZXBlcmlvZCk7XG4gNzIzOlx0XHRtcnAtXHUwMDNldGVzdF9tYXhfbWlzcyA9IHRlc3QtXHUwMDNlbWF4X21pc3M7XG4gNzI0Olx0XHRtcnAtXHUwMDNldGVzdF9tb25pdG9yID0gdGVzdC1cdTAwM2Vtb25pdG9yO1xuIDcyNTpcdFx0bXJwLVx1MDAzZXRlc3RfY291bnRfbWlzcyA9IDA7XG4gNzI2Olx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoc3lzdGVtX3BlcmNwdV93cSwgXHUwMDI2bXJwLVx1MDAzZXRlc3Rfd29yayxcbiA3Mjc6XHRcdFx0XHQgICB1c2Vjc190b19qaWZmaWVzKHRlc3QtXHUwMDNlaW50ZXJ2YWwpKTtcbiA3Mjg6XHRcbiA3Mjk6XHRcdHJldHVybiAwO1xuIDczMDpcdH1cbiA3MzE6XHRcbiA3MzI6XHQvKiBTZXQgaW4gc3RhdGUsIGludCBzdGF0ZSBjYW4gYmUgb25seSBPcGVuIG9yIENsb3NlZFxuIDczMzpcdCAqIG5vdGU6IGFscmVhZHkgY2FsbGVkIHdpdGggcnRubF9sb2NrXG4gNzM0Olx0ICovXG4gNzM1Olx0aW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSlcbiA3MzY6XHR7XG4gNzM3Olx0XHRzdHJ1Y3QgYnJfbXJwICptcnAgPSBicl9tcnBfZmluZF9pbl9pZChiciwgc3RhdGUtXHUwMDNlaW5faWQpO1xuIDczODpcdFxuIDczOTpcdFx0aWYgKCFtcnApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxMjUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTdHJhdGVneSBmb3IgQnJpZGdlIE1SUCBUZXN0IFNjaGVkdWxlcioqCgpPa2F5LCBzbyB0aGUgYGJyX21ycF9zdGFydF90ZXN0YCBmdW5jdGlvbiBpcyBrZXkgaGVyZS4gSXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzY2hlZHVsaW5nIHRoZSBgbXJwLSZndDt0ZXN0X3dvcmtgIHdoaWNoIGV2ZW50dWFsbHkgbGVhZHMgdG8gdGhlIGV4ZWN1dGlvbiBvZiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gVGhhdCBmdW5jdGlvbiB0aGVuIGNhbGxzIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLCB3aGVyZSB0aGUgcGF0Y2ggYWRkcmVzc2VzIGEgbWVtb3J5IGluaXRpYWxpemF0aW9uIHByb2JsZW0uIFRoaXMgaXMgYSBjbGFzc2ljOiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gaXNzdWVzIGFyZSBicmVhZCBhbmQgYnV0dGVyIGZvciBmdXp6aW5nLiBEZWZpbml0ZWx5IHdvcnRoIHNwZW5kaW5nIHNvbWUgY3ljbGVzIGhlcmUuCgpNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBhIGZldyBjcml0aWNhbCBzeW1ib2xzOiBzcGVjaWZpY2FsbHksIGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfcGFyc2VgLiBgYnJfbXJwX3N0YXJ0X3Rlc3RgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIHRlc3QsIGBicl9tcnBfYWRkYCB3aWxsIGxpa2VseSBiZSByZXNwb25zaWJsZSBmb3IgYWRkaW5nIHN0dWZmIChsaWtlbHkgdHJpZ2dlcnMgYWxsb2NhdGlvbiksIGFuZCBgYnJfbXJwX3BhcnNlYCBjb3VsZCBiZSB3aGVyZSBpbnZhbGlkIGlucHV0IGxlYWRzIHRvIHRoZSB2dWxuZXJhYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHRocmVlLgoKSSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlIGBCUklER0VgIGFuZCBgQlJJREdFX01SUGAgY29uZmlndXJhdGlvbnMsIGFzIHRoYXQmIzM5O3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbGx5IHVzZWZ1bCBjb25maWdzIHRoYXQgY291bGQgYWRkIGNvdmVyYWdlIGhlcmUuIEFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGF0IHRoaXMgc3RhZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JSSURHRV9NUlAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnPTUwPWNvbmZpZyBCUklER0VfVkxBTl9GSUxURVJJTkdcbi0tXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcbm5ldC9icmlkZ2UvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7TVJQIHByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NjkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipDaGVja2luZyBEZXBlbmRlbmNpZXM6IFRoZSBCUklER0UgUHJvamVjdCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBGaXJzdCB0aGluZyYjMzk7cyBmaXJzdDogZ290dGEgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgYEJSSURHRWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGFydGljdWxhciBjb21wb25lbnQgaXMgYSBzdGFuZGFsb25lIHBpZWNlIG9mIHdvcmssIG9yIGlmIGl0JiMzOTtzIGludHJpY2F0ZWx5IHdvdmVuIGludG8gdGhlIGZhYnJpYyBvZiBvdGhlciBzeXN0ZW1zLiBJcyBgQlJJREdFYCBhIGxlYWYgbm9kZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaCwgb3IgZG9lcyBpdCBoYXZlIHRlbnRhY2xlcyByZWFjaGluZyBvdXQ/IEFyZSB0aGVyZSB1cHN0cmVhbSBzeXN0ZW1zIHJlbHlpbmcgb24gaXRzIG91dHB1dHM/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGxpYnJhcmllcz8gQW55IG90aGVyIHNlcnZpY2VzPyBHb3R0YSBtYXAgdGhpcyBvdXQgYmVmb3JlIEkgZG8gYW55dGhpbmcgZWxzZS4gTmVlZCB0byBrbm93IHRoZSBicmVhZHRoIGFuZCBkZXB0aCBvZiBpdHMgaW50ZWdyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyBpdC4gVGhpcyBpcyBiYXNlbGluZTogZXN0YWJsaXNoIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJSSURHRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL0tjb25maWctNS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo2OmNvbmZpZyBCUklER0Vcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTM1LVxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xubmV0L2JyaWRnZS9LY29uZmlnLTM3LVx0Ym9vbCBcJiMzNDtJR01QL01MRCBzbm9vcGluZ1wmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo1MDpjb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXG5uZXQvYnJpZGdlL0tjb25maWctNTEtXHRib29sIFwmIzM0O1ZMQU4gZmlsdGVyaW5nXCYjMzQ7XG4tLVxubmV0L2JyaWRnZS9LY29uZmlnLTYzLVxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXHRib29sIFwmIzM0O01SUCBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9icmlkZ2UvS2NvbmZpZy03NS1cbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxubmV0L2JyaWRnZS9LY29uZmlnLTc3LVx0Ym9vbCBcJiMzNDtDRk0gcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgc3VtbWFyaXplZCwgYXNzdW1pbmcgSSYjMzk7bSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIGFuZCB0aGlua2luZyBhbG9uZyB0aGVzZSBsaW5lczoKCioqQ2hlY2tpbmcgYEJSSURHRWAgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGEgZ3JpcCBvbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGluZ3MuIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIGxhbmRzY2FwZSBvZiBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgYEJSSURHRWAgc3lzdGVtLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgcG90ZW50aWFsIGltcGFjdHMsIGlkZW50aWZ5aW5nIGFueSBsdXJraW5nIGNvbmZsaWN0cywgb3IgcGlucG9pbnRpbmcgYXJlYXMgd2hlcmUgd2UgbWlnaHQgYmUgdnVsbmVyYWJsZSB0byB1cHN0cmVhbSBjaGFuZ2VzLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBjb3JlIGZvdW5kYXRpb25zIGFyZSBzb2xpZC4gSSBuZWVkIHRvIGtub3cgd2hlcmUgd2Ugc3RhbmQsIHNwZWNpZmljYWxseSB3aXRoIHRoZSBgQlJJREdFYCBzeXN0ZW0gYmVmb3JlIEkgbW92ZSBvbi4gV2hhdCBkb2VzIHRoZSBkZXBlbmRlbmN5IHRyZWUgbG9vayBsaWtlPyBBcmUgd2UgcmVseWluZyBvbiBhbnkgbGlicmFyaWVzIHRoYXQgYXJlIGtub3duIHBhaW4gcG9pbnRzLCBvciB0aGF0IGFyZSBhYm91dCB0byByZWFjaCBlbmQtb2YtbGlmZT8gQSBxdWljayBkZXBlbmRlbmN5IGF1ZGl0IGlzIG15IHN0YXJ0aW5nIHBvaW50IGhlcmUuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGhhdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L2JyaWRnZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0Y29uZmlnIEJSSURHRVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7ODAyLjFkIEV0aGVybmV0IEJyaWRnaW5nXCYjMzQ7XG4gICA4Olx0XHRzZWxlY3QgTExDXG4gICA5Olx0XHRzZWxlY3QgU1RQXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHlvdXIgTGludXggYm94IHdpbGwgYmUgYWJsZSB0byBhY3QgYXMgYW5cbiAgMTI6XHRcdCAgRXRoZXJuZXQgYnJpZGdlLCB3aGljaCBtZWFucyB0aGF0IHRoZSBkaWZmZXJlbnQgRXRoZXJuZXQgc2VnbWVudHMgaXRcbiAgMTM6XHRcdCAgaXMgY29ubmVjdGVkIHRvIHdpbGwgYXBwZWFyIGFzIG9uZSBFdGhlcm5ldCB0byB0aGUgcGFydGljaXBhbnRzLlxuICAxNDpcdFx0ICBTZXZlcmFsIHN1Y2ggYnJpZGdlcyBjYW4gd29yayB0b2dldGhlciB0byBjcmVhdGUgZXZlbiBsYXJnZXJcbiAgMTU6XHRcdCAgbmV0d29ya3Mgb2YgRXRoZXJuZXRzIHVzaW5nIHRoZSBJRUVFIDgwMi4xIHNwYW5uaW5nIHRyZWUgYWxnb3JpdGhtLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKkZvY3VzaW5nIEluIG9uIEJSSURHRSBDb25maWd1cmF0aW9uIGFuZCBNUlAgUGFyc2luZyoqCgpSaWdodCwgc28gZm9yIHRoaXMgYEJSSURHRWAgY29tcG9uZW50LCBJIGRvbiYjMzk7dCBzZWUgYW55IHdlaXJkIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCYjMzk7cyBnb29kIG5ld3MuIFNvLCB0aGUgbWFpbiBjb25maWd1cmF0aW9ucyB0byBrZWVwIGluIG1pbmQgYXJlIGBCUklER0VgIGl0c2VsZiBhbmQgYEJSSURHRV9NUlBgLiBOb3csIEkgbmVlZCB0byB6b29tIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzOiBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGFuZCBlc3BlY2lhbGx5IGBicl9tcnBfcGFyc2VgLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gY2hlY2sgd2hlcmUgYGJyX21ycF9wYXJzZWAgaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGNsYXJpZnkgaXRzIHJvbGUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticl9tcnBfcGFyc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvYnJpZGdlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTUtXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1Ny1cdFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYz04MDk9c3RhdGljIGludCBicl9hZnNwZWMoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxuLS1cbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg0OC1cdFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYzo4NDk6XHRcdFx0ZXJyID0gYnJfbXJwX3BhcnNlKGJyLCBwLCBhdHRyLCBjbWQsIGV4dGFjayk7XG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NTAtXHRcdFx0aWYgKGVycilcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaD0yMDY4PXVuc2lnbmVkIGxvbmcgYnJfdGltZXJfdmFsdWUoY29uc3Qgc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKTtcbi0tXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA3NDppbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzUtXHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyLCBpbnQgY21kLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwNzktI2Vsc2Vcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwODA6c3RhdGljIGlubGluZSBpbnQgYnJfbXJwX3BhcnNlKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXHRcdFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzI1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBNUlAgTmV0bGluayBQYXJzaW5nKioKCk9rYXksIHNvIGBicl9tcnBfcGFyc2VgIGlzIHRoZSBjZW50cmFsIGZ1bmN0aW9uIGZvciBoYW5kbGluZyBNUlAgbmV0bGluayBjb21tYW5kcy4gVGhhdCBtYWtlcyBzZW5zZSwgaXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50LiBJdCBhcHBlYXJzIHRoYXQgYGJyX21ycF9wYXJzZWAgdGhlbiBjYWxscyBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgLCB3aGljaCBpbiB0dXJuLCBnb2VzIG9uIHRvIGNhbGwgYGJyX21ycF9zdGFydF90ZXN0YC4gR2l2ZW4gdGhpcyBmbG93LCBgYnJfbXJwX3BhcnNlYCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3ltYm9sIHRvIHplcm8gaW4gb24gZm9yIGluaXRpYWwgaW52ZXN0aWdhdGlvbi4KCk5vdywgSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBhbGxvY2F0aW9uIHByb2Nlc3MuIExldCYjMzk7cyBzZWUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGVsc2V3aGVyZS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugb3V0c2lkZSBvZiB0aGlzIHNwZWNpZmljIHBhdGggbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIHJlbGF0aW9uc2hpcHMgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIHNlZSB3aGVyZSBlbHNlIGl0JiMzOTtzIHVzZWQ7IHRoYXQgY291bGQgZ2l2ZSBtZSBzb21lIHZhbHVhYmxlIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JyX21ycF9hbGxvY190ZXN0X3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9icmlkZ2UvYnJfbXJwLmM9MTcxPXN0YXRpYyB2b2lkIGJyX21ycF9za2JfY29tbW9uKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBicl9tcnAgKm1ycClcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cbm5ldC9icmlkZ2UvYnJfbXJwLmM6MTgyOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVx0XHRcdFx0XHQgICAgIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cdFx0aWYgKCFtcnAtXHUwMDNldGVzdF9tb25pdG9yKSB7XG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcdFx0XHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMTEtXHRcdFx0XHRcdFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfUFJJTUFSWSk7XG4tLVxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXHRcdGlmICghbXJwLVx1MDAzZXRlc3RfbW9uaXRvcikge1xubmV0L2JyaWRnZS9icl9tcnAuYzozMjY6XHRcdFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVx0XHRcdFx0XHRcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDEzCgkJCQkJCQlvdXRwdXQ6IDE2MAoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIEJyaWRnZSBNUlAgQnVnIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBmaXgsIHNwZWNpZmljYWxseSBhZGRyZXNzaW5nIGEgdnVsbmVyYWJpbGl0eSBvciBwb3RlbnRpYWwgaXNzdWUgYXJpc2luZyBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGUgY29yZSBwcm9ibGVtIHNlZW1zIHRvIGJlIHdpdGhpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYC4gSXQgYXBwZWFycyB0aGF0IGBza2JfcHV0YCB3YXMgYmVpbmcgbWlzdXNlZCB0byBwYWQgZGF0YSB3aXRoaW4gdGhlIHBhY2tldCwgd2l0aG91dCBlbnN1cmluZyB0aGF0IHRoaXMgcGFkZGluZyB3YXMgemVyb2VkLiBUaGlzIGNvdWxkIGxlYWQgdG8gdGhlIGxlYWthZ2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnksIG9yIGludHJvZHVjZSBvdGhlciBzdWJ0bGUgcHJvYmxlbXMgZG93biB0aGUgbGluZSDigJMgYSBjbGFzc2ljIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIHJlYWxseSwgYW5kIG9uZSB0aGF0IGNvdWxkIGJpdGUgeW91IGxhdGVyIG9uIHdpdGggc3VidGxlIGJ1Z3MuCgpUaGUgZml4LCB0aGFua2Z1bGx5LCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIGVsZWdhbnQuIEl0IHJlcGxhY2VzIHRoZSBwcm9ibGVtYXRpYyBgc2tiX3B1dGAgY2FsbCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciBib3RoIHRoZSBUeXBlLUxlbmd0aC1WYWx1ZSAoVExWKSBzZWN0aW9uIGFuZCB0aGUgcGFkZGluZy4gVGhpcyBpcyBleGFjdGx5IHdoYXQgSSYjMzk7ZCBleHBlY3Q7IHplcm9pbmcgdGhlIG1lbW9yeSBpcyBhYnNvbHV0ZWx5IHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIFRoZSBtb3JlIGludGVyZXN0aW5nIHRoaXMgZ2V0cywgdGhlIG1vcmUgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IG90aGVyIHBvc3NpYmxlIG1lbW9yeSBsZWFrcy4KClRoaXMgZml4IGlzIGZ1bmN0aW9uYWxseSBzb3VuZCBhbmQsIGJhc2VkIG9uIHRoZSBjb250ZXh0LCBpcyByZWFjaGFibGUgY29kZSwgc28gdGhhdCYjMzk7cyBnb29kLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdXAgd2l0aCB0aGUgY29kZSYjMzk7cyBpbnRlbmRlZCBiZWhhdmlvci4gVGhhdCBsZWFkcyBtZSB0byB0aGUga2V5IHN5bWJvbHMgaGVyZS4gVGhlIGZsb3cgb2YgZXZlbnRzIHNlZW1zIHRvIGRlcGVuZCBvbjoKCiogICBgYnJfbXJwX3N0YXJ0X3Rlc3RgIC0gU3RhcnRpbmcgdGhlIHRlc3QgcHJvY2VzcyBmb3IgTVJQLgoqICAgYGJyX21ycF9hZGRgIC0gQWRkaW5nIGZyYW1lcyB0byB0aGUgTVJQIHByb2Nlc3MuCiogICBgYnJfbXJwX3BhcnNlYCAtIEhhbmRsaW5nIGFuZCBwYXJzaW5nIGFueSBpbmNvbWluZyBNUlAgZnJhbWVzLgoKSSYjMzk7bSBhbHNvIGxvb2tpbmcgYXQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zOiBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgLiBUaGVzZSB0ZWxsIG1lIHRoYXQgdGhlIGZpeCBpcyBzcGVjaWZpYyB0byBicmlkZ2UgZnVuY3Rpb25hbGl0eSBhbmQgdGhlIE1SUCBwcm90b2NvbCB3aXRoaW4gYSBicmlkZ2luZyBlbnZpcm9ubWVudCwgYXMgZXhwZWN0ZWQuCgpSaWdodCwgd2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJiMzOTttIGdvaW5nIHRvIG5vdyBjYWxsIHRoZSBmdW5jdGlvbiBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlJJREdFJiMzNDssCiAgICAmIzM0O0JSSURHRV9NUlAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticl9tcnBfc3RhcnRfdGVzdCYjMzQ7LAogICAgJiMzNDticl9tcnBfYWRkJiMzNDssCiAgICAmIzM0O2JyX21ycF9wYXJzZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZSBpbiBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBieSByZXBsYWNpbmcgYHNrYl9wdXRgIHdpdGggYHNrYl9wdXRfemVyb2AgZm9yIHRoZSBUTFYgYW5kIHBhZGRpbmcuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIHdoaWNoIGlzIHNjaGVkdWxlZCBieSBgYnJfbXJwX3N0YXJ0X3Rlc3RgIHdoZW4gY29uZmlndXJpbmcgTVJQIHRlc3RzIHZpYSBuZXRsaW5rLiBUaGUgY29kZSBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSSURHRSYjMzQ7LAogICAgJiMzNDtCUklER0VfTVJQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnJfbXJwX3N0YXJ0X3Rlc3QmIzM0OywKICAgICYjMzQ7YnJfbXJwX2FkZCYjMzQ7LAogICAgJiMzNDticl9tcnBfcGFyc2UmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NDYuODMxOTQ2MzJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk3NTA4MjIxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ni44MzE5NTQxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ4MTg2Mzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZTMxNmNiMDljZTA2MTJlZjI0M2Y4NDc2ZjViNmE0NDQ2NmZmYjJkYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAzMCAxOTozOTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xcbmluZGV4IDE3OWQyNDcwYjcyNDguLmVmMTZkMDcwMzkyNDEgMTAwNjQ0XFxuLS0tIGEvbmV0L2JyaWRnZS9icl9tcnAuY1xcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcXG5AQCAtMjI0LDExICsyMjQsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxuIFxcdFxcdHN1Yl9vcHQgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfb3B0KSk7XFxuIFxcdFxcdG1lbXNldChzdWJfb3B0LCAweDAsIHNpemVvZigqc3ViX29wdCkpO1xcbiBcXG4tXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl90bHYpKTtcXG4tXFx0XFx0c3ViX3Rsdi1cXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xcbi1cXG4gXFx0XFx0LyogMzIgYml0IGFsbGlnbWVudCBzaGFsbCBiZSBlbnN1cmVkIHRoZXJlZm9yZSBhZGQgMiBieXRlcyAqL1xcbi1cXHRcXHRza2JfcHV0KHNrYiwgTVJQX09QVF9QQURESU5HKTtcXG4rXFx0XFx0c3ViX3RsdiA9IHNrYl9wdXRfemVybyhza2IsIHNpemVvZigqc3ViX3RsdikgKyBNUlBfT1BUX1BBRERJTkcpO1xcbitcXHRcXHRzdWJfdGx2LVxcdTAwM2V0eXBlID0gQlJfTVJQX1NVQl9UTFZfSEVBREVSX1RFU1RfQVVUT19NR1I7XFxuIFxcdH1cXG4gXFxuIFxcdGJyX21ycF9za2JfdGx2KHNrYiwgQlJfTVJQX1RMVl9IRUFERVJfRU5ELCAweDApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ny4xODA4MTQyNTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NTYyNjIwNTAzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlMzE2Y2IwOWNlMDYxMmVmMjQzZjg0NzZmNWI2YTQ0NDY2ZmZiMmRiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMTk6Mzk6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX21ycC5jIGIvbmV0L2JyaWRnZS9icl9tcnAuY1xuaW5kZXggMTc5ZDI0NzBiNzI0OC4uZWYxNmQwNzAzOTI0MSAxMDA2NDRcbi0tLSBhL25ldC9icmlkZ2UvYnJfbXJwLmNcbisrKyBiL25ldC9icmlkZ2UvYnJfbXJwLmNcbkBAIC0yMjQsMTEgKzIyNCw5IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcbiBcdFx0c3ViX29wdCA9IHNrYl9wdXQoc2tiLCBzaXplb2YoKnN1Yl9vcHQpKTtcbiBcdFx0bWVtc2V0KHN1Yl9vcHQsIDB4MCwgc2l6ZW9mKCpzdWJfb3B0KSk7XG4gXG4tXHRcdHN1Yl90bHYgPSBza2JfcHV0KHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSk7XG4tXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuLVxuIFx0XHQvKiAzMiBiaXQgYWxsaWdtZW50IHNoYWxsIGJlIGVuc3VyZWQgdGhlcmVmb3JlIGFkZCAyIGJ5dGVzICovXG4tXHRcdHNrYl9wdXQoc2tiLCBNUlBfT1BUX1BBRERJTkcpO1xuK1x0XHRzdWJfdGx2ID0gc2tiX3B1dF96ZXJvKHNrYiwgc2l6ZW9mKCpzdWJfdGx2KSArIE1SUF9PUFRfUEFERElORyk7XG4rXHRcdHN1Yl90bHYtXHUwMDNldHlwZSA9IEJSX01SUF9TVUJfVExWX0hFQURFUl9URVNUX0FVVE9fTUdSO1xuIFx0fVxuIFxuIFx0YnJfbXJwX3NrYl90bHYoc2tiLCBCUl9NUlBfVExWX0hFQURFUl9FTkQsIDB4MCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo0Ny4xODA4MTU0NDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkyODIzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQnJpZGdlIE1SUCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvYnJpZGdlL2JyX21ycC5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHR3ZWFraW5nIHRoZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBmdW5jdGlvbi4gRnJvbSB3aGF0IEkgY2FuIHNlZSwgaXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoZXkncmUgYWxsb2NhdGluZyBgc3ViX3RsdmAgd2l0aGluIHRoZSBgc2tiYC4gSW5zdGVhZCBvZiBzZXBhcmF0ZSBgc2tiX3B1dGAgY2FsbHMgZm9yIHRoZSBgc3ViX3RsdmAgc3RydWN0dXJlIGl0c2VsZiBhbmQgdGhlbiBwb3RlbnRpYWxseSBhZGRpbmcgcGFkZGluZyB2aWEgYE1SUF9PUFRfUEFERElOR2AsIHRoZXkndmUgY29uc29saWRhdGVkIGV2ZXJ5dGhpbmcgaW50byBhIHNpbmdsZSBgc2tiX3B1dF96ZXJvYCBjYWxsLlxuXG5UaGlzIGlzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgc3VnZ2VzdHMgdGhleSdyZSBhaW1pbmcgZm9yIGEgY2xlYW5lciBhbGxvY2F0aW9uIGFuZCwgY3J1Y2lhbGx5LCB6ZXJvaW5nIG91dCB0aGUgYWxsb2NhdGVkIG1lbW9yeS4gVGhhdCBoYXMgdGhlIHBvdGVudGlhbCB0byBhZGRyZXNzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMgdGhhdCBtaWdodCBoYXZlIGJlZW4gbHVya2luZyBpbiB0aGUgb2xkIGFwcHJvYWNoLCB3aGljaCBpcyBhbHdheXMgYSBnb29kIHRoaW5nLiBaZXJvaW5nIHRoZSBwYWRkaW5nIGlzIGFsc28gYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuTXkgbmV4dCBzdGVwLCBiZWZvcmUgZ2V0dGluZyBpbnRvIHRoZSB3ZWVkcyBvZiB0aGUgc3BlY2lmaWNzLCBpcyB0byBleGFtaW5lIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIG1vcmUgY2xvc2VseSBhbmQsIGltcG9ydGFudGx5LCB0cmFjZSBhbGwgaXRzIGNhbGxlcnMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIHdpbGwgYmUgY3JpdGljYWwgdG8gZnVsbHkgZ3Jhc3BpbmcgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSBhbmQgbWFraW5nIHN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzIGluIHRoZSBsYXJnZXIgcGljdHVyZS4gU28sIGxldCdzIHN0YXJ0IGRpZ2dpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDEsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo1MS41NzM2NDExNTZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMxNzM5NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9icl9tcnAuYz0xNzE9c3RhdGljIHZvaWQgYnJfbXJwX3NrYl9jb21tb24oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGJyX21ycCAqbXJwKVxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODEtXFxubmV0L2JyaWRnZS9icl9tcnAuYzoxODI6c3RhdGljIHN0cnVjdCBza19idWZmICpicl9tcnBfYWxsb2NfdGVzdF9za2Ioc3RydWN0IGJyX21ycCAqbXJwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMTgzLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IG5ldF9icmlkZ2VfcG9ydCAqcCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM9Mjc3PXN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMwOS1cXHRcXHRpZiAoIW1ycC1cXHUwMDNldGVzdF9tb25pdG9yKSB7XFxubmV0L2JyaWRnZS9icl9tcnAuYzozMTA6XFx0XFx0XFx0c2tiID0gYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiKG1ycCwgcCxcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTMxMS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJfTVJQX1BPUlRfUk9MRV9QUklNQVJZKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI1LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMyNjpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzI3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1NFQ09OREFSWSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjM5OjUxLjYxNjgxODcwN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQ2NzY3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIENhbGwqKlxuXG5Pa2F5LCBzbyBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCBpcyBnZXR0aW5nIGNhbGxlZCAqc3BlY2lmaWNhbGx5KiBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhpcyBjYWxsLiBUaGUga2V5IGhlcmUgaXMgdG8gZmlndXJlIG91dCB3aGF0J3MgdHJpZ2dlcmluZyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGF0LiBXaGVyZSBpcyBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCAqaXRzZWxmKiBiZWluZyBpbnZva2VkPyBJcyBpdCBjYWxsZWQgZGlyZWN0bHksIG9yIHNjaGVkdWxlZD8gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgY2FsbGVycyBvZiBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCBvciBzZWUgd2hlcmUgaXQncyBiZWluZyBzY2hlZHVsZWQuIEtub3dpbmcgdGhlIGVudHJ5IHBvaW50cyB0byB0aGF0IGZ1bmN0aW9uIHdpbGwgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHdoYXQncyBoYXBwZW5pbmcgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAuIFRoaXMgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgdG8gcHJvcGVybHkgdW5kZXJzdGFuZCB0aGUgbGlmZWN5Y2xlIGFuZCBwb3RlbnRpYWwgaXNzdWVzIHN1cnJvdW5kaW5nIHRoZSBhbGxvY2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDM4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NTUuMDYxNDk3NTI2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODgyMDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9MjM3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqYnJfbXJwX2FsbG9jX2luX3Rlc3Rfc2tiKHN0cnVjdCBicl9tcnAgKm1ycCxcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMjc2LSAqL1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6Mjc3OnN0YXRpYyB2b2lkIGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2JyaWRnZS9icl9tcnAuYy0yNzgte1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz00OTU9aW50IGJyX21ycF9hZGQoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNTQwLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NTQxOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yaywgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKTtcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTU0Mi1cXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2bXJwLVxcdTAwM2Vpbl90ZXN0X3dvcmssIGJyX21ycF9pbl90ZXN0X3dvcmtfZXhwaXJlZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjM5OjU1LjEwNzM4MzY1NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODMxODQ0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gb2YgV29yayB3aXRoIGBicl9tcnBfYWRkYCoqXG5cbk9rYXksIHNvIHdlJ3JlIHN0YXJ0aW5nIGZyZXNoLCBhbmQgYGJyX21ycF9hZGRgIGlzIHRoZSBrZXkuIFJpZ2h0LCB0aGlzIGZ1bmN0aW9uIGFwcGVhcnMgdG8gYmUgd2hlcmUgZXZlcnl0aGluZyBraWNrcyBvZmYuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbnRyeSBwb2ludCwgdGhlIGluaXRpYWxpemF0aW9uLCB0aGUgc2V0LXVwLiBNeSBwcmltYXJ5IGZvY3VzIGlzIGFsd2F5cyBvbiB0aGUgZGVwZW5kZW5jaWVzLCBzbyBsZXQncyBxdWlja2x5IHNlZSB3aG8ncyBjYWxsaW5nIHRoaXMgYmVhc3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNhbGxlcnMgb2YgYGJyX21ycF9hZGRgIHNob3VsZCBnaXZlIG1lIHRoZSBpbml0aWFsIGNvbnRleHQsIHRoZSBvcmlnaW5hdGluZyBjb21wb25lbnRzLiBJcyBpdCB0cmlnZ2VyZWQgYnkgdXNlciBhY3Rpb25zLCBhIHNjaGVkdWxlciwgb3Igc29tZXRoaW5nIGVsc2U/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNydWNpYWwgZm9yIGFueSBpbi1kZXB0aCBhbmFseXNpcyBvciBkZWJ1Z2dpbmcgbGF0ZXIuIExldCdzIHNlZSB3aGF0IHdlIGhhdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTozOTo1Ny45OTA1Njk1OThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI1MzE2NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTQyNj1zdGF0aWMgdm9pZCBicl9tcnBfZGVsX2ltcGwoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTQ5NC0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjQ5NTppbnQgYnJfbXJwX2FkZChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtNDk2LXtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zMT1zdGF0aWMgaW50IGJyX21ycF9pbnN0YW5jZV9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNjEtXFx0aWYgKGNtZCA9PSBSVE1fU0VUTElOSylcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NjI6XFx0XFx0cmV0dXJuIGJyX21ycF9hZGQoYnIsIFxcdTAwMjZpbnN0KTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNjMtXFx0ZWxzZVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTU5PWVudW0gYnJfbXJwX2h3X3N1cHBvcnQge1xcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oLTY1LS8qIGJyX21ycC5jICovXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oOjY2OmludCBicl9tcnBfYWRkKHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9pbnN0YW5jZSAqaW5zdGFuY2UpO1xcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZV9tcnAuaC02Ny1pbnQgYnJfbXJwX2RlbChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5zdGFuY2UgKmluc3RhbmNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6Mzk6NTguMDMzMTA0MzI4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4OTcwNjExMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTVJQIEluc3RhbmNlIFBhcnNpbmcgRnVuY3Rpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhpcyBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX2luc3RhbmNlX3BhcnNlYCBpbiBgbmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jYCwgd2hpY2gsIGlmIEkgcmVjYWxsIGNvcnJlY3RseSwgaXMgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIG5ldGxpbmsgaW50ZXJmYWNlLiBHb29kLiBUaGF0IGNvbmZpcm1zIGl0J3MgcmVhY2hhYmxlIGFuZCBhcHBlYXJzIHRvIGJlIGZ1bmN0aW9uaW5nLCB3aGljaCBpcyBhIGtleSBzdGFydGluZyBwb2ludC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS5cblxuTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpczogV2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSB0byBjb250cm9sIHRoaXMgdGhpbmc/IEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGNvbXBvbmVudCBpcyBhY3R1YWxseSBlbmFibGVkIG9yIGRpc2FibGVkLCBhbmQgd2hhdCBwYXJhbWV0ZXJzIGNhbiBiZSB0d2Vha2VkLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwncyBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBleHBvc2VkIHRvIHRoZSB1c2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjc2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDEuMzIyODEzMzQyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzQ1ODY2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDEuMzY2MjgwMTgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTM0Nzc5NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb21waWxhdGlvbiBvZiBicl9tcnAubyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGBicl9tcnAub2AgaXMgYmVpbmcgYnVpbHQuIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcsIG9idmlvdXNseSwgaXMgdGhlIGBuZXQvYnJpZGdlL01ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnJpZGdlLXJlbGF0ZWQgb2JqZWN0IGZpbGVzIGFuZCBtb2R1bGVzIGFyZSBsaWtlbHkgYmVpbmcgY29tcGlsZWQuIExldCdzIHNlZSBpZiB0aGF0IE1ha2VmaWxlIHByb3ZpZGVzIHRoZSBkZXRhaWxzIEkgbmVlZCBvbiB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgYGJyX21ycC5vYC4gSXQncyBhIHN0YW5kYXJkIGFuZCBlZmZlY3RpdmUgYXBwcm9hY2ggZm9yIGZpZ3VyaW5nIG91dCB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBmbGFncy4gVGltZSB0byBnZXQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDU0OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjA0LjQ1OTc1OTkzOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyMTU5NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJfbXJwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfTkVURklMVEVSKSArPSBuZXRmaWx0ZXIvXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0yOC1cXG5uZXQvYnJpZGdlL01ha2VmaWxlOjI5OmJyaWRnZS0kKENPTkZJR19CUklER0VfTVJQKVxcdCs9IGJyX21ycF9zd2l0Y2hkZXYubyBicl9tcnAubyBicl9tcnBfbmV0bGluay5vXFxubmV0L2JyaWRnZS9NYWtlZmlsZS0zMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDQuNTAwOTc4MzI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDMzNDgwODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpdGVtIGlzIGBDT05GSUdfQlJJREdFX01SUGAuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhpcyBsaWtlbHkgcmVsYXRlcyB0byBzb21lIGtpbmQgb2YgYnJpZGdpbmcgZnVuY3Rpb25hbGl0eSwgcHJvYmFibHkgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2hlY2sgdGhlIGBuZXQvYnJpZGdlL0tjb25maWdgIGZpbGUuIFRoYXQncyB3aGVyZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSB0eXBpY2FsbHkgZGVmaW5lZCwgYW5kIHdoZXJlIHRoZSBoZWxwIHRleHQsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzIGFzc29jaWF0ZWQgd2l0aCBgQlJJREdFX01SUGAgd2lsbCByZXNpZGUuIEkgbmVlZCB0byBnZXQgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgdGhpcyBvcHRpb24gKmRvZXMqIGFuZCB3aGF0IGl0J3MgZGVwZW5kZW50IG9uLiBMb29raW5nIGF0IHRoZSBLY29uZmlnIHdpbGwgbGV0IG1lIGZpbmQgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyB1c2VkLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhcnRpY3VsYXIgY29uZmlnIGl0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MzQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDowNy42NDQzMjg0MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzQwMDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MDcuNjg4NjcyNTE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3OTAyMDUzNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEJSSURHRV9NUlBgOlxuXG4qKkFuYWx5emluZyBCUklER0VfTVJQIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQlJJREdFX01SUGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV2ZXJ5dGhpbmcgdGhpcyB0aGluZyBsZWFucyBvbiDigJMgYWxsIHRoZSBvdGhlciBjb21wb25lbnRzLCBzZXJ2aWNlcywgZGF0YSBzb3VyY2VzLCB5b3UgbmFtZSBpdCDigJMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBwb3RlbnRpYWwgYmxhc3QgcmFkaXVzIG9mIGFueSBjaGFuZ2VzLCBwaW5wb2ludGluZyB0aGUgcm9vdCBjYXVzZSBvZiBpc3N1ZXMsIGFuZCBlbnN1cmluZyBldmVyeXRoaW5nIHN0YXlzIGNvaGVzaXZlLlxuXG5JJ2xsIG5lZWQgdG8gY29uc2lkZXIgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IGRlcGVuZGVuY2llcy4gRGlyZWN0IG9uZXMgYXJlIHRoZSBvYnZpb3VzIHRoaW5ncyBgQlJJREdFX01SUGAgY2FsbHMgZGlyZWN0bHkgb3IgaXMgZGlyZWN0bHkgbGlua2VkIHRvLiBUaGUgaW5kaXJlY3Qgb25lcyBhcmUgYSBiaXQgdHJpY2tpZXI7IHRoZXNlIGFyZSBjb21wb25lbnRzIHRoYXQgYEJSSURHRV9NUlBgIHJlbGllcyBvbiwgYnV0IG9ubHkgdGhyb3VnaCBvdGhlciBzeXN0ZW1zIG9yIHNlcnZpY2VzLiBNaXNzIG9uZSBvZiB0aG9zZSwgYW5kIHlvdSdyZSBpbiBmb3IgYSB3b3JsZCBvZiBodXJ0IGRvd24gdGhlIGxpbmUuXG5cbkknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCBhIGRlcGVuZGVuY3kgZ3JhcGgsIG9yIGF0IGxlYXN0IGEgaGlnaC1sZXZlbCBkaWFncmFtLiBJIGNhbiB1c2UgdGhhdCB0byB2aXN1YWxpemUgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgY2hva2Vwb2ludHMgb3Igc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLiBGcm9tIHRoZXJlLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGFjdHVhbCBjb2RlIGFuZCBjb25maWd1cmF0aW9ucyB0byBjb25maXJtIG15IGFzc3VtcHRpb25zIGFuZCB1bmNvdmVyIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLCBsaWtlIGltcGxpY2l0IGFzc3VtcHRpb25zIGFib3V0IHRoZSBvcmRlciBvZiBleGVjdXRpb24gb3Igc3BlY2lmaWMgZGF0YSBmb3JtYXRzLlxuXG5UaGVuLCB0aGVyZSdzIHRoZSBxdWVzdGlvbiBvZiB2ZXJzaW9uaW5nLiBXaGF0IHZlcnNpb25zIG9mIHRob3NlIGRlcGVuZGVudCBjb21wb25lbnRzIGFyZSB3ZSBleHBlY3Rpbmc/IEFyZSB0aGVyZSBhbnkga25vd24gY29tcGF0aWJpbGl0eSBpc3N1ZXM/IERvIHdlIGhhdmUgYSBjbGVhciB1cGdyYWRlIHBhdGg/IEknbGwgbmVlZCB0byBmYWN0b3IgYWxsIG9mIHRoYXQgaW4uXG5cbkVzc2VudGlhbGx5LCBJIHdhbnQgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBtYXAgb2YgYEJSSURHRV9NUlBgJ3MgZW52aXJvbm1lbnQsIHdoaWNoIHdpbGwgYWxsb3cgbWUgdG8gbWFrZSBpbmZvcm1lZCBkZWNpc2lvbnMgYWJvdXQgbW9kaWZ5aW5nLCBtYWludGFpbmluZywgYW5kIGludGVncmF0aW5nIGl0IHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0J3MgZ2V0IHRvIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxMS40Nzg4Nzk3NjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDY0OlxcdGNvbmZpZyBCUklER0VfTVJQXFxuICA2NTpcXHRcXHRib29sIFxcXCJNUlAgcHJvdG9jb2xcXFwiXFxuICA2NjpcXHRcXHRkZXBlbmRzIG9uIEJSSURHRVxcbiAgNjc6XFx0XFx0ZGVmYXVsdCBuXFxuICA2ODpcXHRcXHRoZWxwXFxuICA2OTpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBNUlBcXG4gIDcwOlxcdFxcdCAgcHJvdG9jb2wgdG8gZGV0ZWN0IGxvb3BzXFxuICA3MTpcXHRcXG4gIDcyOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4gIDc1OlxcdFxcbiAgNzY6XFx0Y29uZmlnIEJSSURHRV9DRk1cXG4gIDc3OlxcdFxcdGJvb2wgXFxcIkNGTSBwcm90b2NvbFxcXCJcXG4gIDc4OlxcdFxcdGRlcGVuZHMgb24gQlJJREdFXFxuICA3OTpcXHRcXHRoZWxwXFxuICA4MDpcXHRcXHQgIElmIHlvdSBzYXkgWSBoZXJlLCB0aGVuIHRoZSBFdGhlcm5ldCBicmlkZ2Ugd2lsbCBiZSBhYmxlIHRvIHJ1biBDRk1cXG4gIDgxOlxcdFxcdCAgcHJvdG9jb2wgYWNjb3JkaW5nIHRvIDgwMi4xUSBzZWN0aW9uIDEyLjE0XFxuICA4MjpcXHRcXG4gIDgzOlxcdFxcdCAgU2F5IE4gdG8gZXhjbHVkZSB0aGlzIHN1cHBvcnQgYW5kIHJlZHVjZSB0aGUgYmluYXJ5IHNpemUuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjExLjQ3ODkzMzM0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjYxNDcyMzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTVJQIEJyaWRnZSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBNUlAgYnJpZGdlIGZ1bmN0aW9uYWxpdHkuIEl0IGxvb2tzIGxpa2UgYEJSSURHRV9NUlBgIGlzIGNvbnRpbmdlbnQgb24gaGF2aW5nIGBCUklER0VgIGVuYWJsZWQsIHdoaWNoIG1ha2VzIHNlbnNlLiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBlbnN1cmUgYXJlIHNldCBhcmUsIHRoZXJlZm9yZSwgYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGhlcmUuIFRoZSBvbmVzIHRoYXQgaW1tZWRpYXRlbHkgc3RhbmQgb3V0IGFyZSBgYnJfbXJwX2FsbG9jX3Rlc3Rfc2tiYCwgYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAsIGBicl9tcnBfYWRkYCwgYW5kIGBicl9tcnBfaW5zdGFuY2VfcGFyc2VgLiBBIHF1aWNrIGdsYW5jZSByZXZlYWxzIHRoYXQgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYW5kIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgIGFyZSBkZWNsYXJlZCBgc3RhdGljYCwgd2hpY2ggaXMgd29ydGggcmVtZW1iZXJpbmcuIEhvd2V2ZXIsIGBicl9tcnBfYWRkYCBpcyAqbm90KiBzdGF0aWMsIHNvIHRoYXQgaXMgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgdGhvdWdoIHN0aWxsIHdpdGhpbiB0aGUgcmVhbG0gb2YgdW5kZXJzdGFuZGluZy5cblxuQnV0IHdhaXQgYSBtb21lbnQuLi5JIHNob3VsZCBwcm9iYWJseSBjaGVjayBvdXQgYGJyX21ycF9zdGFydF90ZXN0YCB3aGljaCBzZWVtcyBsaWtlIHRoZSBvbmUgdGhhdCdzIHNjaGVkdWxpbmcgdGhlIHdvcmssIG5vdyAqdGhhdCogaXMgaW50ZXJlc3RpbmcuIExldCdzIGRlbHZlIGludG8gdGhhdCBvbmUgYSBiaXQgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjE1Ljc0MDQwNzdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNDAzNzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9zdGFydF90ZXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9icmlkZ2UvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvYnJfbXJwLmM9NjY5PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTY5OS0gKi9cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjcwMDppbnQgYnJfbXJwX3N0YXJ0X3Rlc3Qoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmM6NzAxOlxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG5uZXQvYnJpZGdlL2JyX21ycC5jLTcwMi17XFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MTk1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoxOTY6YnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCArIDFdID0ge1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0xOTctXFx0W0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX1VOU1BFQ11cXHQ9IHsgLnR5cGUgPSBOTEFfUkVKRUNUIH0sXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA0LVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDU6c3RhdGljIGludCBicl9tcnBfc3RhcnRfdGVzdF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBubGF0dHIgKmF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIwNi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjA4LVxcdHN0cnVjdCBubGF0dHIgKnRiW0lGTEFfQlJJREdFX01SUF9TVEFSVF9URVNUX01BWCArIDFdO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYzoyMDk6XFx0c3RydWN0IGJyX21ycF9zdGFydF90ZXN0IHRlc3Q7XFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMC1cXHRpbnQgZXJyO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTIxMi1cXHRlcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF9NQVgsIGF0dHIsXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIxMzpcXHRcXHRcXHQgICAgICAgYnJfbXJwX3N0YXJ0X3Rlc3RfcG9saWN5LCBleHRhY2spO1xcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMTQtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0yMzctXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jOjIzODpcXHRyZXR1cm4gYnJfbXJwX3N0YXJ0X3Rlc3QoYnIsIFxcdTAwMjZ0ZXN0KTtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtMjM5LX1cXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYz0zNTY9aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmMtNDE0LVxcdGlmICh0YltJRkxBX0JSSURHRV9NUlBfU1RBUlRfVEVTVF0pIHtcXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6NDE1OlxcdFxcdGVyciA9IGJyX21ycF9zdGFydF90ZXN0X3BhcnNlKGJyLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy00MTYtXFx0XFx0XFx0XFx0XFx0ICAgICAgdGJbSUZMQV9CUklER0VfTVJQX1NUQVJUX1RFU1RdLFxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlX21ycC5oPTc0PWludCBicl9tcnBfc2V0X3Jpbmdfcm9sZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfcmluZ19yb2xlICpyb2xlKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmg6NzU6aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpiciwgc3RydWN0IGJyX21ycF9zdGFydF90ZXN0ICp0ZXN0KTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGVfbXJwLmgtNzYtaW50IGJyX21ycF9zZXRfaW5fc3RhdGUoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgYnJfbXJwX2luX3N0YXRlICpzdGF0ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjE1Ljc4MjgxNjQ1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTUzMTE0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byB0aGUgTVJQIFRlc3QgSW5pdGlhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBicl9tcnBfc3RhcnRfdGVzdGAgaXMgdGhlIGtleSBmdW5jdGlvbiwgdGhlIHBsYWNlIHdoZXJlIGV2ZXJ5dGhpbmcga2lja3Mgb2ZmIGluIHRoaXMgTVJQIHRlc3Rpbmcgc2NlbmFyaW8uIFRoYXQncyB3aGVyZSB0aGUgdGVzdCBnZXRzIGl0cyBjb25maWd1cmF0aW9uIGRpYWxlZCBpbiBhbmQsIGNydWNpYWxseSwgdGhlIHdvcmsgaXRzZWxmIGlzIHNjaGVkdWxlZC4gVGhhdCBtZWFucyBpdCdzIHRoZSBoZWFydCBvZiB0aGUgc2V0dXAgcGhhc2UuIEdpdmVuIHRoYXQgdW5kZXJzdGFuZGluZywgSSBuZWVkIHRvIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhhdCBmdW5jdGlvbi4gTGV0J3MgaGVhZCBvdmVyIHRvIGBuZXQvYnJpZGdlL2JyX21ycC5jYCBhbmQgZGlnIGludG8gYGJyX21ycF9zdGFydF90ZXN0YC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHBhcmFtZXRlcnMgYXJlIGJlaW5nIHNldCwgd2hhdCB0YXNrcyBhcmUgYmVpbmcgcXVldWVkLCBhbmQgd2hhdCBjb250cm9sIHN0cnVjdHVyZXMgYXJlIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IGEgcmVhbCBoYW5kbGUgb24gdGhlIHRlc3Rpbmcgc3RyYXRlZ3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxOS4wNzgxMzAxNDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9icl9tcnAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDA6XFx0aW50IGJyX21ycF9zdGFydF90ZXN0KHN0cnVjdCBuZXRfYnJpZGdlICpicixcXG4gNzAxOlxcdFxcdFxcdCAgICAgIHN0cnVjdCBicl9tcnBfc3RhcnRfdGVzdCAqdGVzdClcXG4gNzAyOlxcdHtcXG4gNzAzOlxcdFxcdHN0cnVjdCBicl9tcnAgKm1ycCA9IGJyX21ycF9maW5kX2lkKGJyLCB0ZXN0LVxcdTAwM2VyaW5nX2lkKTtcXG4gNzA0OlxcdFxcdGVudW0gYnJfbXJwX2h3X3N1cHBvcnQgc3VwcG9ydDtcXG4gNzA1OlxcdFxcbiA3MDY6XFx0XFx0aWYgKCFtcnApXFxuIDcwNzpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gNzA4OlxcdFxcbiA3MDk6XFx0XFx0LyogVHJ5IHRvIHB1c2ggaXQgdG8gdGhlIEhXIGFuZCBpZiBpdCBmYWlscyB0aGVuIGNvbnRpbnVlIHdpdGggU1dcXG4gNzEwOlxcdFxcdCAqIGltcGxlbWVudGF0aW9uIGFuZCBpZiB0aGF0IGFsc28gZmFpbHMgdGhlbiByZXR1cm4gZXJyb3IuXFxuIDcxMTpcXHRcXHQgKi9cXG4gNzEyOlxcdFxcdHN1cHBvcnQgPSBicl9tcnBfc3dpdGNoZGV2X3NlbmRfcmluZ190ZXN0KGJyLCBtcnAsIHRlc3QtXFx1MDAzZWludGVydmFsLFxcbiA3MTM6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0ZXN0LVxcdTAwM2VtYXhfbWlzcywgdGVzdC1cXHUwMDNlcGVyaW9kLFxcbiA3MTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICB0ZXN0LVxcdTAwM2Vtb25pdG9yKTtcXG4gNzE1OlxcdFxcdGlmIChzdXBwb3J0ID09IEJSX01SUF9OT05FKVxcbiA3MTY6XFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiA3MTc6XFx0XFxuIDcxODpcXHRcXHRpZiAoc3VwcG9ydCA9PSBCUl9NUlBfSFcpXFxuIDcxOTpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzIwOlxcdFxcbiA3MjE6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2ludGVydmFsID0gdGVzdC1cXHUwMDNlaW50ZXJ2YWw7XFxuIDcyMjpcXHRcXHRtcnAtXFx1MDAzZXRlc3RfZW5kID0gamlmZmllcyArIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlcGVyaW9kKTtcXG4gNzIzOlxcdFxcdG1ycC1cXHUwMDNldGVzdF9tYXhfbWlzcyA9IHRlc3QtXFx1MDAzZW1heF9taXNzO1xcbiA3MjQ6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X21vbml0b3IgPSB0ZXN0LVxcdTAwM2Vtb25pdG9yO1xcbiA3MjU6XFx0XFx0bXJwLVxcdTAwM2V0ZXN0X2NvdW50X21pc3MgPSAwO1xcbiA3MjY6XFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHN5c3RlbV9wZXJjcHVfd3EsIFxcdTAwMjZtcnAtXFx1MDAzZXRlc3Rfd29yayxcXG4gNzI3OlxcdFxcdFxcdFxcdCAgIHVzZWNzX3RvX2ppZmZpZXModGVzdC1cXHUwMDNlaW50ZXJ2YWwpKTtcXG4gNzI4OlxcdFxcbiA3Mjk6XFx0XFx0cmV0dXJuIDA7XFxuIDczMDpcXHR9XFxuIDczMTpcXHRcXG4gNzMyOlxcdC8qIFNldCBpbiBzdGF0ZSwgaW50IHN0YXRlIGNhbiBiZSBvbmx5IE9wZW4gb3IgQ2xvc2VkXFxuIDczMzpcXHQgKiBub3RlOiBhbHJlYWR5IGNhbGxlZCB3aXRoIHJ0bmxfbG9ja1xcbiA3MzQ6XFx0ICovXFxuIDczNTpcXHRpbnQgYnJfbXJwX3NldF9pbl9zdGF0ZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBicl9tcnBfaW5fc3RhdGUgKnN0YXRlKVxcbiA3MzY6XFx0e1xcbiA3Mzc6XFx0XFx0c3RydWN0IGJyX21ycCAqbXJwID0gYnJfbXJwX2ZpbmRfaW5faWQoYnIsIHN0YXRlLVxcdTAwM2Vpbl9pZCk7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdGlmICghbXJwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoxOS4wNzgyMjE1MjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMyNjQ5NjM1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBCcmlkZ2UgTVJQIFRlc3QgU2NoZWR1bGVyKipcblxuT2theSwgc28gdGhlIGBicl9tcnBfc3RhcnRfdGVzdGAgZnVuY3Rpb24gaXMga2V5IGhlcmUuIEl0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LCBzY2hlZHVsaW5nIHRoZSBgbXJwLVx1MDAzZXRlc3Rfd29ya2Agd2hpY2ggZXZlbnR1YWxseSBsZWFkcyB0byB0aGUgZXhlY3V0aW9uIG9mIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLiBUaGF0IGZ1bmN0aW9uIHRoZW4gY2FsbHMgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAsIHdoZXJlIHRoZSBwYXRjaCBhZGRyZXNzZXMgYSBtZW1vcnkgaW5pdGlhbGl6YXRpb24gcHJvYmxlbS4gVGhpcyBpcyBhIGNsYXNzaWM6IG1lbW9yeSBpbml0aWFsaXphdGlvbiBpc3N1ZXMgYXJlIGJyZWFkIGFuZCBidXR0ZXIgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggc3BlbmRpbmcgc29tZSBjeWNsZXMgaGVyZS5cblxuTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYSBmZXcgY3JpdGljYWwgc3ltYm9sczogc3BlY2lmaWNhbGx5LCBgYnJfbXJwX3N0YXJ0X3Rlc3RgLCBgYnJfbXJwX2FkZGAsIGFuZCBgYnJfbXJwX3BhcnNlYC4gYGJyX21ycF9zdGFydF90ZXN0YCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSB0ZXN0LCBgYnJfbXJwX2FkZGAgd2lsbCBsaWtlbHkgYmUgcmVzcG9uc2libGUgZm9yIGFkZGluZyBzdHVmZiAobGlrZWx5IHRyaWdnZXJzIGFsbG9jYXRpb24pLCBhbmQgYGJyX21ycF9wYXJzZWAgY291bGQgYmUgd2hlcmUgaW52YWxpZCBpbnB1dCBsZWFkcyB0byB0aGUgdnVsbmVyYWJpbGl0eS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHRocmVlLlxuXG5JJ2xsIGJlIHN1cmUgdG8gZW5hYmxlIHRoZSBgQlJJREdFYCBhbmQgYEJSSURHRV9NUlBgIGNvbmZpZ3VyYXRpb25zLCBhcyB0aGF0J3MgdGhlIGJhc2UgcmVxdWlyZW1lbnQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIG9yIHBvdGVudGlhbGx5IHVzZWZ1bCBjb25maWdzIHRoYXQgY291bGQgYWRkIGNvdmVyYWdlIGhlcmUuIEFsd2F5cyBnb29kIHRvIGJlIHRob3JvdWdoIGF0IHRoaXMgc3RhZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxMjUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoyMy40MDQ3MjA1MDlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODEyNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJSSURHRV9NUlBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9icmlkZ2UvS2NvbmZpZz01MD1jb25maWcgQlJJREdFX1ZMQU5fRklMVEVSSU5HXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctNjMtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY0OmNvbmZpZyBCUklER0VfTVJQXFxubmV0L2JyaWRnZS9LY29uZmlnLTY1LVxcdGJvb2wgXFxcIk1SUCBwcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MjMuNDQ2NTM1NjhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM2NDMwNDYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzOiBUaGUgQlJJREdFIFByb2plY3QqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEZpcnN0IHRoaW5nJ3MgZmlyc3Q6IGdvdHRhIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIGBCUklER0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhcnRpY3VsYXIgY29tcG9uZW50IGlzIGEgc3RhbmRhbG9uZSBwaWVjZSBvZiB3b3JrLCBvciBpZiBpdCdzIGludHJpY2F0ZWx5IHdvdmVuIGludG8gdGhlIGZhYnJpYyBvZiBvdGhlciBzeXN0ZW1zLiBJcyBgQlJJREdFYCBhIGxlYWYgbm9kZSBpbiB0aGUgZGVwZW5kZW5jeSBncmFwaCwgb3IgZG9lcyBpdCBoYXZlIHRlbnRhY2xlcyByZWFjaGluZyBvdXQ/IEFyZSB0aGVyZSB1cHN0cmVhbSBzeXN0ZW1zIHJlbHlpbmcgb24gaXRzIG91dHB1dHM/IERvZXMgaXQgZGVwZW5kIG9uIHNwZWNpZmljIGxpYnJhcmllcz8gQW55IG90aGVyIHNlcnZpY2VzPyBHb3R0YSBtYXAgdGhpcyBvdXQgYmVmb3JlIEkgZG8gYW55dGhpbmcgZWxzZS4gTmVlZCB0byBrbm93IHRoZSBicmVhZHRoIGFuZCBkZXB0aCBvZiBpdHMgaW50ZWdyYXRpb24gYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCB0b3VjaGluZyBpdC4gVGhpcyBpcyBiYXNlbGluZTogZXN0YWJsaXNoIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI2LjgxMDg0MjUwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNDQ4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJSSURHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2JyaWRnZS9LY29uZmlnLTUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjY6Y29uZmlnIEJSSURHRVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCI4MDIuMWQgRXRoZXJuZXQgQnJpZGdpbmdcXFwiXFxuLS1cXG5uZXQvYnJpZGdlL0tjb25maWctMzUtXFxubmV0L2JyaWRnZS9LY29uZmlnOjM2OmNvbmZpZyBCUklER0VfSUdNUF9TTk9PUElOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy0zNy1cXHRib29sIFxcXCJJR01QL01MRCBzbm9vcGluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy00OS1cXG5uZXQvYnJpZGdlL0tjb25maWc6NTA6Y29uZmlnIEJSSURHRV9WTEFOX0ZJTFRFUklOR1xcbm5ldC9icmlkZ2UvS2NvbmZpZy01MS1cXHRib29sIFxcXCJWTEFOIGZpbHRlcmluZ1xcXCJcXG4tLVxcbm5ldC9icmlkZ2UvS2NvbmZpZy02My1cXG5uZXQvYnJpZGdlL0tjb25maWc6NjQ6Y29uZmlnIEJSSURHRV9NUlBcXG5uZXQvYnJpZGdlL0tjb25maWctNjUtXFx0Ym9vbCBcXFwiTVJQIHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2JyaWRnZS9LY29uZmlnLTc1LVxcbm5ldC9icmlkZ2UvS2NvbmZpZzo3Njpjb25maWcgQlJJREdFX0NGTVxcbm5ldC9icmlkZ2UvS2NvbmZpZy03Ny1cXHRib29sIFxcXCJDRk0gcHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI2Ljg1NDE4OTM0N1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzODI0NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBzdW1tYXJpemVkLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyBhbmQgdGhpbmtpbmcgYWxvbmcgdGhlc2UgbGluZXM6XG5cbioqQ2hlY2tpbmcgYEJSSURHRWAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgYSBncmlwIG9uIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoaW5ncy4gRmlyc3Qgb3JkZXIgb2YgYnVzaW5lc3M6IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgbGFuZHNjYXBlIG9mIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIHRoZSBgQlJJREdFYCBzeXN0ZW0uIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBwb3RlbnRpYWwgaW1wYWN0cywgaWRlbnRpZnlpbmcgYW55IGx1cmtpbmcgY29uZmxpY3RzLCBvciBwaW5wb2ludGluZyBhcmVhcyB3aGVyZSB3ZSBtaWdodCBiZSB2dWxuZXJhYmxlIHRvIHVwc3RyZWFtIGNoYW5nZXMuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgZm91bmRhdGlvbnMgYXJlIHNvbGlkLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB3ZSBzdGFuZCwgc3BlY2lmaWNhbGx5IHdpdGggdGhlIGBCUklER0VgIHN5c3RlbSBiZWZvcmUgSSBtb3ZlIG9uLiBXaGF0IGRvZXMgdGhlIGRlcGVuZGVuY3kgdHJlZSBsb29rIGxpa2U/IEFyZSB3ZSByZWx5aW5nIG9uIGFueSBsaWJyYXJpZXMgdGhhdCBhcmUga25vd24gcGFpbiBwb2ludHMsIG9yIHRoYXQgYXJlIGFib3V0IHRvIHJlYWNoIGVuZC1vZi1saWZlPyBBIHF1aWNrIGRlcGVuZGVuY3kgYXVkaXQgaXMgbXkgc3RhcnRpbmcgcG9pbnQgaGVyZS4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBoYXZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDoyOS43OTgwMTY1MTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODMyNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2JyaWRnZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0Y29uZmlnIEJSSURHRVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIjgwMi4xZCBFdGhlcm5ldCBCcmlkZ2luZ1xcXCJcXG4gICA4OlxcdFxcdHNlbGVjdCBMTENcXG4gICA5OlxcdFxcdHNlbGVjdCBTVFBcXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgSWYgeW91IHNheSBZIGhlcmUsIHRoZW4geW91ciBMaW51eCBib3ggd2lsbCBiZSBhYmxlIHRvIGFjdCBhcyBhblxcbiAgMTI6XFx0XFx0ICBFdGhlcm5ldCBicmlkZ2UsIHdoaWNoIG1lYW5zIHRoYXQgdGhlIGRpZmZlcmVudCBFdGhlcm5ldCBzZWdtZW50cyBpdFxcbiAgMTM6XFx0XFx0ICBpcyBjb25uZWN0ZWQgdG8gd2lsbCBhcHBlYXIgYXMgb25lIEV0aGVybmV0IHRvIHRoZSBwYXJ0aWNpcGFudHMuXFxuICAxNDpcXHRcXHQgIFNldmVyYWwgc3VjaCBicmlkZ2VzIGNhbiB3b3JrIHRvZ2V0aGVyIHRvIGNyZWF0ZSBldmVuIGxhcmdlclxcbiAgMTU6XFx0XFx0ICBuZXR3b3JrcyBvZiBFdGhlcm5ldHMgdXNpbmcgdGhlIElFRUUgODAyLjEgc3Bhbm5pbmcgdHJlZSBhbGdvcml0aG0uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjI5Ljc5ODEwMTI3NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzU2MjQ0Nzc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqRm9jdXNpbmcgSW4gb24gQlJJREdFIENvbmZpZ3VyYXRpb24gYW5kIE1SUCBQYXJzaW5nKipcblxuUmlnaHQsIHNvIGZvciB0aGlzIGBCUklER0VgIGNvbXBvbmVudCwgSSBkb24ndCBzZWUgYW55IHdlaXJkIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCDigJMgdGhhdCdzIGdvb2QgbmV3cy4gU28sIHRoZSBtYWluIGNvbmZpZ3VyYXRpb25zIHRvIGtlZXAgaW4gbWluZCBhcmUgYEJSSURHRWAgaXRzZWxmIGFuZCBgQlJJREdFX01SUGAuIE5vdywgSSBuZWVkIHRvIHpvb20gaW4gb24gYSBmZXcga2V5IHN5bWJvbHM6IGBicl9tcnBfc3RhcnRfdGVzdGAsIGBicl9tcnBfYWRkYCwgYW5kIGVzcGVjaWFsbHkgYGJyX21ycF9wYXJzZWAuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBjaGVjayB3aGVyZSBgYnJfbXJwX3BhcnNlYCBpcyBhY3R1YWxseSAqY2FsbGVkKiB3aXRoaW4gdGhlIGNvZGUuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgZ3JhcGggd2lsbCByZWFsbHkgY2xhcmlmeSBpdHMgcm9sZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhhdCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTA4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDozMy4xNTQzNDgwODVaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzEyNDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9wYXJzZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM9MzI0PXN0YXRpYyBpbnQgYnJfbXJwX3N0YXJ0X2luX3Rlc3RfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnBfbmV0bGluay5jLTM1NS1cXG5uZXQvYnJpZGdlL2JyX21ycF9uZXRsaW5rLmM6MzU2OmludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfbXJwX25ldGxpbmsuYy0zNTctXFx0XFx0IHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jPTgwOT1zdGF0aWMgaW50IGJyX2Fmc3BlYyhzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsXFxuLS1cXG5uZXQvYnJpZGdlL2JyX25ldGxpbmsuYy04NDgtXFx0XFx0Y2FzZSBJRkxBX0JSSURHRV9NUlA6XFxubmV0L2JyaWRnZS9icl9uZXRsaW5rLmM6ODQ5OlxcdFxcdFxcdGVyciA9IGJyX21ycF9wYXJzZShiciwgcCwgYXR0ciwgY21kLCBleHRhY2spO1xcbm5ldC9icmlkZ2UvYnJfbmV0bGluay5jLTg1MC1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg9MjA2OD11bnNpZ25lZCBsb25nIGJyX3RpbWVyX3ZhbHVlKGNvbnN0IHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcik7XFxuLS1cXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDczLSNpZiBJU19FTkFCTEVEKENPTkZJR19CUklER0VfTVJQKVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oOjIwNzQ6aW50IGJyX21ycF9wYXJzZShzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsIHN0cnVjdCBuZXRfYnJpZGdlX3BvcnQgKnAsXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmgtMjA3NS1cXHRcXHQgc3RydWN0IG5sYXR0ciAqYXR0ciwgaW50IGNtZCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oPTIwNzg9aW50IGJyX21ycF9maWxsX2luZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9icmlkZ2UgKmJyKTtcXG5uZXQvYnJpZGdlL2JyX3ByaXZhdGUuaC0yMDc5LSNlbHNlXFxubmV0L2JyaWRnZS9icl9wcml2YXRlLmg6MjA4MDpzdGF0aWMgaW5saW5lIGludCBicl9tcnBfcGFyc2Uoc3RydWN0IG5ldF9icmlkZ2UgKmJyLCBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbm5ldC9icmlkZ2UvYnJfcHJpdmF0ZS5oLTIwODEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBubGF0dHIgKmF0dHIsIGludCBjbWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDE5OjQwOjMzLjE5ODY2MzY5NVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk1MTIwOTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkZvY3VzaW5nIG9uIE1SUCBOZXRsaW5rIFBhcnNpbmcqKlxuXG5Pa2F5LCBzbyBgYnJfbXJwX3BhcnNlYCBpcyB0aGUgY2VudHJhbCBmdW5jdGlvbiBmb3IgaGFuZGxpbmcgTVJQIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQgbWFrZXMgc2Vuc2UsIGl0J3MgdGhlIGVudHJ5IHBvaW50LiBJdCBhcHBlYXJzIHRoYXQgYGJyX21ycF9wYXJzZWAgdGhlbiBjYWxscyBgYnJfbXJwX3N0YXJ0X3Rlc3RfcGFyc2VgLCB3aGljaCBpbiB0dXJuLCBnb2VzIG9uIHRvIGNhbGwgYGJyX21ycF9zdGFydF90ZXN0YC4gR2l2ZW4gdGhpcyBmbG93LCBgYnJfbXJwX3BhcnNlYCBzZWVtcyBsaWtlIHRoZSBtb3N0IGxvZ2ljYWwgc3ltYm9sIHRvIHplcm8gaW4gb24gZm9yIGluaXRpYWwgaW52ZXN0aWdhdGlvbi5cblxuTm93LCBJJ20gY3VyaW91cyBhYm91dCB0aGUgYWxsb2NhdGlvbiBwcm9jZXNzLiBMZXQncyBzZWUgaWYgYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgaXMgY2FsbGVkIGVsc2V3aGVyZS4gVW5kZXJzdGFuZGluZyBpdHMgdXNhZ2Ugb3V0c2lkZSBvZiB0aGlzIHNwZWNpZmljIHBhdGggbWlnaHQgdW5jb3ZlciBzb21lIGludGVyZXN0aW5nIHJlbGF0aW9uc2hpcHMgb3IgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSB3YW50IHRvIHNlZSB3aGVyZSBlbHNlIGl0J3MgdXNlZDsgdGhhdCBjb3VsZCBnaXZlIG1lIHNvbWUgdmFsdWFibGUgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDozNi45OTM3ODY3MjhaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDk4MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyX21ycF9hbGxvY190ZXN0X3NrYlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvYnJpZGdlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvYnJpZGdlL2JyX21ycC5jPTE3MT1zdGF0aWMgdm9pZCBicl9tcnBfc2tiX2NvbW1vbihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgYnJfbXJwICptcnApXFxuLS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jLTE4MS1cXG5uZXQvYnJpZGdlL2JyX21ycC5jOjE4MjpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmJyX21ycF9hbGxvY190ZXN0X3NrYihzdHJ1Y3QgYnJfbXJwICptcnAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0xODMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbmV0X2JyaWRnZV9wb3J0ICpwLFxcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYz0yNzc9c3RhdGljIHZvaWQgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzA5LVxcdFxcdGlmICghbXJwLVxcdTAwM2V0ZXN0X21vbml0b3IpIHtcXG5uZXQvYnJpZGdlL2JyX21ycC5jOjMxMDpcXHRcXHRcXHRza2IgPSBicl9tcnBfYWxsb2NfdGVzdF9za2IobXJwLCBwLFxcbm5ldC9icmlkZ2UvYnJfbXJwLmMtMzExLVxcdFxcdFxcdFxcdFxcdFxcdCAgICBCUl9NUlBfUE9SVF9ST0xFX1BSSU1BUlkpO1xcbi0tXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjUtXFx0XFx0aWYgKCFtcnAtXFx1MDAzZXRlc3RfbW9uaXRvcikge1xcbm5ldC9icmlkZ2UvYnJfbXJwLmM6MzI2OlxcdFxcdFxcdHNrYiA9IGJyX21ycF9hbGxvY190ZXN0X3NrYihtcnAsIHAsXFxubmV0L2JyaWRnZS9icl9tcnAuYy0zMjctXFx0XFx0XFx0XFx0XFx0XFx0ICAgIEJSX01SUF9QT1JUX1JPTEVfU0VDT05EQVJZKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMTk6NDA6MzcuMDM5MjkwMTA4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTA0MzA0MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgYSBCcmlkZ2UgTVJQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIGZpeCwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgYSB2dWxuZXJhYmlsaXR5IG9yIHBvdGVudGlhbCBpc3N1ZSBhcmlzaW5nIGZyb20gYGJyX21ycF90ZXN0X3dvcmtfZXhwaXJlZGAuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgd2l0aGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgLiBJdCBhcHBlYXJzIHRoYXQgYHNrYl9wdXRgIHdhcyBiZWluZyBtaXN1c2VkIHRvIHBhZCBkYXRhIHdpdGhpbiB0aGUgcGFja2V0LCB3aXRob3V0IGVuc3VyaW5nIHRoYXQgdGhpcyBwYWRkaW5nIHdhcyB6ZXJvZWQuIFRoaXMgY291bGQgbGVhZCB0byB0aGUgbGVha2FnZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgaW50cm9kdWNlIG90aGVyIHN1YnRsZSBwcm9ibGVtcyBkb3duIHRoZSBsaW5lIOKAkyBhIGNsYXNzaWMgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcmVhbGx5LCBhbmQgb25lIHRoYXQgY291bGQgYml0ZSB5b3UgbGF0ZXIgb24gd2l0aCBzdWJ0bGUgYnVncy5cblxuVGhlIGZpeCwgdGhhbmtmdWxseSwgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBlbGVnYW50LiBJdCByZXBsYWNlcyB0aGUgcHJvYmxlbWF0aWMgYHNrYl9wdXRgIGNhbGwgd2l0aCBgc2tiX3B1dF96ZXJvYCBmb3IgYm90aCB0aGUgVHlwZS1MZW5ndGgtVmFsdWUgKFRMVikgc2VjdGlvbiBhbmQgdGhlIHBhZGRpbmcuIFRoaXMgaXMgZXhhY3RseSB3aGF0IEknZCBleHBlY3Q7IHplcm9pbmcgdGhlIG1lbW9yeSBpcyBhYnNvbHV0ZWx5IHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIFRoZSBtb3JlIGludGVyZXN0aW5nIHRoaXMgZ2V0cywgdGhlIG1vcmUgSSdtIGdvaW5nIHRvIGxvb2sgYXQgb3RoZXIgcG9zc2libGUgbWVtb3J5IGxlYWtzLlxuXG5UaGlzIGZpeCBpcyBmdW5jdGlvbmFsbHkgc291bmQgYW5kLCBiYXNlZCBvbiB0aGUgY29udGV4dCwgaXMgcmVhY2hhYmxlIGNvZGUsIHNvIHRoYXQncyBnb29kLiBOb3csIEkgc2hvdWxkIG1ha2Ugc3VyZSBteSB1bmRlcnN0YW5kaW5nIG1hdGNoZXMgdXAgd2l0aCB0aGUgY29kZSdzIGludGVuZGVkIGJlaGF2aW9yLiBUaGF0IGxlYWRzIG1lIHRvIHRoZSBrZXkgc3ltYm9scyBoZXJlLiBUaGUgZmxvdyBvZiBldmVudHMgc2VlbXMgdG8gZGVwZW5kIG9uOlxuXG4qICAgYGJyX21ycF9zdGFydF90ZXN0YCAtIFN0YXJ0aW5nIHRoZSB0ZXN0IHByb2Nlc3MgZm9yIE1SUC5cbiogICBgYnJfbXJwX2FkZGAgLSBBZGRpbmcgZnJhbWVzIHRvIHRoZSBNUlAgcHJvY2Vzcy5cbiogICBgYnJfbXJwX3BhcnNlYCAtIEhhbmRsaW5nIGFuZCBwYXJzaW5nIGFueSBpbmNvbWluZyBNUlAgZnJhbWVzLlxuXG5JJ20gYWxzbyBsb29raW5nIGF0IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uczogYEJSSURHRWAgYW5kIGBCUklER0VfTVJQYC4gVGhlc2UgdGVsbCBtZSB0aGF0IHRoZSBmaXggaXMgc3BlY2lmaWMgdG8gYnJpZGdlIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBNUlAgcHJvdG9jb2wgd2l0aGluIGEgYnJpZGdpbmcgZW52aXJvbm1lbnQsIGFzIGV4cGVjdGVkLlxuXG5SaWdodCwgd2l0aCB0aGF0IGFuYWx5c2lzIGNvbXBsZXRlLCBJJ20gZ29pbmcgdG8gbm93IGNhbGwgdGhlIGZ1bmN0aW9uIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDEzLCJPdXRwdXRUb2tlbnMiOjE2MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQxOTo0MDo0Mi43Mjk3MjMyMDhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzI5MzE5MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJJREdFXCIsXG4gICAgXCJCUklER0VfTVJQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJfbXJwX3N0YXJ0X3Rlc3RcIixcbiAgICBcImJyX21ycF9hZGRcIixcbiAgICBcImJyX21ycF9wYXJzZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3VlIGluIGBicl9tcnBfYWxsb2NfdGVzdF9za2JgIGJ5IHJlcGxhY2luZyBgc2tiX3B1dGAgd2l0aCBgc2tiX3B1dF96ZXJvYCBmb3IgdGhlIFRMViBhbmQgcGFkZGluZy4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBgYnJfbXJwX3Rlc3Rfd29ya19leHBpcmVkYCwgd2hpY2ggaXMgc2NoZWR1bGVkIGJ5IGBicl9tcnBfc3RhcnRfdGVzdGAgd2hlbiBjb25maWd1cmluZyBNUlAgdGVzdHMgdmlhIG5ldGxpbmsuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUklER0VcIixcbiAgICBcIkJSSURHRV9NUlBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicl9tcnBfc3RhcnRfdGVzdFwiLFxuICAgIFwiYnJfbXJwX2FkZFwiLFxuICAgIFwiYnJfbXJwX3BhcnNlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUgaW4gYGJyX21ycF9hbGxvY190ZXN0X3NrYmAgYnkgcmVwbGFjaW5nIGBza2JfcHV0YCB3aXRoIGBza2JfcHV0X3plcm9gIGZvciB0aGUgVExWIGFuZCBwYWRkaW5nLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIGBicl9tcnBfdGVzdF93b3JrX2V4cGlyZWRgLCB3aGljaCBpcyBzY2hlZHVsZWQgYnkgYGJyX21ycF9zdGFydF90ZXN0YCB3aGVuIGNvbmZpZ3VyaW5nIE1SUCB0ZXN0cyB2aWEgbmV0bGluay4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[1] Phase: Succeeded StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 19:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 19:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2] Phase: Succeeded StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 19:41:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 19:40:55 +0000 UTC FinishedAt: 2026-07-30 19:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2752787830/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 19:41:05 +0000 UTC FinishedAt: 2026-07-30 19:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 19:41:05 +0000 UTC FinishedAt: 2026-07-30 19:56:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8e390ac9-855c-4ac4-b83c-3c370def49a9,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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2752787830/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": "b9b37e84-62f5-40a4-a5f0-587b8031194d", "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-workflowcf8f4/series-workflowcf8f4-build-action-3615117452/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 19:41:05 +0000 UTC FinishedAt: 2026-07-30 19:56:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8e390ac9-855c-4ac4-b83c-3c370def49a9,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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2752787830/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": "b9b37e84-62f5-40a4-a5f0-587b8031194d", "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-workflowcf8f4/series-workflowcf8f4-build-action-3615117452/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 19:56:53 +0000 UTC FinishedAt: 2026-07-30 19:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 19:56:53 +0000 UTC FinishedAt: 2026-07-30 19:56:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 19:56:53 +0000 UTC FinishedAt: 2026-07-30 19:57:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 19:56:53 +0000 UTC FinishedAt: 2026-07-30 19:56:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2593411593/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 19:57:03 +0000 UTC FinishedAt: 2026-07-30 19:59:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 19:57:03 +0000 UTC FinishedAt: 2026-07-30 19:59:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b9b37e84-62f5-40a4-a5f0-587b8031194d,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-workflowcf8f4/series-workflowcf8f4-build-action-3615117452/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-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 19:59:23 +0000 UTC FinishedAt: 2026-07-30 19:59:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 19:59:23 +0000 UTC FinishedAt: 2026-07-30 19:59:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 19:59:23 +0000 UTC FinishedAt: 2026-07-30 20:21:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 19:59:23 +0000 UTC FinishedAt: 2026-07-30 20:21:43 +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:*8e390ac9-855c-4ac4-b83c-3c370def49a9,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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2593411593/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": "475b9d84-7df1-4cf9-b570-62bcbf61c352", "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-workflowcf8f4/series-workflowcf8f4-build-action-4032910309/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 19:59:23 +0000 UTC FinishedAt: 2026-07-30 20:21:32 +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:*8e390ac9-855c-4ac4-b83c-3c370def49a9,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-workflowcf8f4/series-workflowcf8f4-convert-artifact-2593411593/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": "475b9d84-7df1-4cf9-b570-62bcbf61c352", "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-workflowcf8f4/series-workflowcf8f4-build-action-4032910309/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 20:21:43 +0000 UTC FinishedAt: 2026-07-30 20:21:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 20:21:43 +0000 UTC FinishedAt: 2026-07-30 20:21:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 20:21:43 +0000 UTC FinishedAt: 2026-07-30 20:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 20:21:43 +0000 UTC FinishedAt: 2026-07-30 20:23:36 +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:*475b9d84-7df1-4cf9-b570-62bcbf61c352,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-workflowcf8f4/series-workflowcf8f4-build-action-4032910309/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-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*b9b37e84-62f5-40a4-a5f0-587b8031194d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*475b9d84-7df1-4cf9-b570-62bcbf61c352,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-workflowcf8f4/series-workflowcf8f4-build-action-3615117452/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-workflowcf8f4/series-workflowcf8f4-build-action-4032910309/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 20:24:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 20:23:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowcf8f4/series-workflowcf8f4-convert-artifact-3453817182/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 20:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 20:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 20:23:45 +0000 UTC FinishedAt: 2026-07-30 20:23:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 20:24:07 +0000 UTC FinishedAt: 2026-07-30 23:29:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcf8f4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["br_mrp_start_test","br_mrp_add","br_mrp_parse"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"451c9075d6c53f2438d110addbeeeea6fac18567","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRIDGE","BRIDGE_MRP"],"series_id":"695e3a4d-5bd4-4cb2-9d89-54a30adc2bdf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 20:24:07 +0000 UTC FinishedAt: 2026-07-30 23:29:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b9b37e84-62f5-40a4-a5f0-587b8031194d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*475b9d84-7df1-4cf9-b570-62bcbf61c352,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-workflowcf8f4/series-workflowcf8f4-build-action-3615117452/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-workflowcf8f4/series-workflowcf8f4-build-action-4032910309/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-workflowcf8f4/series-workflowcf8f4-convert-artifact-3453817182/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,}