Name: series-workflows84sf Phase: Succeeded StartedAt: 2026-08-04 06:24:35 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[0] Phase: Succeeded StartedAt: 2026-08-04 06:24:35 +0000 UTC FinishedAt: 2026-08-04 06:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 06:24:35 +0000 UTC FinishedAt: 2026-08-04 06:41:21 +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": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "5b1e64b5-789d-4e84-941c-478b6194958a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_fdb_delete_bulk", "vxlan_stop", "vxlan_dellink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWMzODc1NTkxMjRmNGFlNDI2YzRmMzZlN2RiODYwNzQ2ODU0MzAzM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCBkODM0YTQ4NjVhZWNjLi5hMDBkZjEyN2RhODI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbkBAIC0zMDU4LDYgJiM0MzszMDU4LDExIEBAIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuIFx0XHRpZiAoIXZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhkZXNjLCByZCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzQzO1x0XHRpZiAobGlzdF9pc19zaW5ndWxhcihcdTAwMjZmLVx1MDAzZXJlbW90ZXMpKSB7XG4mIzQzO1x0XHRcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0dnhsYW5fZmRiX2RzdF9kZXN0cm95KHZ4bGFuLCBmLCByZCwgdHJ1ZSk7XG4gXHRcdHJlbW90ZXNfZmx1c2hlZCA9IHRydWU7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWMzODc1NTkxMjRmNGFlNDI2YzRmMzZlN2RiODYwNzQ2ODU0MzAzMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKaW5kZXggZDgzNGE0ODY1YWVjYy4uYTAwZGYxMjdkYTgyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMzA1OCw2ICYjNDM7MzA1OCwxMSBAQCB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwKIAkJaWYgKCF2eGxhbl9mZGJfZmx1c2hfcmVtb3RlX21hdGNoZXMoZGVzYywgcmQpKQogCQkJY29udGludWU7CiAKJiM0MzsJCWlmIChsaXN0X2lzX3Npbmd1bGFyKCZhbXA7Zi0mZ3Q7cmVtb3RlcykpIHsKJiM0MzsJCQkqcF9kZXN0cm95X2ZkYiA9IHRydWU7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQomIzQzOwogCQl2eGxhbl9mZGJfZHN0X2Rlc3Ryb3kodnhsYW4sIGYsIHJkLCB0cnVlKTsKIAkJcmVtb3Rlc19mbHVzaGVkID0gdHJ1ZTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWWExBTiBGREIgRmx1c2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kaWZpY2F0aW9uLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgY2hlY2s6IGBpZiAobGlzdF9pc19zaW5ndWxhcigmYW1wO2YtJmd0O3JlbW90ZXMpKSB7ICpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTsgcmV0dXJuOyB9YCByaWdodCBiZWZvcmUgdGhlIGNhbGwgdG8gYHZ4bGFuX2ZkYl9kc3RfZGVzdHJveWAuIEFscmlnaHQsIHNvIHRoZSBjb2RlIGlzIGNoZWNraW5nIGlmIHRoZSBgcmVtb3Rlc2AgbGlzdCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBGREIgZW50cnkgaXMgc2luZ3VsYXIuIElmIGl0IGlzLCB0aGVuIGAqcF9kZXN0cm95X2ZkYmAgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zLiBUaGlzIGltcGxpZXMgdGhlIEZEQiBlbnRyeSB3aWxsIGJlIGRlc3Ryb3llZC4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBvcHRpbWl6aW5nIHRoZSBkZXN0cnVjdGlvbiBsb2dpYyB3aGVuIHRoZXJlJiMzOTtzIG9ubHkgb25lIHJlbW90ZSBkZXN0aW5hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIEZEQiBlbnRyeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgb3B0aW1pemF0aW9uIGlzIG5lY2Vzc2FyeSBhbmQgd2hhdCBpdCBhY2hpZXZlcyBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0IGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA1MDp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDUxLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA3ND1zdGF0aWMgdm9pZCB2eGxhbl9mbHVzaChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDkyOlx0XHRcdHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKGYsIHZ4bGFuLCBkZXNjLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwOTMtXHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2ZGVzdHJveV9mZGIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBWWExBTiBGREIgRmx1c2gqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhvdyByZW1vdGUgZm9yd2FyZGluZyBkYXRhYmFzZSBlbnRyaWVzIGFyZSBoYW5kbGVkIGluIFZYTEFOLiBJbnRlcmVzdGluZy4gQW5kIHRoaXMgZnVuY3Rpb24gaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIE9rYXksIHNvIGB2eGxhbl9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yLCB3ZWxsLCBmbHVzaGluZy4gSXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gdHJhY2UgYmFjay4gTm93IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgY2FsbCBzaXRlcyBvZiB0aGF0IGB2eGxhbl9mbHVzaGAgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW9zIGluIHdoaWNoIHRoZXNlIEZEQiBtb2RpZmljYXRpb25zIHRha2UgZWZmZWN0LiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSB1cHN0cmVhbSBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2ZsdXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xNDI1PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc0LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE0NzU6XHRcdC8qIGNsb3NlIG9mZiByYWNlIGJldHdlZW4gdnhsYW5fZmx1c2ggYW5kIGluY29taW5nIHBhY2tldHMgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc2LVx0XHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDUwPXZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDczLS8qIFB1cmdlIHRoZSBmb3J3YXJkaW5nIHRhYmxlICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA3NDpzdGF0aWMgdm9pZCB2eGxhbl9mbHVzaChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDc1LVx0XHRcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzEyMj1zdGF0aWMgaW50IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayhzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTgxOlx0dnhsYW5fZmx1c2godnhsYW4sIFx1MDAyNmRlc2MpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODItXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMDAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIwMTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAyLVx0dnhsYW5fc29ja19yZWxlYXNlKHZ4bGFuKTtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDUxNj1zdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MjAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyMTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZYTEFOIEZsdXNoaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgdnhsYW5fZmx1c2hgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjbGVhbmluZyB1cCB0aGUgVlhMQU4gRkRCLCBnb3QgaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHJlbW92aW5nIGVudHJpZXMgZnJvbSB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZS4gTm93LCBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0aHJlZSBkaXN0aW5jdCBwbGFjZXM6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIFRoYXQgZ2l2ZXMgbWUgYSBmZXcga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlIGlmIEkmIzM5O20gdHJ5aW5nIHRvIG9wdGltaXplIG9yIGRlYnVnIHRoZSBWWExBTiBpbXBsZW1lbnRhdGlvbi4KClRoZSBpbnRlcmVzdGluZyBvbmUgaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgYmVjYXVzZSwgYXMgSSByZWNhbGwsIHRoYXQmIzM5O3MgYW4gcnRuZXRsaW5rIGNhbGxiYWNrLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHRyaWdnZXJlZCBpbiByZXNwb25zZSB0byBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgbGlrZSBhIGJyaWRnZSBiZWluZyBicm91Z2h0IGRvd24gb3IgYSBWWExBTiBpbnRlcmZhY2UgYmVpbmcgcmVtb3ZlZC4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlIGZpcnN0LiBUaGUgb3RoZXIgY2FsbHMgYXJlIGxpa2VseSB0cmlnZ2VyZWQgZHVyaW5nIG1vcmUgZ2xvYmFsIHNodXRkb3duIG9yIGxpbmsgZGVsZXRpb24gZXZlbnRzLCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgcmVzcG9uZGluZyBkeW5hbWljYWxseSB0byBleHRlcm5hbCBldmVudHMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwtdGltZSBGREIgbWFuYWdlbWVudCB3aWxsIGJlLiBJIHNob3VsZCBjb25maXJtIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgY2FsbGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9kZWxfYnVsa19wb2xpY3lbTkRBX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzEyMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTIyOnN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMjMtXHRcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5My1cdC5uZG9fZmRiX2RlbFx0XHQ9IHZ4bGFuX2ZkYl9kZWxldGUsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI5NDpcdC5uZG9fZmRiX2RlbF9idWxrXHQ9IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk1LVx0Lm5kb19mZGJfZHVtcFx0XHQ9IHZ4bGFuX2ZkYl9kdW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWWExBTiBGREIgRGVsZXRpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBhbiBgbmRvX2ZkYl9kZWxfYnVsa2AgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgc3RhbmRhcmQgRkRCIChGb3J3YXJkaW5nIERhdGEgQmFzZSkgaGFuZGxpbmcgZnJhbWV3b3JrLiBHb29kLCB0aGF0JiMzOTtzIGV4cGVjdGVkIGFuZCBjb25maXJtcyBpdCYjMzk7cyBhIHZhbGlkIGVudHJ5IHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlLCBzbyBJJiMzOTttIGludGVyZXN0ZWQgdG8gc2VlIGhvdyBpdCB3b3Jrcy4KCk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIEFoLCBgdnhsYW5fZmx1c2hgISBUaGF0IGZ1bmN0aW9uIGlzIGludGVyZXN0aW5nLCBiZWNhdXNlLCBhcyBJIHJlY2FsbCwgaXQmIzM5O3MgY2FsbGVkIGJ5IG11bHRpcGxlIHBsYWNlczogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugbm90ZSBvZiB0aGF0LCBhcyB0aG9zZSBmdW5jdGlvbnMgYXJlIG5vdyB0aGUgZm9jdXMuCgpXYWl0IGEgc2Vjb25kLi4uSSYjMzk7bSBjYXRjaGluZyBzb21ldGhpbmcgaGVyZS4gYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYW4gQVBJIGVudHJ5cG9pbnQuIEFuZCBgdnhsYW5fc3RvcGAgaXMgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uIGB2eGxhbl9kZWxsaW5rYCBpcyBgcnRubF9saW5rX29wcy5kZWxsaW5rYC4gVGhhdCBsYXN0IG9uZSBpcyBhIGNydWNpYWwgbGluayBvcGVyYXRpb24uIEkgc2hvdWxkIHZlcmlmeSB0aGF0IG9uZSBzcGVjaWZpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2RlbGxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxOTAtXHRzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgZGVzYyA9IHtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTkxOlx0XHQvKiBEZWZhdWx0IGVudHJ5IGlzIGRlbGV0ZWQgYXQgdnhsYW5fZGVsbGluay4gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTkyLVx0XHQuaWdub3JlX2RlZmF1bHRfZW50cnkgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NDE4PXN0YXRpYyBpbnQgdnhsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTE1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MTY6c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MTcte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njg0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkyLVx0LmNoYW5nZWxpbmtcdD0gdnhsYW5fY2hhbmdlbGluayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NjkzOlx0LmRlbGxpbmtcdD0gdnhsYW5fZGVsbGluayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00Njk0LVx0LmdldF9zaXplXHQ9IHZ4bGFuX2dldF9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njk5PXN0cnVjdCBuZXRfZGV2aWNlICp2eGxhbl9kZXZfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDcyMy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzI0Olx0XHR2eGxhbl9kZWxsaW5rKGRldiwgXHUwMDI2bGlzdF9raWxsKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzI1LVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxpc3Rfa2lsbCk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ3MzM9c3RhdGljIHZvaWQgdnhsYW5faGFuZGxlX2xvd2VyZGV2X3VucmVnaXN0ZXIoc3RydWN0IHZ4bGFuX25ldCAqdm4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3NDgtXHRcdGlmIChkc3QtXHUwMDNlcmVtb3RlX2lmaW5kZXggPT0gZGV2LVx1MDAzZWlmaW5kZXgpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OTpcdFx0XHR2eGxhbl9kZWxsaW5rKHZ4bGFuLVx1MDAzZWRldiwgXHUwMDI2bGlzdF9raWxsKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00OTQ0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdnhsYW5fZGVzdHJveV90dW5uZWxzKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00OTQ5LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZ4bGFuLCBuZXh0LCBcdTAwMjZ2bi1cdTAwM2V2eGxhbl9saXN0LCBuZXh0KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ5NTA6XHRcdHZ4bGFuX2RlbGxpbmsodnhsYW4tXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDk1MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AgYXJlIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uY2VudHJhdGluZyBvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIGlzc3VlLiBJJiMzOTttIHNlZWluZyBwb3RlbnRpYWwgaGVyZS4gSG93ZXZlciwgSSYjMzk7bSBhbHNvIHF1ZXN0aW9uaW5nIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AuIEl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGNvbXBsaWNhdGUgdGhpbmdzLCBidXQgaXQmIzM5O3Mgc3RpbGwgd29ydGggaW52ZXN0aWdhdGluZy4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEkmIzM5O20gbWlzc2luZyBoZXJlPwoKSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdnhsYW4gZm9yIGFueXRoaW5nIEkgY2FuIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZYTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjMwOmNvbmZpZyBWWExBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlZYTEFOIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyBvciBkaXNhYmxpbmcgVlhMQU4gZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdG9wIHdpbGwgYmUgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIHNob3VsZCBsaXZlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkLCBhbmQgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkb3duIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHBsYXRmb3JtIGxpbWl0YXRpb25zIHByZXR0eSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdGNvbmZpZyBWWExBTlxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG4gMjMyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAyMzM6XHRcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuIDIzNDpcdFx0c2VsZWN0IEdST19DRUxMU1xuIDIzNTpcdFx0aGVscFxuIDIzNjpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyMzc6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbiAyMzg6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjM5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAyNDA6XHRcdCAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1tYWhhbGluZ2FtLWR1dHQtZGNvcHMtdnhsYW4tMDJcbiAyNDE6XHRcbiAyNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDI0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cbiAyNDQ6XHRcbiAyNDU6XHRjb25maWcgR0VORVZFXG4gMjQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuIDI0NzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjQ4Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyNDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWWExBTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgVlhMQU5gIGNvbmZpZ3VyYXRpb24gdG8gZGVhbCB3aXRoLCBhbmQgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBJTkVUYCwgYXMgZXhwZWN0ZWQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYSBwYXRjaCBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBkZWxldGluZyBhIHJlbW90ZSBkb2VzbiYjMzk7dCBwcm9wZXJseSBjbGVhbiB1cCB0aGUgRkRCIGVudHJ5IGlmIHRoYXQgcmVtb3RlIHdhcyB0aGUgbGFzdCBvbmUgaW4gdGhlIGxpc3QuIFRoaXMgbGVhdmVzIGFuIG9ycGhhbmVkLCBlbXB0eSByZW1vdGVzIGxpc3QuIFRoYXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4LCBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aXRoIGZ1enppbmcgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYW55IG90aGVyIGVkZ2UgY2FzZXMuCgpJJiMzOTttIHplcm9pbmcgaW4gb24gYSBmZXcga2V5IHN5bWJvbHMgaGVyZTogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpJIHdlbnQgYWhlYWQgYW5kIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgaXMsIGFzIEkgdGhvdWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgYHZ4bGFuX2ZsdXNoYCBpcyBhbHNvIHN0YXRpYywgYXMgdGhlIGNvZGUgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc2ltaWxhciBmdW5jdGlvbi4gVGhpcyBpbXBsaWVzIG91ciBwcmltYXJ5IEFQSSBlbnRyeSBwb2ludHMgYXJlIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuCgpJJiMzOTt2ZSBhbHJlYWR5IGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGNhbGxlcnMgZXhpc3QgZm9yIGB2eGxhbl9mbHVzaGAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyAoYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCkgYXJlIHRoZSBvbmx5IGNhbGxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9mbHVzaFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA1MD12eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3My0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNzQ6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3NS1cdFx0XHRjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMjI9c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE4MTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTgyLVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTg3PXN0YXRpYyBpbnQgdnhsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMDE6XHR2eGxhbl9mbHVzaCh2eGxhbiwgXHUwMDI2ZGVzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMi1cdHZ4bGFuX3NvY2tfcmVsZWFzZSh2eGxhbik7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ1MTY9c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MjE6XHR2eGxhbl9mbHVzaCh2eGxhbiwgXHUwMDI2ZGVzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyMgoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFZYTEFOIEZEQiBGbHVzaCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgVlhMQU4gYW5kIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgRkRCIGZsdXNoIGxvZ2ljLiBUaGUgcHJvbXB0IGd1aWRlcyBtZSB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggd2hhdCBJIGhhdmUuCgpJbml0aWFsbHksIEkgaWRlbnRpZmllZCB0aHJlZSBmdW5jdGlvbnMsIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZSBpcyBgdnhsYW5fZmRiX2RlbGV0ZV9idWxrYC4gTGV0JiMzOTtzIGNvbmZpcm06IElzIGl0IHN0YXRpYz8gWWVzLCBpdCBpcy4gQnV0LCBjcnVjaWFsbHksIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBuZG9fZmRiX2RlbF9idWxrYC4gU28gaXQgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcGF0aC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFdoZXJlIGlzIGl0IGNhbGxlZD8gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgIGlzIHN0YXRpYywgYnV0IGFzc2lnbmVkIGR1cmluZyB0aGUgbmV0ZGV2IHNldHVwLCBpbiBgdnhsYW5fc2V0dXBgLCB3aGljaCBhc3NpZ25zIGBkZXYtJmd0O25ldGRldl9vcHMgPSAmYW1wO3Z4bGFuX25ldGRldl9ldGhlcl9vcHM7YC4gYG5kb19mZGJfZGVsX2J1bGtgIGlzIHVzZWQgYnkgYHJ0bmxfZmRiX2RlbGAgaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gU28gaXQmIzM5O3MgZmluZSBmb3IgbXkgcHVycG9zZXMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3MgYSBjYWxsYmFjaywgc28gaXQmIzM5O3MgYSB2YWxpZCBlbnRyeSBwb2ludC4gVGhlIHByb21wdCYjMzk7cyBlbXBoYXNpcyBvbiBub24taW5saW5lZCBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZWZvcmUgaXQgY2Fubm90IGJlIGlubGluZWQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IGB2eGxhbl9zdG9wYCBhbmQgYHZ4bGFuX2RlbGxpbmtgLiBJIHNob3VsZCBoYXZlIGNvbnNpZGVyZWQgdGhlc2UgZmlyc3QuIGB2eGxhbl9zdG9wYCBpcyBhc3NpZ25lZCB0byBgbmRvX3N0b3BgLCBhbmQgYHZ4bGFuX2RlbGxpbmtgIGlzIGFzc2lnbmVkIHRvIGBydG5sX2xpbmtfb3BzLmRlbGxpbmtgLiBUaGVzZSBzZWVtIHBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYSBuaWNlbHkuCgpHaXZlbiB0aGUgY29uZmlndXJhdGlvbnMsIHRoaXMgcGF0Y2ggaXMgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBWWExBTiBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGlzc3VlIHRoYXQmIzM5O3MgYmVpbmcgZml4ZWQgaGVyZTogdGhlIHJlbW90ZSBGREIgZW50cnkgaXMgbm90IGRlc3Ryb3llZCwgbGVhZGluZyB0byBhbiBlbXB0eSBsaXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpc3N1ZS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX2ZkYl9kZWxldGVfYnVsayYjMzQ7LAogICAgJiMzNDt2eGxhbl9zdG9wJiMzNDssCiAgICAmIzM0O3Z4bGFuX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFZYTEFOIEZEQiBmbHVzaCBsb2dpYyB3aGVyZSBkZWxldGluZyB0aGUgbGFzdCByZW1vdGUgZnJvbSBhbiBGREIgZW50cnkgd291bGQgbGVhdmUgYW4gZW1wdHkgcmVtb3RlcyBsaXN0IGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgRkRCIGVudHJ5LiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gdGhlIFZYTEFOIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjE2LjgzNzk1NzYzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTIzNTIyNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fZmRiX2RlbGV0ZV9idWxrXCIsXG4gICAgXCJ2eGxhbl9zdG9wXCIsXG4gICAgXCJ2eGxhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFZYTEFOIEZEQiBmbHVzaCBsb2dpYyB3aGVyZSBkZWxldGluZyB0aGUgbGFzdCByZW1vdGUgZnJvbSBhbiBGREIgZW50cnkgd291bGQgbGVhdmUgYW4gZW1wdHkgcmVtb3RlcyBsaXN0IGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgRkRCIGVudHJ5LiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gdGhlIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6MTYuODM3OTY0Mjg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU1ODY1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYzM4NzU1OTEyNGY0YWU0MjZjNGYzNmU3ZGI4NjA3NDY4NTQzMDMzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXFxuaW5kZXggZDgzNGE0ODY1YWVjYy4uYTAwZGYxMjdkYTgyNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG5AQCAtMzA1OCw2ICszMDU4LDExIEBAIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbiBcXHRcXHRpZiAoIXZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhkZXNjLCByZCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0aWYgKGxpc3RfaXNfc2luZ3VsYXIoXFx1MDAyNmYtXFx1MDAzZXJlbW90ZXMpKSB7XFxuK1xcdFxcdFxcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHR2eGxhbl9mZGJfZHN0X2Rlc3Ryb3kodnhsYW4sIGYsIHJkLCB0cnVlKTtcXG4gXFx0XFx0cmVtb3Rlc19mbHVzaGVkID0gdHJ1ZTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoxNy4yMTQyMjAyMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MjU0NzI1MjU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX2ZkYl9kZWxldGVfYnVsa1wiLFxuICAgIFwidnhsYW5fc3RvcFwiLFxuICAgIFwidnhsYW5fZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBWWExBTiBGREIgZmx1c2ggbG9naWMgd2hlcmUgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlIGZyb20gYW4gRkRCIGVudHJ5IHdvdWxkIGxlYXZlIGFuIGVtcHR5IHJlbW90ZXMgbGlzdCBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIEZEQiBlbnRyeS4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIHRoZSBWWExBTiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjMzg3NTU5MTI0ZjRhZTQyNmM0ZjM2ZTdkYjg2MDc0Njg1NDMwMzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCBkODM0YTQ4NjVhZWNjLi5hMDBkZjEyN2RhODI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbkBAIC0zMDU4LDYgKzMwNTgsMTEgQEAgdnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4gXHRcdGlmICghdnhsYW5fZmRiX2ZsdXNoX3JlbW90ZV9tYXRjaGVzKGRlc2MsIHJkKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbitcdFx0aWYgKGxpc3RfaXNfc2luZ3VsYXIoXHUwMDI2Zi1cdTAwM2VyZW1vdGVzKSkge1xuK1x0XHRcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcbitcdFx0XHRyZXR1cm47XG4rXHRcdH1cbitcbiBcdFx0dnhsYW5fZmRiX2RzdF9kZXN0cm95KHZ4bGFuLCBmLCByZCwgdHJ1ZSk7XG4gXHRcdHJlbW90ZXNfZmx1c2hlZCA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoxNy4yMTQyMjE0MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI3MDQzMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gRkRCIEZsdXNoIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kaWZpY2F0aW9uLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBjaGVjazogYGlmIChsaXN0X2lzX3Npbmd1bGFyKFx1MDAyNmYtXHUwMDNlcmVtb3RlcykpIHsgKnBfZGVzdHJveV9mZGIgPSB0cnVlOyByZXR1cm47IH1gIHJpZ2h0IGJlZm9yZSB0aGUgY2FsbCB0byBgdnhsYW5fZmRiX2RzdF9kZXN0cm95YC4gQWxyaWdodCwgc28gdGhlIGNvZGUgaXMgY2hlY2tpbmcgaWYgdGhlIGByZW1vdGVzYCBsaXN0IGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIEZEQiBlbnRyeSBpcyBzaW5ndWxhci4gSWYgaXQgaXMsIHRoZW4gYCpwX2Rlc3Ryb3lfZmRiYCBpcyBzZXQgdG8gYHRydWVgLCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMuIFRoaXMgaW1wbGllcyB0aGUgRkRCIGVudHJ5IHdpbGwgYmUgZGVzdHJveWVkLiBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIG9wdGltaXppbmcgdGhlIGRlc3RydWN0aW9uIGxvZ2ljIHdoZW4gdGhlcmUncyBvbmx5IG9uZSByZW1vdGUgZGVzdGluYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBGREIgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGltaXphdGlvbiBpcyBuZWNlc3NhcnkgYW5kIHdoYXQgaXQgYWNoaWV2ZXMgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0J3MgZ29pbmcgb24gaW4gYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbnRleHQgaW4gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyMi41NDEyNjcwODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNjAzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNTA6dnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNTEtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNzQ9c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5MS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA5MjpcXHRcXHRcXHR2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhmLCB2eGxhbiwgZGVzYyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2ZGVzdHJveV9mZGIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyMi41ODI1Mzg5NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzNDU1MjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFZYTEFOIEZEQiBGbHVzaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIGhvdyByZW1vdGUgZm9yd2FyZGluZyBkYXRhYmFzZSBlbnRyaWVzIGFyZSBoYW5kbGVkIGluIFZYTEFOLiBJbnRlcmVzdGluZy4gQW5kIHRoaXMgZnVuY3Rpb24gaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIE9rYXksIHNvIGB2eGxhbl9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yLCB3ZWxsLCBmbHVzaGluZy4gSXQncyB0aGUgb25lIEkgbmVlZCB0byB0cmFjZSBiYWNrLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgYHZ4bGFuX2ZsdXNoYCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBzY2VuYXJpb3MgaW4gd2hpY2ggdGhlc2UgRkRCIG1vZGlmaWNhdGlvbnMgdGFrZSBlZmZlY3QuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIHVwc3RyZWFtIGNhbGxlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyOC4zOTU5OTY2MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2NDQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xNDI1PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0NzQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE0NzU6XFx0XFx0LyogY2xvc2Ugb2ZmIHJhY2UgYmV0d2VlbiB2eGxhbl9mbHVzaCBhbmQgaW5jb21pbmcgcGFja2V0cyAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc2LVxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA1MD12eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDczLS8qIFB1cmdlIHRoZSBmb3J3YXJkaW5nIHRhYmxlICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNzQ6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNzUtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMjI9c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4MC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE4MTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIwMTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAyLVxcdHZ4bGFuX3NvY2tfcmVsZWFzZSh2eGxhbik7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDUxNj1zdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyMTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyOC40MzY2NDYyOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTAyNzMzODIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gRmx1c2hpbmcgTWVjaGFuaXNtKipcblxuT2theSwgc28gYHZ4bGFuX2ZsdXNoYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgY2xlYW5pbmcgdXAgdGhlIFZYTEFOIEZEQiwgZ290IGl0LiBUaGF0IG1lYW5zIGl0J3MgcmVzcG9uc2libGUgZm9yIHJlbW92aW5nIGVudHJpZXMgZnJvbSB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZS4gTm93LCBJIHNlZSBpdCdzIGNhbGxlZCBmcm9tIHRocmVlIGRpc3RpbmN0IHBsYWNlczogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gVGhhdCBnaXZlcyBtZSBhIGZldyBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUgaWYgSSdtIHRyeWluZyB0byBvcHRpbWl6ZSBvciBkZWJ1ZyB0aGUgVlhMQU4gaW1wbGVtZW50YXRpb24uXG5cblRoZSBpbnRlcmVzdGluZyBvbmUgaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgYmVjYXVzZSwgYXMgSSByZWNhbGwsIHRoYXQncyBhbiBydG5ldGxpbmsgY2FsbGJhY2suIFRoaXMgbWVhbnMgaXQncyB0cmlnZ2VyZWQgaW4gcmVzcG9uc2UgdG8gbmV0d29yayBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGxpa2UgYSBicmlkZ2UgYmVpbmcgYnJvdWdodCBkb3duIG9yIGEgVlhMQU4gaW50ZXJmYWNlIGJlaW5nIHJlbW92ZWQuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZSBmaXJzdC4gVGhlIG90aGVyIGNhbGxzIGFyZSBsaWtlbHkgdHJpZ2dlcmVkIGR1cmluZyBtb3JlIGdsb2JhbCBzaHV0ZG93biBvciBsaW5rIGRlbGV0aW9uIGV2ZW50cywgYnV0IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgIGlzIHJlc3BvbmRpbmcgZHluYW1pY2FsbHkgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzbyB0aGF0J3Mgd2hlcmUgdGhlIHJlYWwtdGltZSBGREIgbWFuYWdlbWVudCB3aWxsIGJlLiBJIHNob3VsZCBjb25maXJtIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgY2FsbGJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDozNi45MzkzODIxNjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwMDc1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmRiX2RlbGV0ZV9idWxrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fZGVsX2J1bGtfcG9saWN5W05EQV9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTIxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTIyOnN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTIzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZ4bGFuX25ldGRldl9ldGhlcl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5My1cXHQubmRvX2ZkYl9kZWxcXHRcXHQ9IHZ4bGFuX2ZkYl9kZWxldGUsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyOTQ6XFx0Lm5kb19mZGJfZGVsX2J1bGtcXHQ9IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5NS1cXHQubmRvX2ZkYl9kdW1wXFx0XFx0PSB2eGxhbl9mZGJfZHVtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6MzYuOTgxMzk5MDU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMzkyODk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIEZEQiBEZWxldGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgZnVuY3Rpb24sIGFuZCBpdCdzIGFuIGBuZG9fZmRiX2RlbF9idWxrYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEZEQiAoRm9yd2FyZGluZyBEYXRhIEJhc2UpIGhhbmRsaW5nIGZyYW1ld29yay4gR29vZCwgdGhhdCdzIGV4cGVjdGVkIGFuZCBjb25maXJtcyBpdCdzIGEgdmFsaWQgZW50cnkgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvZGUsIHNvIEknbSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgaXQgd29ya3MuXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCwgYW5kIHRoYXQncyBjYWxsZWQgYnkgYHZ4bGFuX2ZsdXNoYC4gQWgsIGB2eGxhbl9mbHVzaGAhIFRoYXQgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcsIGJlY2F1c2UsIGFzIEkgcmVjYWxsLCBpdCdzIGNhbGxlZCBieSBtdWx0aXBsZSBwbGFjZXM6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIEknbSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugbm90ZSBvZiB0aGF0LCBhcyB0aG9zZSBmdW5jdGlvbnMgYXJlIG5vdyB0aGUgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuLi5JJ20gY2F0Y2hpbmcgc29tZXRoaW5nIGhlcmUuIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgIGlzIGFuIEFQSSBlbnRyeXBvaW50LiBBbmQgYHZ4bGFuX3N0b3BgIGlzIGBuZG9fc3RvcGAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uLiBgdnhsYW5fZGVsbGlua2AgaXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AuIFRoYXQgbGFzdCBvbmUgaXMgYSBjcnVjaWFsIGxpbmsgb3BlcmF0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBvbmUgc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjQxLjY4NTMzMDcyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1NDgzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZGVsbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5MC1cXHRzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgZGVzYyA9IHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE5MTpcXHRcXHQvKiBEZWZhdWx0IGVudHJ5IGlzIGRlbGV0ZWQgYXQgdnhsYW5fZGVsbGluay4gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5Mi1cXHRcXHQuaWdub3JlX2RlZmF1bHRfZW50cnkgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ0MTg9c3RhdGljIGludCB2eGxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUxNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUxNjpzdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ2ODQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4bGFuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY5Mi1cXHQuY2hhbmdlbGlua1xcdD0gdnhsYW5fY2hhbmdlbGluayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDY5MzpcXHQuZGVsbGlua1xcdD0gdnhsYW5fZGVsbGluayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY5NC1cXHQuZ2V0X3NpemVcXHQ9IHZ4bGFuX2dldF9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ2OTk9c3RydWN0IG5ldF9kZXZpY2UgKnZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MjQ6XFx0XFx0dnhsYW5fZGVsbGluayhkZXYsIFxcdTAwMjZsaXN0X2tpbGwpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzI1LVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxpc3Rfa2lsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDczMz1zdGF0aWMgdm9pZCB2eGxhbl9oYW5kbGVfbG93ZXJkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgdnhsYW5fbmV0ICp2bixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzQ4LVxcdFxcdGlmIChkc3QtXFx1MDAzZXJlbW90ZV9pZmluZGV4ID09IGRldi1cXHUwMDNlaWZpbmRleClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OTpcXHRcXHRcXHR2eGxhbl9kZWxsaW5rKHZ4bGFuLVxcdTAwM2VkZXYsIFxcdTAwMjZsaXN0X2tpbGwpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00OTQ0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdnhsYW5fZGVzdHJveV90dW5uZWxzKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5NDktXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZ4bGFuLCBuZXh0LCBcXHUwMDI2dm4tXFx1MDAzZXZ4bGFuX2xpc3QsIG5leHQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ5NTA6XFx0XFx0dnhsYW5fZGVsbGluayh2eGxhbi1cXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5NTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0MS43MjY4ODQ2NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2NDEyNTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCBhcmUgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBjb25jZW50cmF0aW5nIG9uIGZvciB0aGlzIHBhcnRpY3VsYXIgaXNzdWUuIEknbSBzZWVpbmcgcG90ZW50aWFsIGhlcmUuIEhvd2V2ZXIsIEknbSBhbHNvIHF1ZXN0aW9uaW5nIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AuIEl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgY29tcGxpY2F0ZSB0aGluZ3MsIGJ1dCBpdCdzIHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuXG5cbkFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEknbSBtaXNzaW5nIGhlcmU/XG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHZ4bGFuIGZvciBhbnl0aGluZyBJIGNhbiB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NDYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0Ni4zOTEwMTM3NTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDY2Nzk4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZYTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0OC4wMzc2OTkzODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNDU5NDQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVlhMQU4gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IENoZWNrKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBlbmFibGluZyBvciBkaXNhYmxpbmcgVlhMQU4gZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdG9wIHdpbGwgYmUgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgZHJpdmVycywgaW5jbHVkaW5nIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcywgc2hvdWxkIGxpdmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZGVmaW5lZCB0aGVyZS4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHNvIHRoYXQncyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyByZXF1aXJlZCwgYW5kIEknbGwgYmUgYWJsZSB0byB0cmFjZSBkb3duIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHBsYXRmb3JtIGxpbWl0YXRpb25zIHByZXR0eSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NTMuNjcyMjk2NzMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMwOlxcdGNvbmZpZyBWWExBTlxcbiAyMzE6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG4gMjMyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAyMzM6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuIDIzNDpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDIzNTpcXHRcXHRoZWxwXFxuIDIzNjpcXHRcXHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdnhsYW4gdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyMzc6XFx0XFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gVlhMQU4gaXMgb2Z0ZW4gdXNlZFxcbiAyMzg6XFx0XFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4gMjM5OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcbiAyNDA6XFx0XFx0ICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LW1haGFsaW5nYW0tZHV0dC1kY29wcy12eGxhbi0wMlxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMjQzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnhsYW4uXFxuIDI0NDpcXHRcXG4gMjQ1OlxcdGNvbmZpZyBHRU5FVkVcXG4gMjQ2OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblxcXCJcXG4gMjQ3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAyNDg6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuIDI0OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjUzLjY3MjM3Njk2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzQyMTQ2ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZYTEFOIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgVlhMQU5gIGNvbmZpZ3VyYXRpb24gdG8gZGVhbCB3aXRoLCBhbmQgaXQncyBidWlsdCBvbiB0b3Agb2YgYElORVRgLCBhcyBleHBlY3RlZC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhIHBhdGNoIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSBgdnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXNgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHByb2JsZW0gd2hlcmUgZGVsZXRpbmcgYSByZW1vdGUgZG9lc24ndCBwcm9wZXJseSBjbGVhbiB1cCB0aGUgRkRCIGVudHJ5IGlmIHRoYXQgcmVtb3RlIHdhcyB0aGUgbGFzdCBvbmUgaW4gdGhlIGxpc3QuIFRoaXMgbGVhdmVzIGFuIG9ycGhhbmVkLCBlbXB0eSByZW1vdGVzIGxpc3QuIFRoYXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4LCBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aXRoIGZ1enppbmcgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYW55IG90aGVyIGVkZ2UgY2FzZXMuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIGhlcmU6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5JIHdlbnQgYWhlYWQgYW5kIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgaXMsIGFzIEkgdGhvdWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgYHZ4bGFuX2ZsdXNoYCBpcyBhbHNvIHN0YXRpYywgYXMgdGhlIGNvZGUgc3VnZ2VzdHMgaXQncyBsaWtlbHkgYSBzaW1pbGFyIGZ1bmN0aW9uLiBUaGlzIGltcGxpZXMgb3VyIHByaW1hcnkgQVBJIGVudHJ5IHBvaW50cyBhcmUgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC5cblxuSSd2ZSBhbHJlYWR5IGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGNhbGxlcnMgZXhpc3QgZm9yIGB2eGxhbl9mbHVzaGAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyAoYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCkgYXJlIHRoZSBvbmx5IGNhbGxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgYnV0IGl0IGxvb2tzIGxpa2Ugd2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjAxLjAxNDUyNjEyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDAzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmx1c2hcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNTA9dnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3My0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDc0OnN0YXRpYyB2b2lkIHZ4bGFuX2ZsdXNoKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDc1LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTIyPXN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxODE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTg3PXN0YXRpYyBpbnQgdnhsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMDAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMDE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMi1cXHR2eGxhbl9zb2NrX3JlbGVhc2UodnhsYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ1MTY9c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MjE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MDEuMDU3NDc2MzY2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MzE2ODUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZYTEFOIEZEQiBGbHVzaCBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IFZYTEFOIGFuZCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB0aGlzIEZEQiBmbHVzaCBsb2dpYy4gVGhlIHByb21wdCBndWlkZXMgbWUgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIExldCdzIHN0YXJ0IHdpdGggd2hhdCBJIGhhdmUuXG5cbkluaXRpYWxseSwgSSBpZGVudGlmaWVkIHRocmVlIGZ1bmN0aW9ucywgdGhlIG9idmlvdXMgY2FuZGlkYXRlIGlzIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLiBMZXQncyBjb25maXJtOiBJcyBpdCBzdGF0aWM/IFllcywgaXQgaXMuIEJ1dCwgY3J1Y2lhbGx5LCBpdCdzIGFzc2lnbmVkIHRvIGBuZG9fZmRiX2RlbF9idWxrYC4gU28gaXQgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcGF0aC4gTGV0J3MgZGlnIGRlZXBlci4gV2hlcmUgaXMgaXQgY2FsbGVkPyBgdnhsYW5fbmV0ZGV2X2V0aGVyX29wc2AgaXMgc3RhdGljLCBidXQgYXNzaWduZWQgZHVyaW5nIHRoZSBuZXRkZXYgc2V0dXAsIGluIGB2eGxhbl9zZXR1cGAsIHdoaWNoIGFzc2lnbnMgYGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dnhsYW5fbmV0ZGV2X2V0aGVyX29wcztgLiBgbmRvX2ZkYl9kZWxfYnVsa2AgaXMgdXNlZCBieSBgcnRubF9mZGJfZGVsYCBpbiBgbmV0L2NvcmUvcnRuZXRsaW5rLmNgLiBTbyBpdCdzIGZpbmUgZm9yIG15IHB1cnBvc2VzLiBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXQncyBhIGNhbGxiYWNrLCBzbyBpdCdzIGEgdmFsaWQgZW50cnkgcG9pbnQuIFRoZSBwcm9tcHQncyBlbXBoYXNpcyBvbiBub24taW5saW5lZCBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZWZvcmUgaXQgY2Fubm90IGJlIGlubGluZWQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgdnhsYW5fc3RvcGAgYW5kIGB2eGxhbl9kZWxsaW5rYC4gSSBzaG91bGQgaGF2ZSBjb25zaWRlcmVkIHRoZXNlIGZpcnN0LiBgdnhsYW5fc3RvcGAgaXMgYXNzaWduZWQgdG8gYG5kb19zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCBpcyBhc3NpZ25lZCB0byBgcnRubF9saW5rX29wcy5kZWxsaW5rYC4gVGhlc2Ugc2VlbSBwZXJmZWN0LCB0aGV5IGZpdCB0aGUgY3JpdGVyaWEgbmljZWx5LlxuXG5HaXZlbiB0aGUgY29uZmlndXJhdGlvbnMsIHRoaXMgcGF0Y2ggaXMgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBWWExBTiBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGlzc3VlIHRoYXQncyBiZWluZyBmaXhlZCBoZXJlOiB0aGUgcmVtb3RlIEZEQiBlbnRyeSBpcyBub3QgZGVzdHJveWVkLCBsZWFkaW5nIHRvIGFuIGVtcHR5IGxpc3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlLiBUaGF0J3MgYSBjcml0aWNhbCBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaXNzdWUuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MjIsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjA5LjY4OTE2NDEyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzA1OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX2ZkYl9kZWxldGVfYnVsa1wiLFxuICAgIFwidnhsYW5fc3RvcFwiLFxuICAgIFwidnhsYW5fZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBWWExBTiBGREIgZmx1c2ggbG9naWMgd2hlcmUgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlIGZyb20gYW4gRkRCIGVudHJ5IHdvdWxkIGxlYXZlIGFuIGVtcHR5IHJlbW90ZXMgbGlzdCBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIEZEQiBlbnRyeS4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIHRoZSBWWExBTiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9mZGJfZGVsZXRlX2J1bGtcIixcbiAgICBcInZ4bGFuX3N0b3BcIixcbiAgICBcInZ4bGFuX2RlbGxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflows84sf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 06:24:35 +0000 UTC FinishedAt: 2026-08-04 06:41:12 +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": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "5b1e64b5-789d-4e84-941c-478b6194958a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vxlan_fdb_delete_bulk", "vxlan_stop", "vxlan_dellink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWMzODc1NTkxMjRmNGFlNDI2YzRmMzZlN2RiODYwNzQ2ODU0MzAzM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCBkODM0YTQ4NjVhZWNjLi5hMDBkZjEyN2RhODI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbkBAIC0zMDU4LDYgJiM0MzszMDU4LDExIEBAIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuIFx0XHRpZiAoIXZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhkZXNjLCByZCkpXG4gXHRcdFx0Y29udGludWU7XG4gXG4mIzQzO1x0XHRpZiAobGlzdF9pc19zaW5ndWxhcihcdTAwMjZmLVx1MDAzZXJlbW90ZXMpKSB7XG4mIzQzO1x0XHRcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcbiYjNDM7XHRcdFx0cmV0dXJuO1xuJiM0MztcdFx0fVxuJiM0MztcbiBcdFx0dnhsYW5fZmRiX2RzdF9kZXN0cm95KHZ4bGFuLCBmLCByZCwgdHJ1ZSk7XG4gXHRcdHJlbW90ZXNfZmx1c2hlZCA9IHRydWU7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYWMzODc1NTkxMjRmNGFlNDI2YzRmMzZlN2RiODYwNzQ2ODU0MzAzMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMKaW5kZXggZDgzNGE0ODY1YWVjYy4uYTAwZGYxMjdkYTgyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYwpAQCAtMzA1OCw2ICYjNDM7MzA1OCwxMSBAQCB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbiwKIAkJaWYgKCF2eGxhbl9mZGJfZmx1c2hfcmVtb3RlX21hdGNoZXMoZGVzYywgcmQpKQogCQkJY29udGludWU7CiAKJiM0MzsJCWlmIChsaXN0X2lzX3Npbmd1bGFyKCZhbXA7Zi0mZ3Q7cmVtb3RlcykpIHsKJiM0MzsJCQkqcF9kZXN0cm95X2ZkYiA9IHRydWU7CiYjNDM7CQkJcmV0dXJuOwomIzQzOwkJfQomIzQzOwogCQl2eGxhbl9mZGJfZHN0X2Rlc3Ryb3kodnhsYW4sIGYsIHJkLCB0cnVlKTsKIAkJcmVtb3Rlc19mbHVzaGVkID0gdHJ1ZTsKIAl9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDAKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWWExBTiBGREIgRmx1c2ggUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtYWtpbmcgYSBjaGFuZ2UgdG8gdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kaWZpY2F0aW9uLgoKVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgY2hlY2s6IGBpZiAobGlzdF9pc19zaW5ndWxhcigmYW1wO2YtJmd0O3JlbW90ZXMpKSB7ICpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTsgcmV0dXJuOyB9YCByaWdodCBiZWZvcmUgdGhlIGNhbGwgdG8gYHZ4bGFuX2ZkYl9kc3RfZGVzdHJveWAuIEFscmlnaHQsIHNvIHRoZSBjb2RlIGlzIGNoZWNraW5nIGlmIHRoZSBgcmVtb3Rlc2AgbGlzdCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBGREIgZW50cnkgaXMgc2luZ3VsYXIuIElmIGl0IGlzLCB0aGVuIGAqcF9kZXN0cm95X2ZkYmAgaXMgc2V0IHRvIGB0cnVlYCwgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zLiBUaGlzIGltcGxpZXMgdGhlIEZEQiBlbnRyeSB3aWxsIGJlIGRlc3Ryb3llZC4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyBvcHRpbWl6aW5nIHRoZSBkZXN0cnVjdGlvbiBsb2dpYyB3aGVuIHRoZXJlJiMzOTtzIG9ubHkgb25lIHJlbW90ZSBkZXN0aW5hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIEZEQiBlbnRyeS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoaXMgb3B0aW1pemF0aW9uIGlzIG5lY2Vzc2FyeSBhbmQgd2hhdCBpdCBhY2hpZXZlcyBpbiB0ZXJtcyBvZiBwZXJmb3JtYW5jZSBvciBzdGFiaWxpdHkuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgYW5kIGl0cyBzdXJyb3VuZGluZyBjb250ZXh0IGluIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ5PXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA1MDp2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDUxLVx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYyxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA3ND1zdGF0aWMgdm9pZCB2eGxhbl9mbHVzaChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5MS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDkyOlx0XHRcdHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKGYsIHZ4bGFuLCBkZXNjLFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwOTMtXHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2ZGVzdHJveV9mZGIpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBWWExBTiBGREIgRmx1c2gqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBmdW5jdGlvbi4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhvdyByZW1vdGUgZm9yd2FyZGluZyBkYXRhYmFzZSBlbnRyaWVzIGFyZSBoYW5kbGVkIGluIFZYTEFOLiBJbnRlcmVzdGluZy4gQW5kIHRoaXMgZnVuY3Rpb24gaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIE9rYXksIHNvIGB2eGxhbl9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yLCB3ZWxsLCBmbHVzaGluZy4gSXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gdHJhY2UgYmFjay4gTm93IEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgY2FsbCBzaXRlcyBvZiB0aGF0IGB2eGxhbl9mbHVzaGAgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCB0aGUgc2NlbmFyaW9zIGluIHdoaWNoIHRoZXNlIEZEQiBtb2RpZmljYXRpb25zIHRha2UgZWZmZWN0LiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSB1cHN0cmVhbSBjYWxsZXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2ZsdXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xNDI1PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc0LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE0NzU6XHRcdC8qIGNsb3NlIG9mZiByYWNlIGJldHdlZW4gdnhsYW5fZmx1c2ggYW5kIGluY29taW5nIHBhY2tldHMgKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc2LVx0XHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDUwPXZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDczLS8qIFB1cmdlIHRoZSBmb3J3YXJkaW5nIHRhYmxlICovXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA3NDpzdGF0aWMgdm9pZCB2eGxhbl9mbHVzaChzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDc1LVx0XHRcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzEyMj1zdGF0aWMgaW50IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayhzdHJ1Y3Qgbmxtc2doZHIgKm5saCwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4MC1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTgxOlx0dnhsYW5fZmx1c2godnhsYW4sIFx1MDAyNmRlc2MpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODItXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMDAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIwMTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAyLVx0dnhsYW5fc29ja19yZWxlYXNlKHZ4bGFuKTtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDUxNj1zdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MjAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyMTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZYTEFOIEZsdXNoaW5nIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBgdnhsYW5fZmx1c2hgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGZvciBjbGVhbmluZyB1cCB0aGUgVlhMQU4gRkRCLCBnb3QgaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgcmVzcG9uc2libGUgZm9yIHJlbW92aW5nIGVudHJpZXMgZnJvbSB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZS4gTm93LCBJIHNlZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0aHJlZSBkaXN0aW5jdCBwbGFjZXM6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIFRoYXQgZ2l2ZXMgbWUgYSBmZXcga2V5IGFyZWFzIHRvIGludmVzdGlnYXRlIGlmIEkmIzM5O20gdHJ5aW5nIHRvIG9wdGltaXplIG9yIGRlYnVnIHRoZSBWWExBTiBpbXBsZW1lbnRhdGlvbi4KClRoZSBpbnRlcmVzdGluZyBvbmUgaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgYmVjYXVzZSwgYXMgSSByZWNhbGwsIHRoYXQmIzM5O3MgYW4gcnRuZXRsaW5rIGNhbGxiYWNrLiBUaGlzIG1lYW5zIGl0JiMzOTtzIHRyaWdnZXJlZCBpbiByZXNwb25zZSB0byBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gY2hhbmdlcywgbGlrZSBhIGJyaWRnZSBiZWluZyBicm91Z2h0IGRvd24gb3IgYSBWWExBTiBpbnRlcmZhY2UgYmVpbmcgcmVtb3ZlZC4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgbXkgYXR0ZW50aW9uIHRoZXJlIGZpcnN0LiBUaGUgb3RoZXIgY2FsbHMgYXJlIGxpa2VseSB0cmlnZ2VyZWQgZHVyaW5nIG1vcmUgZ2xvYmFsIHNodXRkb3duIG9yIGxpbmsgZGVsZXRpb24gZXZlbnRzLCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgcmVzcG9uZGluZyBkeW5hbWljYWxseSB0byBleHRlcm5hbCBldmVudHMsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwtdGltZSBGREIgbWFuYWdlbWVudCB3aWxsIGJlLiBJIHNob3VsZCBjb25maXJtIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgY2FsbGJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB2eGxhbl9kZWxfYnVsa19wb2xpY3lbTkRBX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzEyMS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTIyOnN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxMjMtXHRcdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMjgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdnhsYW5fbmV0ZGV2X2V0aGVyX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5My1cdC5uZG9fZmRiX2RlbFx0XHQ9IHZ4bGFuX2ZkYl9kZWxldGUsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzI5NDpcdC5uZG9fZmRiX2RlbF9idWxrXHQ9IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjk1LVx0Lm5kb19mZGJfZHVtcFx0XHQ9IHZ4bGFuX2ZkYl9kdW1wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzODEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWWExBTiBGREIgRGVsZXRpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBhbiBgbmRvX2ZkYl9kZWxfYnVsa2AgY2FsbGJhY2ssIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcGFydCBvZiB0aGUgc3RhbmRhcmQgRkRCIChGb3J3YXJkaW5nIERhdGEgQmFzZSkgaGFuZGxpbmcgZnJhbWV3b3JrLiBHb29kLCB0aGF0JiMzOTtzIGV4cGVjdGVkIGFuZCBjb25maXJtcyBpdCYjMzk7cyBhIHZhbGlkIGVudHJ5IHBvaW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb2RlLCBzbyBJJiMzOTttIGludGVyZXN0ZWQgdG8gc2VlIGhvdyBpdCB3b3Jrcy4KCk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCwgYW5kIHRoYXQmIzM5O3MgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIEFoLCBgdnhsYW5fZmx1c2hgISBUaGF0IGZ1bmN0aW9uIGlzIGludGVyZXN0aW5nLCBiZWNhdXNlLCBhcyBJIHJlY2FsbCwgaXQmIzM5O3MgY2FsbGVkIGJ5IG11bHRpcGxlIHBsYWNlczogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugbm90ZSBvZiB0aGF0LCBhcyB0aG9zZSBmdW5jdGlvbnMgYXJlIG5vdyB0aGUgZm9jdXMuCgpXYWl0IGEgc2Vjb25kLi4uSSYjMzk7bSBjYXRjaGluZyBzb21ldGhpbmcgaGVyZS4gYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYW4gQVBJIGVudHJ5cG9pbnQuIEFuZCBgdnhsYW5fc3RvcGAgaXMgYG5kb19zdG9wYCwgd2hpY2ggaXMgYSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uIGB2eGxhbl9kZWxsaW5rYCBpcyBgcnRubF9saW5rX29wcy5kZWxsaW5rYC4gVGhhdCBsYXN0IG9uZSBpcyBhIGNydWNpYWwgbGluayBvcGVyYXRpb24uIEkgc2hvdWxkIHZlcmlmeSB0aGF0IG9uZSBzcGVjaWZpY2FsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX2RlbGxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxOTAtXHRzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgZGVzYyA9IHtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTkxOlx0XHQvKiBEZWZhdWx0IGVudHJ5IGlzIGRlbGV0ZWQgYXQgdnhsYW5fZGVsbGluay4gKi9cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTkyLVx0XHQuaWdub3JlX2RlZmF1bHRfZW50cnkgPSB0cnVlLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00NDE4PXN0YXRpYyBpbnQgdnhsYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTE1LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MTY6c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MTcte1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njg0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGxhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NjkyLVx0LmNoYW5nZWxpbmtcdD0gdnhsYW5fY2hhbmdlbGluayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NjkzOlx0LmRlbGxpbmtcdD0gdnhsYW5fZGVsbGluayxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00Njk0LVx0LmdldF9zaXplXHQ9IHZ4bGFuX2dldF9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00Njk5PXN0cnVjdCBuZXRfZGV2aWNlICp2eGxhbl9kZXZfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDcyMy1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzo0NzI0Olx0XHR2eGxhbl9kZWxsaW5rKGRldiwgXHUwMDI2bGlzdF9raWxsKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzI1LVx0XHR1bnJlZ2lzdGVyX25ldGRldmljZV9tYW55KFx1MDAyNmxpc3Rfa2lsbCk7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ3MzM9c3RhdGljIHZvaWQgdnhsYW5faGFuZGxlX2xvd2VyZGV2X3VucmVnaXN0ZXIoc3RydWN0IHZ4bGFuX25ldCAqdm4sXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3NDgtXHRcdGlmIChkc3QtXHUwMDNlcmVtb3RlX2lmaW5kZXggPT0gZGV2LVx1MDAzZWlmaW5kZXgpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OTpcdFx0XHR2eGxhbl9kZWxsaW5rKHZ4bGFuLVx1MDAzZWRldiwgXHUwMDI2bGlzdF9raWxsKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00OTQ0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdnhsYW5fZGVzdHJveV90dW5uZWxzKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00OTQ5LVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZ4bGFuLCBuZXh0LCBcdTAwMjZ2bi1cdTAwM2V2eGxhbl9saXN0LCBuZXh0KVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ5NTA6XHRcdHZ4bGFuX2RlbGxpbmsodnhsYW4tXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDk1MS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA2OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3NDYKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSwgbXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AgYXJlIGRlZmluaXRlbHkgdGhlIGtleSBmdW5jdGlvbnMgSSBzaG91bGQgYmUgY29uY2VudHJhdGluZyBvbiBmb3IgdGhpcyBwYXJ0aWN1bGFyIGlzc3VlLiBJJiMzOTttIHNlZWluZyBwb3RlbnRpYWwgaGVyZS4gSG93ZXZlciwgSSYjMzk7bSBhbHNvIHF1ZXN0aW9uaW5nIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AuIEl0JiMzOTtzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5IGNvbXBsaWNhdGUgdGhpbmdzLCBidXQgaXQmIzM5O3Mgc3RpbGwgd29ydGggaW52ZXN0aWdhdGluZy4KCkFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEkmIzM5O20gbWlzc2luZyBoZXJlPwoKSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZSBmb3IgdnhsYW4gZm9yIGFueXRoaW5nIEkgY2FuIHVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZYTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cbmRyaXZlcnMvbmV0L0tjb25maWc6MjMwOmNvbmZpZyBWWExBTlxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGVYdGVuc2libGUgTG9jYWwgQXJlYSBOZXR3b3JrIChWWExBTilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKlZYTEFOIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBlbmFibGluZyBvciBkaXNhYmxpbmcgVlhMQU4gZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdG9wIHdpbGwgYmUgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBuZXR3b3JrIGRyaXZlcnMsIGluY2x1ZGluZyB0aGUgcmVsYXRlZCBkZXBlbmRlbmNpZXMsIHNob3VsZCBsaXZlLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbHMgYW5kIHRoZWlyIGRlcGVuZGVuY2llcyBkZWZpbmVkIHRoZXJlLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSB3aWxsIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0JiMzOTtzIHJlcXVpcmVkLCBhbmQgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBkb3duIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHBsYXRmb3JtIGxpbWl0YXRpb25zIHByZXR0eSBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIzMDpcdGNvbmZpZyBWWExBTlxuIDIzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXCYjMzQ7XG4gMjMyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAyMzM6XHRcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuIDIzNDpcdFx0c2VsZWN0IEdST19DRUxMU1xuIDIzNTpcdFx0aGVscFxuIDIzNjpcdFx0ICBUaGlzIGFsbG93cyBvbmUgdG8gY3JlYXRlIHZ4bGFuIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyMzc6XHRcdCAgTGF5ZXIgMiBOZXR3b3JrcyBvdmVyIExheWVyIDMgTmV0d29ya3MuIFZYTEFOIGlzIG9mdGVuIHVzZWRcbiAyMzg6XHRcdCAgdG8gdHVubmVsIHZpcnR1YWwgbmV0d29yayBpbmZyYXN0cnVjdHVyZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXG4gMjM5Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTpcbiAyNDA6XHRcdCAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1tYWhhbGluZ2FtLWR1dHQtZGNvcHMtdnhsYW4tMDJcbiAyNDE6XHRcbiAyNDI6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDI0MzpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2eGxhbi5cbiAyNDQ6XHRcbiAyNDU6XHRjb25maWcgR0VORVZFXG4gMjQ2Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuIDI0NzpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjQ4Olx0XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbiAyNDk6XHRcdHNlbGVjdCBHUk9fQ0VMTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjU2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBWWExBTiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBgVlhMQU5gIGNvbmZpZ3VyYXRpb24gdG8gZGVhbCB3aXRoLCBhbmQgaXQmIzM5O3MgYnVpbHQgb24gdG9wIG9mIGBJTkVUYCwgYXMgZXhwZWN0ZWQuIFRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgdG8gYmUgYSBwYXRjaCBhZGRyZXNzaW5nIGEgYnVnIHdpdGhpbiB0aGUgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aGVyZSBkZWxldGluZyBhIHJlbW90ZSBkb2VzbiYjMzk7dCBwcm9wZXJseSBjbGVhbiB1cCB0aGUgRkRCIGVudHJ5IGlmIHRoYXQgcmVtb3RlIHdhcyB0aGUgbGFzdCBvbmUgaW4gdGhlIGxpc3QuIFRoaXMgbGVhdmVzIGFuIG9ycGhhbmVkLCBlbXB0eSByZW1vdGVzIGxpc3QuIFRoYXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4LCBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aXRoIGZ1enppbmcgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYW55IG90aGVyIGVkZ2UgY2FzZXMuCgpJJiMzOTttIHplcm9pbmcgaW4gb24gYSBmZXcga2V5IHN5bWJvbHMgaGVyZTogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpJIHdlbnQgYWhlYWQgYW5kIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgaXMsIGFzIEkgdGhvdWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgYHZ4bGFuX2ZsdXNoYCBpcyBhbHNvIHN0YXRpYywgYXMgdGhlIGNvZGUgc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc2ltaWxhciBmdW5jdGlvbi4gVGhpcyBpbXBsaWVzIG91ciBwcmltYXJ5IEFQSSBlbnRyeSBwb2ludHMgYXJlIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuCgpJJiMzOTt2ZSBhbHJlYWR5IGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGNhbGxlcnMgZXhpc3QgZm9yIGB2eGxhbl9mbHVzaGAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyAoYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCkgYXJlIHRoZSBvbmx5IGNhbGxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcsIGJ1dCBpdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwNjo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9mbHVzaFxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA1MD12eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3My0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNzQ6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3NS1cdFx0XHRjb25zdCBzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgKmRlc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMjI9c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODAtXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE4MTpcdHZ4bGFuX2ZsdXNoKHZ4bGFuLCBcdTAwMjZkZXNjKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTgyLVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTg3PXN0YXRpYyBpbnQgdnhsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMDE6XHR2eGxhbl9mbHVzaCh2eGxhbiwgXHUwMDI2ZGVzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMi1cdHZ4bGFuX3NvY2tfcmVsZWFzZSh2eGxhbik7XG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ1MTY9c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIwLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MjE6XHR2eGxhbl9mbHVzaCh2eGxhbiwgXHUwMDI2ZGVzYyk7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzcyMgoJCQkJCQkJb3V0cHV0OiAxMTEKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFZYTEFOIEZEQiBGbHVzaCBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgVlhMQU4gYW5kIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIHRoaXMgRkRCIGZsdXNoIGxvZ2ljLiBUaGUgcHJvbXB0IGd1aWRlcyBtZSB0byBwcmlvcml0aXplIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggd2hhdCBJIGhhdmUuCgpJbml0aWFsbHksIEkgaWRlbnRpZmllZCB0aHJlZSBmdW5jdGlvbnMsIHRoZSBvYnZpb3VzIGNhbmRpZGF0ZSBpcyBgdnhsYW5fZmRiX2RlbGV0ZV9idWxrYC4gTGV0JiMzOTtzIGNvbmZpcm06IElzIGl0IHN0YXRpYz8gWWVzLCBpdCBpcy4gQnV0LCBjcnVjaWFsbHksIGl0JiMzOTtzIGFzc2lnbmVkIHRvIGBuZG9fZmRiX2RlbF9idWxrYC4gU28gaXQgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcGF0aC4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIFdoZXJlIGlzIGl0IGNhbGxlZD8gYHZ4bGFuX25ldGRldl9ldGhlcl9vcHNgIGlzIHN0YXRpYywgYnV0IGFzc2lnbmVkIGR1cmluZyB0aGUgbmV0ZGV2IHNldHVwLCBpbiBgdnhsYW5fc2V0dXBgLCB3aGljaCBhc3NpZ25zIGBkZXYtJmd0O25ldGRldl9vcHMgPSAmYW1wO3Z4bGFuX25ldGRldl9ldGhlcl9vcHM7YC4gYG5kb19mZGJfZGVsX2J1bGtgIGlzIHVzZWQgYnkgYHJ0bmxfZmRiX2RlbGAgaW4gYG5ldC9jb3JlL3J0bmV0bGluay5jYC4gU28gaXQmIzM5O3MgZmluZSBmb3IgbXkgcHVycG9zZXMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3MgYSBjYWxsYmFjaywgc28gaXQmIzM5O3MgYSB2YWxpZCBlbnRyeSBwb2ludC4gVGhlIHByb21wdCYjMzk7cyBlbXBoYXNpcyBvbiBub24taW5saW5lZCBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZWZvcmUgaXQgY2Fubm90IGJlIGlubGluZWQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IGB2eGxhbl9zdG9wYCBhbmQgYHZ4bGFuX2RlbGxpbmtgLiBJIHNob3VsZCBoYXZlIGNvbnNpZGVyZWQgdGhlc2UgZmlyc3QuIGB2eGxhbl9zdG9wYCBpcyBhc3NpZ25lZCB0byBgbmRvX3N0b3BgLCBhbmQgYHZ4bGFuX2RlbGxpbmtgIGlzIGFzc2lnbmVkIHRvIGBydG5sX2xpbmtfb3BzLmRlbGxpbmtgLiBUaGVzZSBzZWVtIHBlcmZlY3QsIHRoZXkgZml0IHRoZSBjcml0ZXJpYSBuaWNlbHkuCgpHaXZlbiB0aGUgY29uZmlndXJhdGlvbnMsIHRoaXMgcGF0Y2ggaXMgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBWWExBTiBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGlzc3VlIHRoYXQmIzM5O3MgYmVpbmcgZml4ZWQgaGVyZTogdGhlIHJlbW90ZSBGREIgZW50cnkgaXMgbm90IGRlc3Ryb3llZCwgbGVhZGluZyB0byBhbiBlbXB0eSBsaXN0IGFmdGVyIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZS4gVGhhdCYjMzk7cyBhIGNyaXRpY2FsIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpc3N1ZS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDY6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnhsYW5fZmRiX2RlbGV0ZV9idWxrJiMzNDssCiAgICAmIzM0O3Z4bGFuX3N0b3AmIzM0OywKICAgICYjMzQ7dnhsYW5fZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Z4bGFuX2ZkYl9kZWxldGVfYnVsayYjMzQ7LAogICAgJiMzNDt2eGxhbl9zdG9wJiMzNDssCiAgICAmIzM0O3Z4bGFuX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFZYTEFOIEZEQiBmbHVzaCBsb2dpYyB3aGVyZSBkZWxldGluZyB0aGUgbGFzdCByZW1vdGUgZnJvbSBhbiBGREIgZW50cnkgd291bGQgbGVhdmUgYW4gZW1wdHkgcmVtb3RlcyBsaXN0IGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgRkRCIGVudHJ5LiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gdGhlIFZYTEFOIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjE2LjgzNzk1NzYzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyOTIzNTIyNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnhsYW5fZmRiX2RlbGV0ZV9idWxrXCIsXG4gICAgXCJ2eGxhbl9zdG9wXCIsXG4gICAgXCJ2eGxhbl9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFZYTEFOIEZEQiBmbHVzaCBsb2dpYyB3aGVyZSBkZWxldGluZyB0aGUgbGFzdCByZW1vdGUgZnJvbSBhbiBGREIgZW50cnkgd291bGQgbGVhdmUgYW4gZW1wdHkgcmVtb3RlcyBsaXN0IGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGUgRkRCIGVudHJ5LiBUaGlzIG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaW4gdGhlIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6MTYuODM3OTY0Mjg4WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzU1ODY1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhYzM4NzU1OTEyNGY0YWU0MjZjNGYzNmU3ZGI4NjA3NDY4NTQzMDMzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDQgMDY6NDA6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXFxuaW5kZXggZDgzNGE0ODY1YWVjYy4uYTAwZGYxMjdkYTgyNiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcXG5AQCAtMzA1OCw2ICszMDU4LDExIEBAIHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzKHN0cnVjdCB2eGxhbl9mZGIgKmYsIHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbiBcXHRcXHRpZiAoIXZ4bGFuX2ZkYl9mbHVzaF9yZW1vdGVfbWF0Y2hlcyhkZXNjLCByZCkpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4rXFx0XFx0aWYgKGxpc3RfaXNfc2luZ3VsYXIoXFx1MDAyNmYtXFx1MDAzZXJlbW90ZXMpKSB7XFxuK1xcdFxcdFxcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcXG4rXFx0XFx0XFx0cmV0dXJuO1xcbitcXHRcXHR9XFxuK1xcbiBcXHRcXHR2eGxhbl9mZGJfZHN0X2Rlc3Ryb3kodnhsYW4sIGYsIHJkLCB0cnVlKTtcXG4gXFx0XFx0cmVtb3Rlc19mbHVzaGVkID0gdHJ1ZTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoxNy4yMTQyMjAyMTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MjU0NzI1MjU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX2ZkYl9kZWxldGVfYnVsa1wiLFxuICAgIFwidnhsYW5fc3RvcFwiLFxuICAgIFwidnhsYW5fZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBWWExBTiBGREIgZmx1c2ggbG9naWMgd2hlcmUgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlIGZyb20gYW4gRkRCIGVudHJ5IHdvdWxkIGxlYXZlIGFuIGVtcHR5IHJlbW90ZXMgbGlzdCBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIEZEQiBlbnRyeS4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIHRoZSBWWExBTiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjMzg3NTU5MTI0ZjRhZTQyNmM0ZjM2ZTdkYjg2MDc0Njg1NDMwMzNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDA2OjQwOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jIGIvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG5pbmRleCBkODM0YTQ4NjVhZWNjLi5hMDBkZjEyN2RhODI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXG4rKysgYi9kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcbkBAIC0zMDU4LDYgKzMwNTgsMTEgQEAgdnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXG4gXHRcdGlmICghdnhsYW5fZmRiX2ZsdXNoX3JlbW90ZV9tYXRjaGVzKGRlc2MsIHJkKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbitcdFx0aWYgKGxpc3RfaXNfc2luZ3VsYXIoXHUwMDI2Zi1cdTAwM2VyZW1vdGVzKSkge1xuK1x0XHRcdCpwX2Rlc3Ryb3lfZmRiID0gdHJ1ZTtcbitcdFx0XHRyZXR1cm47XG4rXHRcdH1cbitcbiBcdFx0dnhsYW5fZmRiX2RzdF9kZXN0cm95KHZ4bGFuLCBmLCByZCwgdHJ1ZSk7XG4gXHRcdHJlbW90ZXNfZmx1c2hlZCA9IHRydWU7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoxNy4yMTQyMjE0MjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI3MDQzMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gRkRCIEZsdXNoIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtYWtpbmcgYSBjaGFuZ2UgdG8gdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBhbmQgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kaWZpY2F0aW9uLlxuXG5UaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBjaGVjazogYGlmIChsaXN0X2lzX3Npbmd1bGFyKFx1MDAyNmYtXHUwMDNlcmVtb3RlcykpIHsgKnBfZGVzdHJveV9mZGIgPSB0cnVlOyByZXR1cm47IH1gIHJpZ2h0IGJlZm9yZSB0aGUgY2FsbCB0byBgdnhsYW5fZmRiX2RzdF9kZXN0cm95YC4gQWxyaWdodCwgc28gdGhlIGNvZGUgaXMgY2hlY2tpbmcgaWYgdGhlIGByZW1vdGVzYCBsaXN0IGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIEZEQiBlbnRyeSBpcyBzaW5ndWxhci4gSWYgaXQgaXMsIHRoZW4gYCpwX2Rlc3Ryb3lfZmRiYCBpcyBzZXQgdG8gYHRydWVgLCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMuIFRoaXMgaW1wbGllcyB0aGUgRkRCIGVudHJ5IHdpbGwgYmUgZGVzdHJveWVkLiBFc3NlbnRpYWxseSwgdGhlIHBhdGNoIGlzIG9wdGltaXppbmcgdGhlIGRlc3RydWN0aW9uIGxvZ2ljIHdoZW4gdGhlcmUncyBvbmx5IG9uZSByZW1vdGUgZGVzdGluYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBGREIgZW50cnkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGltaXphdGlvbiBpcyBuZWNlc3NhcnkgYW5kIHdoYXQgaXQgYWNoaWV2ZXMgaW4gdGVybXMgb2YgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0J3MgZ29pbmcgb24gaW4gYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCBhbmQgaXRzIHN1cnJvdW5kaW5nIGNvbnRleHQgaW4gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMDAsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyMi41NDEyNjcwODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDEyNjAzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMDQ5PXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNTA6dnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNTEtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNzQ9c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5MS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzA5MjpcXHRcXHRcXHR2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhmLCB2eGxhbiwgZGVzYyxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA5My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2ZGVzdHJveV9mZGIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyMi41ODI1Mzg5NjRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODEzNDU1MjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFZYTEFOIEZEQiBGbHVzaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgZnVuY3Rpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UncmUgZGVhbGluZyB3aXRoIGhvdyByZW1vdGUgZm9yd2FyZGluZyBkYXRhYmFzZSBlbnRyaWVzIGFyZSBoYW5kbGVkIGluIFZYTEFOLiBJbnRlcmVzdGluZy4gQW5kIHRoaXMgZnVuY3Rpb24gaXMsIG9mIGNvdXJzZSwgY2FsbGVkIGJ5IGB2eGxhbl9mbHVzaGAuIE9rYXksIHNvIGB2eGxhbl9mbHVzaGAgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yLCB3ZWxsLCBmbHVzaGluZy4gSXQncyB0aGUgb25lIEkgbmVlZCB0byB0cmFjZSBiYWNrLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSBjYWxsIHNpdGVzIG9mIHRoYXQgYHZ4bGFuX2ZsdXNoYCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBzY2VuYXJpb3MgaW4gd2hpY2ggdGhlc2UgRkRCIG1vZGlmaWNhdGlvbnMgdGFrZSBlZmZlY3QuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIHVwc3RyZWFtIGNhbGxlcnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyOC4zOTU5OTY2MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA2NDQ5OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0xNDI1PXN0YXRpYyBlbnVtIHNrYl9kcm9wX3JlYXNvbiB2eGxhbl9zbm9vcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTE0NzQtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjE0NzU6XFx0XFx0LyogY2xvc2Ugb2ZmIHJhY2UgYmV0d2VlbiB2eGxhbl9mbHVzaCBhbmQgaW5jb21pbmcgcGFja2V0cyAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0xNDc2LVxcdFxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzA1MD12eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3RlcyhzdHJ1Y3QgdnhsYW5fZmRiICpmLCBzdHJ1Y3QgdnhsYW5fZGV2ICp2eGxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDczLS8qIFB1cmdlIHRoZSBmb3J3YXJkaW5nIHRhYmxlICovXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMwNzQ6c3RhdGljIHZvaWQgdnhsYW5fZmx1c2goc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMwNzUtXFx0XFx0XFx0Y29uc3Qgc3RydWN0IHZ4bGFuX2ZkYl9mbHVzaF9kZXNjICpkZXNjKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxMjI9c3RhdGljIGludCB2eGxhbl9mZGJfZGVsZXRlX2J1bGsoc3RydWN0IG5sbXNnaGRyICpubGgsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4MC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE4MTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTgyLVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzIwMTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMjAyLVxcdHZ4bGFuX3NvY2tfcmVsZWFzZSh2eGxhbik7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDUxNj1zdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMC1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUyMTpcXHR2eGxhbl9mbHVzaCh2eGxhbiwgXFx1MDAyNmRlc2MpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NTIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDoyOC40MzY2NDYyOTZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTAyNzMzODIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVlhMQU4gRmx1c2hpbmcgTWVjaGFuaXNtKipcblxuT2theSwgc28gYHZ4bGFuX2ZsdXNoYCBpcyB0aGUgY29yZSBmdW5jdGlvbiBmb3IgY2xlYW5pbmcgdXAgdGhlIFZYTEFOIEZEQiwgZ290IGl0LiBUaGF0IG1lYW5zIGl0J3MgcmVzcG9uc2libGUgZm9yIHJlbW92aW5nIGVudHJpZXMgZnJvbSB0aGUgRm9yd2FyZGluZyBEYXRhYmFzZS4gTm93LCBJIHNlZSBpdCdzIGNhbGxlZCBmcm9tIHRocmVlIGRpc3RpbmN0IHBsYWNlczogYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC4gVGhhdCBnaXZlcyBtZSBhIGZldyBrZXkgYXJlYXMgdG8gaW52ZXN0aWdhdGUgaWYgSSdtIHRyeWluZyB0byBvcHRpbWl6ZSBvciBkZWJ1ZyB0aGUgVlhMQU4gaW1wbGVtZW50YXRpb24uXG5cblRoZSBpbnRlcmVzdGluZyBvbmUgaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgYmVjYXVzZSwgYXMgSSByZWNhbGwsIHRoYXQncyBhbiBydG5ldGxpbmsgY2FsbGJhY2suIFRoaXMgbWVhbnMgaXQncyB0cmlnZ2VyZWQgaW4gcmVzcG9uc2UgdG8gbmV0d29yayBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGxpa2UgYSBicmlkZ2UgYmVpbmcgYnJvdWdodCBkb3duIG9yIGEgVlhMQU4gaW50ZXJmYWNlIGJlaW5nIHJlbW92ZWQuIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG15IGF0dGVudGlvbiB0aGVyZSBmaXJzdC4gVGhlIG90aGVyIGNhbGxzIGFyZSBsaWtlbHkgdHJpZ2dlcmVkIGR1cmluZyBtb3JlIGdsb2JhbCBzaHV0ZG93biBvciBsaW5rIGRlbGV0aW9uIGV2ZW50cywgYnV0IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgIGlzIHJlc3BvbmRpbmcgZHluYW1pY2FsbHkgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzbyB0aGF0J3Mgd2hlcmUgdGhlIHJlYWwtdGltZSBGREIgbWFuYWdlbWVudCB3aWxsIGJlLiBJIHNob3VsZCBjb25maXJtIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoYXQgY2FsbGJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3MTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDozNi45MzkzODIxNjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIwMDc1MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmRiX2RlbGV0ZV9idWxrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdnhsYW5fZGVsX2J1bGtfcG9saWN5W05EQV9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTIxLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMTIyOnN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMTIzLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MzI4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZ4bGFuX25ldGRldl9ldGhlcl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5My1cXHQubmRvX2ZkYl9kZWxcXHRcXHQ9IHZ4bGFuX2ZkYl9kZWxldGUsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyOTQ6XFx0Lm5kb19mZGJfZGVsX2J1bGtcXHQ9IHZ4bGFuX2ZkYl9kZWxldGVfYnVsayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzI5NS1cXHQubmRvX2ZkYl9kdW1wXFx0XFx0PSB2eGxhbl9mZGJfZHVtcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6MzYuOTgxMzk5MDU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDcwMzkyODk5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIEZEQiBEZWxldGlvbiBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgZnVuY3Rpb24sIGFuZCBpdCdzIGFuIGBuZG9fZmRiX2RlbF9idWxrYCBjYWxsYmFjaywgd2hpY2ggbWVhbnMgaXQncyBkZWZpbml0ZWx5IHBhcnQgb2YgdGhlIHN0YW5kYXJkIEZEQiAoRm9yd2FyZGluZyBEYXRhIEJhc2UpIGhhbmRsaW5nIGZyYW1ld29yay4gR29vZCwgdGhhdCdzIGV4cGVjdGVkIGFuZCBjb25maXJtcyBpdCdzIGEgdmFsaWQgZW50cnkgcG9pbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvZGUsIHNvIEknbSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgaXQgd29ya3MuXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYHZ4bGFuX2ZkYl9mbHVzaF9tYXRjaF9yZW1vdGVzYCwgYW5kIHRoYXQncyBjYWxsZWQgYnkgYHZ4bGFuX2ZsdXNoYC4gQWgsIGB2eGxhbl9mbHVzaGAhIFRoYXQgZnVuY3Rpb24gaXMgaW50ZXJlc3RpbmcsIGJlY2F1c2UsIGFzIEkgcmVjYWxsLCBpdCdzIGNhbGxlZCBieSBtdWx0aXBsZSBwbGFjZXM6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIEknbSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugbm90ZSBvZiB0aGF0LCBhcyB0aG9zZSBmdW5jdGlvbnMgYXJlIG5vdyB0aGUgZm9jdXMuXG5cbldhaXQgYSBzZWNvbmQuLi5JJ20gY2F0Y2hpbmcgc29tZXRoaW5nIGhlcmUuIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgIGlzIGFuIEFQSSBlbnRyeXBvaW50LiBBbmQgYHZ4bGFuX3N0b3BgIGlzIGBuZG9fc3RvcGAsIHdoaWNoIGlzIGEgc3RhbmRhcmQgbmV0d29yayBkZXZpY2Ugb3BlcmF0aW9uLiBgdnhsYW5fZGVsbGlua2AgaXMgYHJ0bmxfbGlua19vcHMuZGVsbGlua2AuIFRoYXQgbGFzdCBvbmUgaXMgYSBjcnVjaWFsIGxpbmsgb3BlcmF0aW9uLiBJIHNob3VsZCB2ZXJpZnkgdGhhdCBvbmUgc3BlY2lmaWNhbGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjQxLjY4NTMzMDcyNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1NDgzMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZGVsbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMxODc9c3RhdGljIGludCB2eGxhbl9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5MC1cXHRzdHJ1Y3QgdnhsYW5fZmRiX2ZsdXNoX2Rlc2MgZGVzYyA9IHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MzE5MTpcXHRcXHQvKiBEZWZhdWx0IGVudHJ5IGlzIGRlbGV0ZWQgYXQgdnhsYW5fZGVsbGluay4gKi9cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE5Mi1cXHRcXHQuaWdub3JlX2RlZmF1bHRfZW50cnkgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ0MTg9c3RhdGljIGludCB2eGxhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUxNS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDUxNjpzdGF0aWMgdm9pZCB2eGxhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MTcte1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ2ODQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4bGFuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY5Mi1cXHQuY2hhbmdlbGlua1xcdD0gdnhsYW5fY2hhbmdlbGluayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDY5MzpcXHQuZGVsbGlua1xcdD0gdnhsYW5fZGVsbGluayxcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDY5NC1cXHQuZ2V0X3NpemVcXHQ9IHZ4bGFuX2dldF9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ2OTk9c3RydWN0IG5ldF9kZXZpY2UgKnZ4bGFuX2Rldl9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ3MjMtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ3MjQ6XFx0XFx0dnhsYW5fZGVsbGluayhkZXYsIFxcdTAwMjZsaXN0X2tpbGwpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzI1LVxcdFxcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX21hbnkoXFx1MDAyNmxpc3Rfa2lsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9NDczMz1zdGF0aWMgdm9pZCB2eGxhbl9oYW5kbGVfbG93ZXJkZXZfdW5yZWdpc3RlcihzdHJ1Y3QgdnhsYW5fbmV0ICp2bixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzQ4LVxcdFxcdGlmIChkc3QtXFx1MDAzZXJlbW90ZV9pZmluZGV4ID09IGRldi1cXHUwMDNlaWZpbmRleClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6NDc0OTpcXHRcXHRcXHR2eGxhbl9kZWxsaW5rKHZ4bGFuLVxcdTAwM2VkZXYsIFxcdTAwMjZsaXN0X2tpbGwpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy00NzUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz00OTQ0PXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgdnhsYW5fZGVzdHJveV90dW5uZWxzKHN0cnVjdCB2eGxhbl9uZXQgKnZuLFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5NDktXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZ4bGFuLCBuZXh0LCBcXHUwMDI2dm4tXFx1MDAzZXZ4bGFuX2xpc3QsIG5leHQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ5NTA6XFx0XFx0dnhsYW5fZGVsbGluayh2eGxhbi1cXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ5NTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0MS43MjY4ODQ2NTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY2NDEyNTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCBhcmUgZGVmaW5pdGVseSB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBjb25jZW50cmF0aW5nIG9uIGZvciB0aGlzIHBhcnRpY3VsYXIgaXNzdWUuIEknbSBzZWVpbmcgcG90ZW50aWFsIGhlcmUuIEhvd2V2ZXIsIEknbSBhbHNvIHF1ZXN0aW9uaW5nIGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AuIEl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgY29tcGxpY2F0ZSB0aGluZ3MsIGJ1dCBpdCdzIHN0aWxsIHdvcnRoIGludmVzdGlnYXRpbmcuXG5cbkFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIEknbSBtaXNzaW5nIGhlcmU/XG5cbkkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGUgZm9yIHZ4bGFuIGZvciBhbnl0aGluZyBJIGNhbiB1c2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NDYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0Ni4zOTEwMTM3NTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDY2Nzk4OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZYTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTIxNj1jb25maWcgSVBWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIyOS1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMDpjb25maWcgVlhMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBlWHRlbnNpYmxlIExvY2FsIEFyZWEgTmV0d29yayAoVlhMQU4pXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwNjo0MDo0OC4wMzc2OTkzODFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYzNDU5NDQxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqVlhMQU4gQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IENoZWNrKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQncyBlbmFibGluZyBvciBkaXNhYmxpbmcgVlhMQU4gZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLiBNeSBmaXJzdCBzdG9wIHdpbGwgYmUgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIG5ldHdvcmsgZHJpdmVycywgaW5jbHVkaW5nIHRoZSByZWxhdGVkIGRlcGVuZGVuY2llcywgc2hvdWxkIGxpdmUuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzeW1ib2xzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMgZGVmaW5lZCB0aGVyZS4gSXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIHNvIHRoYXQncyB3aGVyZSBJIHdpbGwgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyByZXF1aXJlZCwgYW5kIEknbGwgYmUgYWJsZSB0byB0cmFjZSBkb3duIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHBsYXRmb3JtIGxpbWl0YXRpb25zIHByZXR0eSBxdWlja2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDA6NTMuNjcyMjk2NzMxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjMwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjMwOlxcdGNvbmZpZyBWWExBTlxcbiAyMzE6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG4gMjMyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAyMzM6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuIDIzNDpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuIDIzNTpcXHRcXHRoZWxwXFxuIDIzNjpcXHRcXHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdnhsYW4gdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyMzc6XFx0XFx0ICBMYXllciAyIE5ldHdvcmtzIG92ZXIgTGF5ZXIgMyBOZXR3b3Jrcy4gVlhMQU4gaXMgb2Z0ZW4gdXNlZFxcbiAyMzg6XFx0XFx0ICB0byB0dW5uZWwgdmlydHVhbCBuZXR3b3JrIGluZnJhc3RydWN0dXJlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cXG4gMjM5OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlOlxcbiAyNDA6XFx0XFx0ICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LW1haGFsaW5nYW0tZHV0dC1kY29wcy12eGxhbi0wMlxcbiAyNDE6XFx0XFxuIDI0MjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMjQzOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnhsYW4uXFxuIDI0NDpcXHRcXG4gMjQ1OlxcdGNvbmZpZyBHRU5FVkVcXG4gMjQ2OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblxcXCJcXG4gMjQ3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAyNDg6XFx0XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuIDI0OTpcXHRcXHRzZWxlY3QgR1JPX0NFTExTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQwOjUzLjY3MjM3Njk2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzQyMTQ2ODg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZYTEFOIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBgVlhMQU5gIGNvbmZpZ3VyYXRpb24gdG8gZGVhbCB3aXRoLCBhbmQgaXQncyBidWlsdCBvbiB0b3Agb2YgYElORVRgLCBhcyBleHBlY3RlZC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhIHBhdGNoIGFkZHJlc3NpbmcgYSBidWcgd2l0aGluIHRoZSBgdnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXNgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBhIHByb2JsZW0gd2hlcmUgZGVsZXRpbmcgYSByZW1vdGUgZG9lc24ndCBwcm9wZXJseSBjbGVhbiB1cCB0aGUgRkRCIGVudHJ5IGlmIHRoYXQgcmVtb3RlIHdhcyB0aGUgbGFzdCBvbmUgaW4gdGhlIGxpc3QuIFRoaXMgbGVhdmVzIGFuIG9ycGhhbmVkLCBlbXB0eSByZW1vdGVzIGxpc3QuIFRoYXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGZ1bmN0aW9uYWwgZml4LCBkZWZpbml0ZWx5IHdvcnRoIGV4cGxvcmluZyB3aXRoIGZ1enppbmcgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYW55IG90aGVyIGVkZ2UgY2FzZXMuXG5cbkknbSB6ZXJvaW5nIGluIG9uIGEgZmV3IGtleSBzeW1ib2xzIGhlcmU6IGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLCBgdnhsYW5fc3RvcGAsIGFuZCBgdnhsYW5fZGVsbGlua2AuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5JIHdlbnQgYWhlYWQgYW5kIGNvbmZpcm1lZCB0aGF0IGB2eGxhbl9mZGJfZmx1c2hfbWF0Y2hfcmVtb3Rlc2AgaXMsIGFzIEkgdGhvdWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgYHZ4bGFuX2ZsdXNoYCBpcyBhbHNvIHN0YXRpYywgYXMgdGhlIGNvZGUgc3VnZ2VzdHMgaXQncyBsaWtlbHkgYSBzaW1pbGFyIGZ1bmN0aW9uLiBUaGlzIGltcGxpZXMgb3VyIHByaW1hcnkgQVBJIGVudHJ5IHBvaW50cyBhcmUgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYC5cblxuSSd2ZSBhbHJlYWR5IGNoZWNrZWQgdG8gbWFrZSBzdXJlIG5vIG90aGVyIGNhbGxlcnMgZXhpc3QgZm9yIGB2eGxhbl9mbHVzaGAsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXNlIHRocmVlIGZ1bmN0aW9ucyAoYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AsIGB2eGxhbl9zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCkgYXJlIHRoZSBvbmx5IGNhbGxlcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZywgYnV0IGl0IGxvb2tzIGxpa2Ugd2UncmUgZ29vZCB0byBnby5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjAxLjAxNDUyNjEyOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI5NDAzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnhsYW5fZmx1c2hcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTMwNTA9dnhsYW5fZmRiX2ZsdXNoX21hdGNoX3JlbW90ZXMoc3RydWN0IHZ4bGFuX2ZkYiAqZiwgc3RydWN0IHZ4bGFuX2RldiAqdnhsYW4sXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzA3My0vKiBQdXJnZSB0aGUgZm9yd2FyZGluZyB0YWJsZSAqL1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzozMDc0OnN0YXRpYyB2b2lkIHZ4bGFuX2ZsdXNoKHN0cnVjdCB2eGxhbl9kZXYgKnZ4bGFuLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0zMDc1LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB2eGxhbl9mZGJfZmx1c2hfZGVzYyAqZGVzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTIyPXN0YXRpYyBpbnQgdnhsYW5fZmRiX2RlbGV0ZV9idWxrKHN0cnVjdCBubG1zZ2hkciAqbmxoLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMxODAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMxODE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0zMTg3PXN0YXRpYyBpbnQgdnhsYW5fc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTMyMDAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjMyMDE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMzIwMi1cXHR2eGxhbl9zb2NrX3JlbGVhc2UodnhsYW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTQ1MTY9c3RhdGljIHZvaWQgdnhsYW5fZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTQ1MjAtXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjQ1MjE6XFx0dnhsYW5fZmx1c2godnhsYW4sIFxcdTAwMjZkZXNjKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtNDUyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDY6NDE6MDEuMDU3NDc2MzY2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MzE2ODUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZYTEFOIEZEQiBGbHVzaCBMb2dpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IFZYTEFOIGFuZCBuZWVkIHRvIGlkZW50aWZ5IHRoZSBrZXkgZW50cnkgcG9pbnRzIGZvciB0aGlzIEZEQiBmbHVzaCBsb2dpYy4gVGhlIHByb21wdCBndWlkZXMgbWUgdG8gcHJpb3JpdGl6ZSBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIExldCdzIHN0YXJ0IHdpdGggd2hhdCBJIGhhdmUuXG5cbkluaXRpYWxseSwgSSBpZGVudGlmaWVkIHRocmVlIGZ1bmN0aW9ucywgdGhlIG9idmlvdXMgY2FuZGlkYXRlIGlzIGB2eGxhbl9mZGJfZGVsZXRlX2J1bGtgLiBMZXQncyBjb25maXJtOiBJcyBpdCBzdGF0aWM/IFllcywgaXQgaXMuIEJ1dCwgY3J1Y2lhbGx5LCBpdCdzIGFzc2lnbmVkIHRvIGBuZG9fZmRiX2RlbF9idWxrYC4gU28gaXQgaXMgcmVhY2hhYmxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcGF0aC4gTGV0J3MgZGlnIGRlZXBlci4gV2hlcmUgaXMgaXQgY2FsbGVkPyBgdnhsYW5fbmV0ZGV2X2V0aGVyX29wc2AgaXMgc3RhdGljLCBidXQgYXNzaWduZWQgZHVyaW5nIHRoZSBuZXRkZXYgc2V0dXAsIGluIGB2eGxhbl9zZXR1cGAsIHdoaWNoIGFzc2lnbnMgYGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dnhsYW5fbmV0ZGV2X2V0aGVyX29wcztgLiBgbmRvX2ZkYl9kZWxfYnVsa2AgaXMgdXNlZCBieSBgcnRubF9mZGJfZGVsYCBpbiBgbmV0L2NvcmUvcnRuZXRsaW5rLmNgLiBTbyBpdCdzIGZpbmUgZm9yIG15IHB1cnBvc2VzLiBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYywgaXQncyBhIGNhbGxiYWNrLCBzbyBpdCdzIGEgdmFsaWQgZW50cnkgcG9pbnQuIFRoZSBwcm9tcHQncyBlbXBoYXNpcyBvbiBub24taW5saW5lZCBmdW5jdGlvbnMgaXMgaW1wb3J0YW50LCBidXQgYHZ4bGFuX2ZkYl9kZWxldGVfYnVsa2AgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCB0aGVyZWZvcmUgaXQgY2Fubm90IGJlIGlubGluZWQsIGFuZCBpdCB3aWxsIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzcy4gVGhpcyBsb29rcyBwcm9taXNpbmcuXG5cbk5vdywgbGV0J3MgbG9vayBhdCBgdnhsYW5fc3RvcGAgYW5kIGB2eGxhbl9kZWxsaW5rYC4gSSBzaG91bGQgaGF2ZSBjb25zaWRlcmVkIHRoZXNlIGZpcnN0LiBgdnhsYW5fc3RvcGAgaXMgYXNzaWduZWQgdG8gYG5kb19zdG9wYCwgYW5kIGB2eGxhbl9kZWxsaW5rYCBpcyBhc3NpZ25lZCB0byBgcnRubF9saW5rX29wcy5kZWxsaW5rYC4gVGhlc2Ugc2VlbSBwZXJmZWN0LCB0aGV5IGZpdCB0aGUgY3JpdGVyaWEgbmljZWx5LlxuXG5HaXZlbiB0aGUgY29uZmlndXJhdGlvbnMsIHRoaXMgcGF0Y2ggaXMgbW9zdCBsaWtlbHkgcmVsYXRlZCB0byBWWExBTiBmdW5jdGlvbmFsaXR5LiBJIGtub3cgdGhlIGlzc3VlIHRoYXQncyBiZWluZyBmaXhlZCBoZXJlOiB0aGUgcmVtb3RlIEZEQiBlbnRyeSBpcyBub3QgZGVzdHJveWVkLCBsZWFkaW5nIHRvIGFuIGVtcHR5IGxpc3QgYWZ0ZXIgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlLiBUaGF0J3MgYSBjcml0aWNhbCBjb3JlIG5ldHdvcmtpbmcgbG9naWMgaXNzdWUuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gbXkgYW5hbHlzaXMuIEknbSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MjIsIk91dHB1dFRva2VucyI6MTExLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA2OjQxOjA5LjY4OTE2NDEyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzA1OTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZ4bGFuX2ZkYl9kZWxldGVfYnVsa1wiLFxuICAgIFwidnhsYW5fc3RvcFwiLFxuICAgIFwidnhsYW5fZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBWWExBTiBGREIgZmx1c2ggbG9naWMgd2hlcmUgZGVsZXRpbmcgdGhlIGxhc3QgcmVtb3RlIGZyb20gYW4gRkRCIGVudHJ5IHdvdWxkIGxlYXZlIGFuIGVtcHR5IHJlbW90ZXMgbGlzdCBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlIEZEQiBlbnRyeS4gVGhpcyBtb2RpZmllcyByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGluIHRoZSBWWExBTiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlhMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2eGxhbl9mZGJfZGVsZXRlX2J1bGtcIixcbiAgICBcInZ4bGFuX3N0b3BcIixcbiAgICBcInZ4bGFuX2RlbGxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgVlhMQU4gRkRCIGZsdXNoIGxvZ2ljIHdoZXJlIGRlbGV0aW5nIHRoZSBsYXN0IHJlbW90ZSBmcm9tIGFuIEZEQiBlbnRyeSB3b3VsZCBsZWF2ZSBhbiBlbXB0eSByZW1vdGVzIGxpc3QgaW5zdGVhZCBvZiBkZXN0cm95aW5nIHRoZSBGREIgZW50cnkuIFRoaXMgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBsb2dpYyBpbiB0aGUgVlhMQU4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflows84sf[1] Phase: Succeeded StartedAt: 2026-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 06:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 06:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2] Phase: Succeeded StartedAt: 2026-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 06:41:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 06:41:21 +0000 UTC FinishedAt: 2026-08-04 06:41:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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-workflows84sf/series-workflows84sf-convert-artifact-4214101497/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 06:41:31 +0000 UTC FinishedAt: 2026-08-04 07:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 06:41:31 +0000 UTC FinishedAt: 2026-08-04 07:16:04 +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:*afcb86e5-5a38-4c84-97cb-6ab20735093f,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-workflows84sf/series-workflows84sf-convert-artifact-4214101497/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": "83ece950-3b9e-48e0-b1ff-f376f26cc929", "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-workflows84sf/series-workflows84sf-build-action-2571546391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 06:41:31 +0000 UTC FinishedAt: 2026-08-04 07:15:04 +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:*afcb86e5-5a38-4c84-97cb-6ab20735093f,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-workflows84sf/series-workflows84sf-convert-artifact-4214101497/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": "83ece950-3b9e-48e0-b1ff-f376f26cc929", "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-workflows84sf/series-workflows84sf-build-action-2571546391/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:04 +0000 UTC FinishedAt: 2026-08-04 07:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:04 +0000 UTC FinishedAt: 2026-08-04 07:16:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:04 +0000 UTC FinishedAt: 2026-08-04 07:16:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:04 +0000 UTC FinishedAt: 2026-08-04 07:16:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-workflows84sf/series-workflows84sf-convert-artifact-3594283468/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:17 +0000 UTC FinishedAt: 2026-08-04 07:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:16:17 +0000 UTC FinishedAt: 2026-08-04 07:18:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*83ece950-3b9e-48e0-b1ff-f376f26cc929,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-workflows84sf/series-workflows84sf-build-action-2571546391/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-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:18:37 +0000 UTC FinishedAt: 2026-08-04 07:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:18:37 +0000 UTC FinishedAt: 2026-08-04 07:18:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:18:37 +0000 UTC FinishedAt: 2026-08-04 07:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:18:37 +0000 UTC FinishedAt: 2026-08-04 07:47:50 +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:*afcb86e5-5a38-4c84-97cb-6ab20735093f,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-workflows84sf/series-workflows84sf-convert-artifact-3594283468/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": "213b96ac-caee-4f7b-aaf1-b500856d276a", "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-workflows84sf/series-workflows84sf-build-action-3096885224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:18:37 +0000 UTC FinishedAt: 2026-08-04 07:47:35 +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:*afcb86e5-5a38-4c84-97cb-6ab20735093f,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-workflows84sf/series-workflows84sf-convert-artifact-3594283468/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": "213b96ac-caee-4f7b-aaf1-b500856d276a", "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-workflows84sf/series-workflows84sf-build-action-3096885224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:47:50 +0000 UTC FinishedAt: 2026-08-04 07:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:47:50 +0000 UTC FinishedAt: 2026-08-04 07:47:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:47:50 +0000 UTC FinishedAt: 2026-08-04 07:49:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:47:50 +0000 UTC FinishedAt: 2026-08-04 07:49:42 +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:*213b96ac-caee-4f7b-aaf1-b500856d276a,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-workflows84sf/series-workflows84sf-build-action-3096885224/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-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-08-04 07:49:54 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:49:54 +0000 UTC FinishedAt: 2026-08-04 07:49:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:49:54 +0000 UTC FinishedAt: 2026-08-04 07:49:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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: Failed StartedAt: 2026-08-04 07:49:55 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"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:*83ece950-3b9e-48e0-b1ff-f376f26cc929,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*213b96ac-caee-4f7b-aaf1-b500856d276a,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-workflows84sf/series-workflows84sf-build-action-2571546391/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-workflows84sf/series-workflows84sf-build-action-3096885224/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:49:55 +0000 UTC FinishedAt: 2026-08-04 07:50:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:49:55 +0000 UTC FinishedAt: 2026-08-04 07:50:00 +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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"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-workflows84sf/series-workflows84sf-convert-artifact-3311260725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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-08-04 07:49:55 +0000 UTC FinishedAt: 2026-08-04 07:49:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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: Failed StartedAt: 2026-08-04 07:50:11 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflows84sf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"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":["vxlan_fdb_delete_bulk","vxlan_stop","vxlan_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"110b5cdd5b72bcef01b8d4dfe45d922bdd16de0e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"5b1e64b5-789d-4e84-941c-478b6194958a","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: Error StartedAt: 2026-08-04 07:50:11 +0000 UTC FinishedAt: 2026-08-04 09:38:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*83ece950-3b9e-48e0-b1ff-f376f26cc929,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*213b96ac-caee-4f7b-aaf1-b500856d276a,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-workflows84sf/series-workflows84sf-build-action-2571546391/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-workflows84sf/series-workflows84sf-build-action-3096885224/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-workflows84sf/series-workflows84sf-convert-artifact-3311260725/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil