Name: series-workflowcm2ft Phase: Succeeded StartedAt: 2026-07-30 07:14:30 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[0] Phase: Succeeded StartedAt: 2026-07-30 07:14:30 +0000 UTC FinishedAt: 2026-07-30 07:50:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[0].run-triage Phase: Succeeded StartedAt: 2026-07-30 07:14:30 +0000 UTC FinishedAt: 2026-07-30 07:50:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZD1211RW", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZD1211RW", "MAC80211", "USB" ], "series_id": "9b94bd4a-bcde-4e2d-80ff-1f2f332416a6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "zd_mac_alloc_hw" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODc0N2ZhYTI5YTRmMjJiYjc5OTM4MWUxYmMwYWU2MThhOWU3YjZlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDA3OjQ5OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbmluZGV4IDk2NmQ4Y2NiMGRiY2QuLjk4MTAyYzY2MzQzNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbkBAIC0xMzUzLDYgJiM0MzsxMzUzLDE0IEBAIHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiBcdHN0cnVjdCB6ZF91c2IgKnVzYjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFpEMTIxMSBkZXZpY2VzIGFyZSBzaW5nbGUtZnVuY3Rpb24uIFJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlc1xuJiM0MztcdCAqIHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzIGZyb20gY29uZmxpY3Rpbmcgb24gaGFyZGNvZGVkIGVuZHBvaW50c1xuJiM0MztcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0cHJpbnRfaWQodWRldik7XG4gXG4gXHRpZiAoaWQtXHUwMDNlZHJpdmVyX2luZm8gXHUwMDI2IERFVklDRV9JTlNUQUxMRVIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODc0N2ZhYTI5YTRmMjJiYjc5OTM4MWUxYmMwYWU2MThhOWU3YjZlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDMwIDA3OjQ5OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwppbmRleCA5NjZkOGNjYjBkYmNkLi45ODEwMmM2NjM0MzRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwpAQCAtMTM1Myw2ICYjNDM7MTM1MywxNCBAQCBzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiAJc3RydWN0IHpkX3VzYiAqdXNiOwogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDsKIAomIzQzOwkvKgomIzQzOwkgKiBaRDEyMTEgZGV2aWNlcyBhcmUgc2luZ2xlLWZ1bmN0aW9uLiBSZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMKJiM0MzsJICogdG8gcHJldmVudCBtdWx0aXBsZSBpbnN0YW5jZXMgZnJvbSBjb25mbGljdGluZyBvbiBoYXJkY29kZWQgZW5kcG9pbnRzCiYjNDM7CSAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGludGYtJmd0O2N1cl9hbHRzZXR0aW5nLSZndDtkZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCXByaW50X2lkKHVkZXYpOwogCiAJaWYgKGlkLSZndDtkcml2ZXJfaW5mbyAmYW1wOyBERVZJQ0VfSU5TVEFMTEVSKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiB6ZDEyMTFydyBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgbmV3IHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY2AgdGhhdCYjMzk7cyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMgKGBpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZGVzYy5iSW50ZXJmYWNlTnVtYmVyICE9IDBgKS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgZnV6emluZy4KClRoaXMgYHpkMTIxMXJ3YCBkcml2ZXIgaXMgZm9yIFVTQiB3aXJlbGVzcywgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHByZXR0eSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBTaW5jZSB3ZSBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXRzIG9yIGBkdW1teV9oY2RgLCBhbmQgc3l6a2FsbGVyIHN1cHBvcnRzIFVTQiBmdXp6aW5nLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGlzIGlzIGEgc29saWQgY2FuZGlkYXRlIGZvciBzb21lIGluLWRlcHRoIGZ1enppbmcuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGB6ZDEyMTFyd2AgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgZmlndXJlIG91dCBob3cgdG8gYmVzdCB0YXJnZXQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpEMTIxMVJXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnOjI6Y29uZmlnIFpEMTIxMVJXXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtaeURBUyBaRDEyMTEvWkQxMjExQiBVU0Itd2lyZWxlc3Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnOjEzOmNvbmZpZyBaRDEyMTFSV19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7WnlEQVMgWkQxMjExIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIFpEMTIxMVJXIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBwcm9tcHQgaW52b2x2ZXMgWkQxMjExUlcuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZXZlbiBjb25zaWRlciBhbnl0aGluZyBlbHNlIGFib3V0IHRoZSBaRDEyMTFSVywgSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3Igc3lzdGVtcyBpdCByZWxpZXMgb24uIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gYW55IGFuYWx5c2lzLiBJIG5lZWQgdG8ga25vdyB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIGlmIEkmIzM5O20gZ29pbmcgdG8gbW9kaWZ5IGl0LCB0cm91Ymxlc2hvb3QgaXQsIG9yIGV2ZW4ganVzdCBhc3Nlc3MgaXRzIGN1cnJlbnQgc3RhdGUuIEkgbmVlZCB0byBpZGVudGlmeSBpdHMgZGlyZWN0IGFuZCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgbW9kdWxlcyBjYWxsIGl0LCB3aGF0IGRvZXMgaXQgY2FsbD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXM/IFRoaXMgaW52ZXN0aWdhdGlvbiBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgWkQxMjExUldcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1p5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi13aXJlbGVzcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIHdpcmVsZXNzXG4gICA4Olx0XHQgIGNoaXAsIHByZXNlbnQgaW4gbWFueSBVU0Itd2lyZWxlc3MgYWRhcHRlcnMuXG4gICA5Olx0XG4gIDEwOlx0XHQgIERldmljZSBmaXJtd2FyZSBpcyByZXF1aXJlZCBhbG9uZ3NpZGUgdGhpcyBkcml2ZXIuIFlvdSBjYW4gZG93bmxvYWRcbiAgMTE6XHRcdCAgdGhlIGZpcm13YXJlIGRpc3RyaWJ1dGlvbiBmcm9tIGh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvemQxMjExL2ZpbGVzL1xuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBaRDEyMTFSV19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtaeURBUyBaRDEyMTEgZGVidWdnaW5nXCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIFpEMTIxMVJXXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFpEMTIxMSBkZWJ1Z2dpbmcgbWVzc2FnZXMuIENob29zaW5nIFkgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBkZWJ1Z1xuICAxODpcdFx0ICBtZXNzYWdlcyBiZWluZyBzYXZlZCB0byB5b3VyIGtlcm5lbCBsb2dzLCB3aGljaCBtYXkgaGVscCBkZWJ1ZyBhbnlcbiAgMTk6XHRcdCAgcHJvYmxlbXMuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWkQxMjExUlcgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIGBaRDEyMTFSV2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFVTQiBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGRlcGVuZGVuY2llcyBsaXN0ZWQgYXJlIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBSaWdodCwgc28gSSBuZWVkIHRvIGVuYWJsZSB0aGUgYFpEMTIxMVJXYCBjb25maWd1cmF0aW9uLiBOb3csIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGRyaXZlciBpcyBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgZmlsZSBwYXRoIHBvaW50cyBtZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBoYXZlIGEgaHVuY2ggaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29kZSByZWFsIHF1aWNrIGFuZCB2ZXJpZnkgaXRzIGRlY2xhcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXRpYyBpbnQgcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzE3PWludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzNDk6c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM1MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjbHVlcyBtZSBpbiB0byBpdHMgcHVycG9zZTogaXQmIzM5O3MgbGlrZWx5IGEgY2FsbGJhY2sgZnVuY3Rpb24gdXNlZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgdXNiX2RyaXZlcmAgc3RydWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbmFtaW5nIGNvbnZlbnRpb25zIG9mIHRoaXMgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgYHByb2JlYCBmdW5jdGlvbiYjMzk7cyByb2xlIGluIHRoZSBVU0IgZGV2aWNlIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSYjMzk7cyBuYW1lIGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB1c2JfZHJpdmVyIC4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1MTc9c3RhdGljIGludCBwb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTM2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBkcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTM3LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBEcml2ZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRyaXZlcmAgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGp1c3QgZm9jdXMgb24gdGhhdCwgYnV0IHdhaXTigKYgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXMgYSBmb2N1cyBzeW1ib2wsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3Mgc3RhdGljIGFuZCAqY2FsbGVkKiBgcHJvYmVgLiBXZSBuZWVkIHNvbWV0aGluZyBsZXNzIGdlbmVyaWMuCgpMZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gc2NhbiBgemRfdXNiLmNgIGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludCwgb3IgcGVyaGFwcyBgemRfdXNiX2luaXRfaHdgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGU/CgpBaCwgcmlnaHQuIFRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzLCBpbiBmYWN0LCB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIFVTQiBkZXZpY2UgcHJvYmluZy4gSXQgd291bGQgYmUgc2lsbHkgdG8gZGlzY291bnQgaXQuCgpBbHJpZ2h0LCBhIHF1aWNrIGNoZWNr4oCmIGlzIGBwcm9iZWAgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQ/IFllcywgdGhhdCBhbnN3ZXJzIHRoYXQuCgpTbywgc2luY2UgSSBzZWVtIHRvIGJlIHN0dWNrIG9uIGBwcm9iZWAsIGFyZSB0aGVyZSBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgYXJvdW5kIGl0IGluIGB6ZF91c2IuY2AgdGhhdCBtaWdodCBwcm92aWRlIG1vcmUgY29udGV4dCBvciBpbnNpZ2h0cz8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM0MDpcdFx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuMTM0MTpcdFx0XHQgICAgICAgICBcJiMzNDtjb3VsZG4mIzM5O3QgaW5pdGlhbGl6ZSBtYWMuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4xMzQyOlx0XHRcdHJldHVybiByO1xuMTM0MzpcdFx0fVxuMTM0NDpcdFxuMTM0NTpcdFx0dXNiLVx1MDAzZWluaXRpYWxpemVkID0gMTtcbjEzNDY6XHRcdHJldHVybiAwO1xuMTM0NzpcdH1cbjEzNDg6XHRcbjEzNDk6XHRzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4xMzUwOlx0e1xuMTM1MTpcdFx0aW50IHI7XG4xMzUyOlx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4xMzUzOlx0XHRzdHJ1Y3QgemRfdXNiICp1c2I7XG4xMzU0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IE5VTEw7XG4xMzU1Olx0XG4xMzU2Olx0XHQvKlxuMTM1NzpcdFx0ICogWkQxMjExIGRldmljZXMgYXJlIHNpbmdsZS1mdW5jdGlvbi4gUmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzXG4xMzU4Olx0XHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcbjEzNTk6XHRcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxuMTM2MDpcdFx0ICovXG4xMzYxOlx0XHRpZiAoaW50Zi1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMClcbjEzNjI6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xMzYzOlx0XG4xMzY0Olx0XHRwcmludF9pZCh1ZGV2KTtcbjEzNjU6XHRcbjEzNjY6XHRcdGlmIChpZC1cdTAwM2Vkcml2ZXJfaW5mbyBcdTAwMjYgREVWSUNFX0lOU1RBTExFUilcbjEzNjc6XHRcdFx0cmV0dXJuIGVqZWN0X2luc3RhbGxlcihpbnRmKTtcbjEzNjg6XHRcbjEzNjk6XHRcdHN3aXRjaCAodWRldi1cdTAwM2VzcGVlZCkge1xuMTM3MDpcdFx0Y2FzZSBVU0JfU1BFRURfTE9XOlxuMTM3MTpcdFx0Y2FzZSBVU0JfU1BFRURfRlVMTDpcbjEzNzI6XHRcdGNhc2UgVVNCX1NQRUVEX0hJR0g6XG4xMzczOlx0XHRcdGJyZWFrO1xuMTM3NDpcdFx0ZGVmYXVsdDpcbjEzNzU6XHRcdFx0ZGV2X2RiZ19mKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtVbmtub3duIFVTQiBzcGVlZFxcblwmIzM0Oyk7XG4xMzc2Olx0XHRcdHIgPSAtRU5PREVWO1xuMTM3NzpcdFx0XHRnb3RvIGVycm9yO1xuMTM3ODpcdFx0fVxuMTM3OTpcdFxuMTM4MDpcdFx0ciA9IHVzYl9yZXNldF9kZXZpY2UodWRldik7XG4xMzgxOlx0XHRpZiAocikge1xuMTM4MjpcdFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LFxuMTM4MzpcdFx0XHRcdFwmIzM0O2NvdWxkbiYjMzk7dCByZXNldCB1c2IgZGV2aWNlLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssIHIpO1xuMTM4NDpcdFx0XHRnb3RvIGVycm9yO1xuMTM4NTpcdFx0fVxuMTM4NjpcdFxuMTM4NzpcdFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XG4xMzg4Olx0XHRpZiAoaHcgPT0gTlVMTCkge1xuMTM4OTpcdFx0XHRyID0gLUVOT01FTTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1NAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoaXMgZHJpdmVyIGZpbGUuIEl0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgcHJvYmluZyBwcm9jZXNzLCBidXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgaXMgcG90ZW50aWFsbHkgbGltaXRpbmcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW4gYWx0ZXJuYXRpdmUgdG8gaXQuIEhtbSwgbGV0IG1lIHNjcm9sbCB0byB0aGUgZW5kIG9mIGB6ZF91c2IuY2AuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgdGhhdCBJIGNhbiB1dGlsaXplIGluc3RlYWQuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTMwOlx0XG4xNTMxOlx0XHRpZiAodXNiLVx1MDAzZXdhc19ydW5uaW5nKVxuMTUzMjpcdFx0XHR6ZF91c2JfcmVzdW1lKHVzYik7XG4xNTMzOlx0XHRyZXR1cm4gMDtcbjE1MzQ6XHR9XG4xNTM1Olx0XG4xNTM2Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGRyaXZlciA9IHtcbjE1Mzc6XHRcdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4xNTM4Olx0XHQuaWRfdGFibGVcdD0gdXNiX2lkcyxcbjE1Mzk6XHRcdC5wcm9iZVx0XHQ9IHByb2JlLFxuMTU0MDpcdFx0LmRpc2Nvbm5lY3RcdD0gZGlzY29ubmVjdCxcbjE1NDE6XHRcdC5wcmVfcmVzZXRcdD0gcHJlX3Jlc2V0LFxuMTU0MjpcdFx0LnBvc3RfcmVzZXRcdD0gcG9zdF9yZXNldCxcbjE1NDM6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbjE1NDQ6XHR9O1xuMTU0NTpcdFxuMTU0NjpcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp6ZF93b3JrcXVldWU7XG4xNTQ3Olx0XG4xNTQ4Olx0c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcbjE1NDk6XHR7XG4xNTUwOlx0XHRpbnQgcjtcbjE1NTE6XHRcbjE1NTI6XHRcdHByX2RlYnVnKFwmIzM0OyVzIHVzYl9pbml0KClcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1NTM6XHRcbjE1NTQ6XHRcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcbjE1NTU6XHRcdGlmICh6ZF93b3JrcXVldWUgPT0gTlVMTCkge1xuMTU1NjpcdFx0XHRwcl9lcnIoXCYjMzQ7JXMgY291bGRuJiMzOTt0IGNyZWF0ZSB3b3JrcXVldWVcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1NTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xNTU4Olx0XHR9XG4xNTU5Olx0XG4xNTYwOlx0XHRyID0gdXNiX3JlZ2lzdGVyKFx1MDAyNmRyaXZlcik7XG4xNTYxOlx0XHRpZiAocikge1xuMTU2MjpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh6ZF93b3JrcXVldWUpO1xuMTU2MzpcdFx0XHRwcl9lcnIoXCYjMzQ7JXMgdXNiX3JlZ2lzdGVyKCkgZmFpbGVkLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssXG4xNTY0Olx0XHRcdCAgICAgICBkcml2ZXIubmFtZSwgcik7XG4xNTY1Olx0XHRcdHJldHVybiByO1xuMTU2NjpcdFx0fVxuMTU2NzpcdFxuMTU2ODpcdFx0cHJfZGVidWcoXCYjMzQ7JXMgaW5pdGlhbGl6ZWRcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1Njk6XHRcdHJldHVybiAwO1xuMTU3MDpcdH1cbjE1NzE6XHRcbjE1NzI6XHRzdGF0aWMgdm9pZCBfX2V4aXQgdXNiX2V4aXQodm9pZClcbjE1NzM6XHR7XG4xNTc0Olx0XHRwcl9kZWJ1ZyhcJiMzNDslcyB1c2JfZXhpdCgpXFxuXCYjMzQ7LCBkcml2ZXIubmFtZSk7XG4xNTc1Olx0XHR1c2JfZGVyZWdpc3RlcihcdTAwMjZkcml2ZXIpO1xuMTU3NjpcdFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcbjE1Nzc6XHR9XG4xNTc4Olx0XG4xNTc5Olx0bW9kdWxlX2luaXQodXNiX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTMxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBkcml2ZXIgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCBgdXNiX3JlZ2lzdGVyKCZhbXA7ZHJpdmVyKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgVVNCIGRyaXZlciBzdHVmZi4gTm93LCBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgc28gYHByb2JlYCBpcyBtYXJrZWQgYXMgYHN0YXRpY2Agd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQgbWFrZXMgaXQgaGFyZGVyIHRvIGp1bXAgdG8gZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBQZXJoYXBzIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgcHJvYmVgIGl0c2VsZiwgb3IgYHpkX21hY19hbGxvY19od2AsIG9yIGB6ZF91c2JfaW5pdF9od2A/IExldCBtZSBzZWUuIEFoLCB3YWl0IGEgbWludXRlLCBgemRfbWFjX2FsbG9jX2h3YCBpcyAqY2FsbGVkKiBmcm9tIGBwcm9iZWAuIFNvLCB0aGF0JiMzOTtzIGtleS4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIHdpdGggYWN0dWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgaWYgaXQmIzM5O3MgY2FsbGVkIGZyb20gcHJvYmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIExldCYjMzk7cyBzZWUgaWYgYHpkX21hY19hbGxvY19od2AgaXMgc3RhdGljIC0gdGhhdCB3b3VsZCBtYWtlIHRoaXMgaGFyZGVyIHRvIHRlc3Qgb3IgZGVidWcgb3V0c2lkZSBvZiB0aGUgYHByb2JlYCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF9tYWNfYWxsb2NfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmM9MTM0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgemRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTEzNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoxMzY2OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTEzNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5oPTI4OD1zdGF0aWMgaW5saW5lIHU4ICp6ZF9tYWNfZ2V0X3Blcm1fYWRkcihzdHJ1Y3QgemRfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmgtMjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmg6Mjk1OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuaC0yOTYtdm9pZCB6ZF9tYWNfY2xlYXIoc3RydWN0IHpkX21hYyAqbWFjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcdGh3ID0gemRfbWFjX2FsbG9jX2h3KGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cdGlmIChodyA9PSBOVUxMKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKklkZW50aWZ5aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzIGluIHRoZSBLZXJuZWwgTW9kdWxlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgbW9kdWxlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHpkX21hY19hbGxvY19od2Agc2VlbXMgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgYSBmb2N1cyBzeW1ib2wuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldCBmb3Igc3ltYm9saWMgYW5hbHlzaXMuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBmaW5kIHRoaW5ncyB0aGF0IHRoZSBsaW5rZXIgY2FuIHNlZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIFRoYXQmIzM5O3MgZ29vZC4KCkhtbSwgd2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBgemRfdXNiX2luaXRfaHdgLiBJdCBoYXMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLCBhbmQgdGhhdCBtaWdodCBhbHNvIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHdlIGNvdWxkIHVzZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyB2aXNpYmxlLCBidXQgaXQmIzM5O3Mgd29ydGggY2hlY2tpbmcgcmlnaHQgYXdheS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF91c2JfaW5pdF9odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYz0yNjk9aW50IHpkX29wX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTI3Ni1cdGlmICghdXNiLVx1MDAzZWluaXRpYWxpemVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoyNzc6XHRcdHIgPSB6ZF91c2JfaW5pdF9odyh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMjc4LVx0XHRpZiAocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzU9dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmgtMjM2LVx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmgtMjM4LXZvaWQgemRfdXNiX2NsZWFyKHN0cnVjdCB6ZF91c2IgKnVzYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgdGhhdCBgemRfdXNiX2luaXRfaHdgIGFuZCBgemRfdXNiX2luaXRgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZC4gQnV0IHRoZSBhY3R1YWwgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYHByb2JlYC4gVGhlIHBhdGNoIGlzIGFkZGluZyBhIGNoZWNrIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyB3aXRoaW4gYHByb2JlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBqdW1wIHRvIGB6ZF9tYWNfYWxsb2NfaHdgIHNpbmNlIGl0JiMzOTtzIGNhbGxlZCByaWdodCBhZnRlciB0aGUgY2hlY2suCgpIb2xkIG9uLCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIFRoZSBjaGVjayBpdHNlbGYgaXMgdGhpczogYGlmIChpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZGVzYy5iSW50ZXJmYWNlTnVtYmVyICE9IDApIHJldHVybiAtRU5PREVWO2AuIElmIHdlIHdhbnQgdG8gZm9jdXMgc3BlY2lmaWNhbGx5IG9uICp0ZXN0aW5nKiB0aGF0IGNoZWNrLCBJIGNhbiYjMzk7dCByZWFsbHkgcHJpb3JpdGl6ZSBhIGZ1bmN0aW9uIGNhbGxlZCAqYWZ0ZXIqIHRoZSBjaGVjaywgdW5sZXNzIGl0JiMzOTtzIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIHBhdGggaXMgdGFrZW4uCgpOb3csIGBwcm9iZWAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGNvbnNpZGVyYXRpb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGluc3RydWN0aW9uczogYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgYW5kIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXQgc3RhdGljLW5lc3MgdGhyb3dzIGEgd3JlbmNoIGludG8gdGhlIHdvcmtzLiBJcyBgcHJvYmVgIGlubGluZWQ/IEl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBzdHJ1Y3QgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciB3b24mIzM5O3QgYmUgYWJsZSB0byBpbmxpbmUgaXQsIGFuZCBpdCBkZWZpbml0ZWx5IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBIb3dldmVyLCB0aGUgbmFtZSBgcHJvYmVgIGlzIGluY3JlZGlibHkgZ2VuZXJpYy4gVGhlIGZ1enplciBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCBvdGhlciBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb25zIGlmIGl0IHJlbGllcyBvbiBuYW1lIG1hdGNoaW5nLCB3aGljaCBpcyBub3QgaWRlYWwuCgpTbywgaGVyZSYjMzk7cyBteSByZXZpc2VkIHN0cmF0ZWd5LiBgemRfbWFjX2FsbG9jX2h3YCBpcyBub24tc3RhdGljLCBjYWxsZWQgKmZyb20qIGBwcm9iZWAsIGFuZCBpcyBzcGVjaWZpYyB0byB0aGlzIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5LiBJdCYjMzk7cyBhIG11Y2ggYmV0dGVyIHByb3h5IGZvciBmdXp6aW5nIHRoZSBleGVjdXRpb24gcGF0aCBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIGlzIHRoZSBjb2RlICphZnRlciogdGhlIGludGVyZmFjZSBjaGVjayBwYXNzZXMuIEkmIzM5O2xsIHVzZSBpdCBhcyB0aGUgYEZvY3VzU3ltYm9sYC4gSXQmIzM5O3MgYSB1bmlxdWUgbm9uLXN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgcHJvYmVgLiBJIGFsc28ga25vdyBgemRfdXNiX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBwcm9iZWAuIEkgc2hvdWxkIHByb2JhYmx5IG1ha2Ugc3VyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBwcm9iZSBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF91c2JfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExODY9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIwMDp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTI2Mj1zdGF0aWMgaW50IGVqZWN0X2luc3RhbGxlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMxNzppbnQgemRfdXNiX2luaXRfaHcoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50LCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIGNvbnRleHQgcHJvdmlkZWQuCgoqKkFuYWx5emluZyBEcml2ZXIgSW5pdGlhbGl6YXRpb24gaW4gdGhlIFByb2JlIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhpcyBVU0IgZGV2aWNlIGRyaXZlciBpcyBpbml0aWFsaXplZC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciB0aGUgYHpkX3VzYl9pbml0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnN0YW50aWF0aW9uIHNlcXVlbmNlLiBJZiBgemRfdXNiX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBwcm9iZWAsIGl0IGluZGljYXRlcyBhIGRpcmVjdCwgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uIFRoYXQgaW1wbGllcyBhIHNwZWNpZmljIHRpbWluZyByZWxhdGlvbnNoaXAsIGFuZCB3aWxsIHByb2JhYmx5IGludm9sdmUgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXIgc2V0dGluZ3MgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgaW1wbGljYXRpb24gaXMgYWxzbyB0aGF0IGlmIHRoZSBwcm9iZSBmdW5jdGlvbiBmYWlscyB0aGVuIGB6ZF91c2JfaW5pdGAgd2lsbCBub3QgYmUgY2FsbGVkLiBBbHRlcm5hdGl2ZWx5LCBpdCBtaWdodCBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHksIHBlcmhhcHMgbGF0ZXIgb24gaW4gYSB3b3JrcXVldWUgb3IgaW4gYSBkZWRpY2F0ZWQgdGhyZWFkIHRyaWdnZXJlZCBieSBzb21lIG90aGVyIGV2ZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggdG8gYmUgY2VydGFpbi4gS25vd2luZyB0aGlzIGlzIHRoZSBmaXJzdCBjcnVjaWFsIHN0ZXAgaW4gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJiMzOTtzIHNldHVwIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSBVU0Igc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pkX3VzYl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgdGhhdCBsZWFkcyB0byBgemRfdXNiX2luaXRgLiBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwsIGJ1dCB3aXRob3V0IGtub3dpbmcgd2hlcmUgaXQmIzM5O3MgdHJpZ2dlcmVkLCBpdHMgcHVycG9zZSBpcyBnb2luZyB0byBiZSBvcGFxdWUuIEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgemRfdXNiX2luaXRgIGlzIGludm9rZWQuIEZyb20gdGhlcmUsIEkgY2FuIHJldmVyc2UgZW5naW5lZXIgdGhlIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBjcml0aWNhbCB0byBncmFzcGluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuIExldCYjMzk7cyBzdGFydCB0aGUgc2VhcmNoLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pkX3VzYl9pbml0XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYz0yMj12b2lkIHpkX2NoaXBfaW5pdChzdHJ1Y3QgemRfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmMtMjctXHRtdXRleF9pbml0KFx1MDAyNmNoaXAtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfY2hpcC5jOjI4Olx0emRfdXNiX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2V1c2IsIGh3LCBpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYy0yOS1cdHpkX3JmX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzA9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2h3ICp6ZF91c2JfdG9faHcoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oOjIzNTp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzYtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDM2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBaeURBUyBaRDEyMTEvWkQxMjExQiBVU0ItV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGlzIGNhbGxlZCBmcm9tIGB6ZF9jaGlwX2luaXRgLiBUaGUgY3JpdGljYWwgc3ltYm9sIGhlcmUgc2VlbXMgdG8gYmUgYHpkX21hY19hbGxvY19od2AuIEkgY2hlY2tlZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIGFuZCBpdCYjMzk7cyBkaXJlY3RseSBjYWxsZWQgZnJvbSBgcHJvYmVgLiBTbywgYHpkX21hY19hbGxvY19od2AgaXMgYSBzdHJvbmcgY2FuZGlkYXRlIGZvciBhIGZvY3VzIHN5bWJvbC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBUaGUgS2NvbmZpZyBmaWxlIHN0YXRlcyB0aGF0IHdlIG5lZWQgYFpEMTIxMVJXYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLiBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc3Vic3lzdGVtcywgYnV0IHdlIHNob3VsZCBpbmNsdWRlIHRoZW0gYW55d2F5LCBvciBqdXN0IGBaRDEyMTFSV2AsIGFzIHBlciB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGVuc3VyZSBldmVyeXRoaW5nIGNvbXBpbGVzIHN0YXRpY2FsbHkuIFRoZSBpbnN0cnVjdGlvbiBhbHNvIHNhaWQgdG8gbGlzdCBhbnkgcGFyZW50IHN1YnN5c3RlbXMsIHNvLCBkZWZpbml0ZWx5IGluY2x1ZGUgYE1BQzgwMjExYCBhbmQgYFVTQmAuIFRodXMsIG91ciBFbmFibGVDb25maWdzIHNob3VsZCBiZSBgWkQxMjExUldgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuCgpBaCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgcHJldmVudHMgbXVsdGlwbGUgaW50ZXJmYWNlcyBvbiB0aGUgc2FtZSBkZXZpY2UgZnJvbSBjb25mbGljdGluZyBkdWUgdG8gaGFyZGNvZGVkIGVuZHBvaW50cy4gVGhlIGNvZGUgcmVqZWN0cyBzZWNvbmRhcnkgaW50ZXJmYWNlcyAoYGJJbnRlcmZhY2VOdW1iZXIgIT0gMGApIGFuZCByZXR1cm5zIGAtRU5PREVWYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZywgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgc28gaXQmIzM5O3MgV29ydGhGdXp6aW5nLgoKTXkgaW5pdGlhbCBGb2N1c1N5bWJvbHM6IGB6ZF9tYWNfYWxsb2NfaHdgLiBFbmFibGVDb25maWdzOiBgWkQxMjExUldgLCBgTUFDODAyMTFgLCBgVVNCYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGZvY3VzIHN5bWJvbC4gU2hvdWxkIHdlIGNvbnNpZGVyIGB6ZF91c2JfaW5pdF9od2A/IE5vLCBiZWNhdXNlIGB6ZF91c2JfaW5pdF9od2AgaXMgY2FsbGVkIGZyb20gYHpkX29wX3N0YXJ0YCBhbmQgdGhpcyBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGUgYnVnIGxpZXMgaW4gYHByb2JlYCwgc28sIGZvY3VzaW5nIG9uIGB6ZF9tYWNfYWxsb2NfaHdgIHdoaWNoIGlzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBwcm9iZWAgc2VlbXMgb3B0aW1hbCBiZWNhdXNlIGl0JiMzOTtzIHdpdGhpbiB0aGUgcmVsZXZhbnQgZXhlY3V0aW9uIHBhdGguCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBgemRfdXNiLmNgIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHByb2JlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF8uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTIyND1zdGF0aWMgaW50IGhhbmRsZV92ZXJzaW9uX21pc21hdGNoKHN0cnVjdCB6ZF91c2IgKnVzYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MjI3Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjgtXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVyX2Z3ID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yNTc9c3RhdGljIGludCB1cGxvYWRfZmlybXdhcmUoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2MS1cdHUxNiBiY2REZXZpY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoyNjI6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2My1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWJfZncgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTMyMD1NT0RVTEVfRklSTVdBUkUoRldfWkQxMjExX1BSRUZJWCBcJiMzNDt1cGhyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjMtICogbm90IHJlcXVpcmUgZmlybXdhcmUgdG8gYmUgbG9hZGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MzI0OmludCB6ZF91c2JfcmVhZF9mdyhzdHJ1Y3QgemRfdXNiICp1c2IsIHpkX2FkZHJfdCBhZGRyLCB1OCAqZGF0YSwgdTE2IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTMyNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjYtXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjMyNzpcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzI4LVx0dTggKmJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0zNzI9c3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9yZWdzX2ludChzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzgzLVx0aWYgKGludF9udW0gPT0gKHUxNilDUl9JTlRFUlJVUFQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjM4NDpcdFx0c3RydWN0IHpkX21hYyAqbWFjID0gemRfaHdfbWFjKHpkX3VzYl90b19odyh1cmItXHUwMDNlY29udGV4dCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzg1LVx0XHRzcGluX2xvY2soXHUwMDI2bWFjLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTQyND1zdGF0aWMgdm9pZCBpbnRfdXJiX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzAtXHRjYXNlIFVTQl9JTlRfSURfUkVUUllfRkFJTEVEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NDcxOlx0XHR6ZF9tYWNfdHhfZmFpbGVkKHVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTUwMj1zdGF0aWMgaW5saW5lIGludCB1c2JfaW50X2VuYWJsZWQoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNDppbnQgemRfdXNiX2VuYWJsZV9pbnQoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxNi1cdGludCByO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTE3Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MTgtXHRzdHJ1Y3QgemRfdXNiX2ludGVycnVwdCAqaW50ciA9IFx1MDAyNnVzYi1cdTAwM2VpbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUyMTpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTQyLVx0aWYgKCFpbnRyLVx1MDAzZWJ1ZmZlcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTQzOlx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTQ0LVx0XHRcdFwmIzM0O2NvdWxkbiYjMzk7dCBhbGxvY2F0ZSB0cmFuc2Zlcl9idWZmZXJcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU1NTpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O3N1Ym1pdCB1cmIgJXBcXG5cJiMzNDssIGludHItXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1Ni1cdHIgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTU3LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU1ODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1OS1cdFx0XHQgXCYjMzQ7Q291bGRuJiMzOTt0IHN1Ym1pdCB1cmIuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTc3OnZvaWQgemRfdXNiX2Rpc2FibGVfaW50KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NzktXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTgwOlx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01ODEtXHRzdHJ1Y3QgemRfdXNiX2ludGVycnVwdCAqaW50ciA9IFx1MDAyNnVzYi1cdTAwM2VpbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU5OC1cdHVzYl9raWxsX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTk5Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7dXJiICVwIGtpbGxlZFxcblwmIzM0OywgdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYwMC1cdHVzYl9mcmVlX3VyYih1cmIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTYwNT1zdGF0aWMgdm9pZCBoYW5kbGVfcnhfcGFja2V0KHN0cnVjdCB6ZF91c2IgKnVzYiwgY29uc3QgdTggKmJ1ZmZlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02MTItXHRcdC8qIEl0JiMzOTtzIG5vdCBhIGNvbXBsZXRlIHBhY2tldCBhbnlob3cuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2MTM6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2ludmFsaWQsIHNtYWxsIFJYIHBhY2tldCA6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjE0LVx0XHRcdFx0XHQgICBsZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYzNy1cdFx0XHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjYzODpcdFx0XHR6ZF9tYWNfcngoemRfdXNiX3RvX2h3KHVzYiksIGJ1ZmZlciYjNDM7bCwgayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02MzktXHRcdFx0aWYgKGkgXHUwMDNlPSAyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTY0My1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2NDQ6XHRcdHpkX21hY19yeCh6ZF91c2JfdG9faHcodXNiKSwgYnVmZmVyLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjQ1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTcxMz1zdGF0aWMgc3RydWN0IHVyYiAqYWxsb2NfcnhfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTcxNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3MTU6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTcxNi1cdHN0cnVjdCB1cmIgKnVyYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz03Mzc9c3RhdGljIHZvaWQgZnJlZV9yeF91cmIoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjc0NjpzdGF0aWMgaW50IF9femRfdXNiX2VuYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjc1MjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6Nzk5OmludCB6ZF91c2JfZW5hYmxlX3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA0LVx0bXV0ZXhfbG9jayhcdTAwMjZyeC1cdTAwM2VzZXR1cF9tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MDU6XHRyID0gX196ZF91c2JfZW5hYmxlX3J4KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MDYtXHRtdXRleF91bmxvY2soXHUwMDI2cngtXHUwMDNlc2V0dXBfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODA4Olx0emRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXIodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MTM6c3RhdGljIHZvaWQgX196ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg0MDp2b2lkIHpkX3VzYl9kaXNhYmxlX3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg0MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQ0LVx0bXV0ZXhfbG9jayhcdTAwMjZyeC1cdTAwM2VzZXR1cF9tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NDU6XHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NDYtXHRtdXRleF91bmxvY2soXHUwMDI2cngtXHUwMDNlc2V0dXBfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg1MjpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzZXRfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NjQtXHRpZiAoZG9fcmVzZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg2NTpcdFx0X196ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODY2Olx0XHRfX3pkX3VzYl9lbmFibGVfcngodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg2Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzEtXHRpZiAoZG9fcmVzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NzI6XHRcdHpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg4MTp2b2lkIHpkX3VzYl9kaXNhYmxlX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODk3LVx0LyogVGhlIHN0b3BwZWQgc3RhdGUgaXMgaWdub3JlZCwgcmVseWluZyBvbiBpZWVlODAyMTFfd2FrZV9xdWV1ZXMoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODk4Olx0ICogaW4gYSBwb3RlbnRpb25hbGx5IGZvbGxvd2luZyB6ZF91c2JfZW5hYmxlX3R4KCkuXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTktXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MDgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5MDk6dm9pZCB6ZF91c2JfZW5hYmxlX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTE2LVx0dHgtXHUwMDNlc3VibWl0dGVkX3VyYnMgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTE3Olx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxOC1cdHR4LVx1MDAzZXN0b3BwZWQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTkyMj1zdGF0aWMgdm9pZCB0eF9kZWNfc3VibWl0dGVkX3VyYnMoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkyOS1cdGlmICh0eC1cdTAwM2VzdG9wcGVkIFx1MDAyNlx1MDAyNiB0eC1cdTAwM2VzdWJtaXR0ZWRfdXJicyBcdTAwM2M9IFpEX1VTQl9UWF9MT1cpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjkzMDpcdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkzMS1cdFx0dHgtXHUwMDNlc3RvcHBlZCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTM2PXN0YXRpYyB2b2lkIHR4X2luY19zdWJtaXR0ZWRfdXJicyhzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTQzLVx0aWYgKCF0eC1cdTAwM2VzdG9wcGVkIFx1MDAyNlx1MDAyNiB0eC1cdTAwM2VzdWJtaXR0ZWRfdXJicyBcdTAwM2UgWkRfVVNCX1RYX0hJR0gpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjk0NDpcdFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk0NS1cdFx0dHgtXHUwMDNlc3RvcHBlZCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTU3PXN0YXRpYyB2b2lkIHR4X3VyYl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTcwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5NzE6XHR1c2IgPSBcdTAwMjZ6ZF9od19tYWMoaW5mby1cdTAwM2VyYXRlX2RyaXZlcl9kYXRhWzBdKS1cdTAwM2VjaGlwLnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk3Mi1cdHR4ID0gXHUwMDI2dXNiLVx1MDAzZXR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk5MC1cdHNrYl91bmxpbmsoc2tiLCBcdTAwMjZ1c2ItXHUwMDNldHguc3VibWl0dGVkX3NrYnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTkxOlx0emRfbWFjX3R4X3RvX2Rldihza2IsIHVyYi1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTkyLVx0dXNiX2ZyZWVfdXJiKHVyYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAxNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwMTc6aW50IHpkX3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDIwLVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTAyMTpcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAyMi1cdHN0cnVjdCB1cmIgKnVyYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDQ0LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNDU6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2Vycm9yIHN1Ym1pdCB1cmIgJXAgJWRcXG5cJiMzNDssIHVyYiwgcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDQ2LVx0XHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNTg6c3RhdGljIGJvb2wgemRfdHhfdGltZW91dChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTA4MjpzdGF0aWMgdm9pZCB6ZF90eF93YXRjaGRvZ19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwODktXHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTA5MDpcdGlmICghemRfdHhfdGltZW91dCh1c2IpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5MS1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5My1cdC8qIFRYIGhhbHRlZCwgdHJ5IHJlc2V0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDk0Olx0ZGV2X3dhcm4oemRfdXNiX2Rldih1c2IpLCBcJiMzNDtUWC1zdGFsbCBkZXRlY3RlZCwgcmVzZXR0aW5nIGRldmljZS4uLlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDk1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTA1OnZvaWQgemRfdHhfd2F0Y2hkb2dfZW5hYmxlKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDktXHRpZiAoIXR4LVx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMTA6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTExLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoemRfd29ya3F1ZXVlLCBcdTAwMjZ0eC1cdTAwM2V3YXRjaGRvZ193b3JrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTE3OnZvaWQgemRfdHhfd2F0Y2hkb2dfZGlzYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIxLVx0aWYgKHR4LVx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjI6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIzLVx0XHR0eC1cdTAwM2V3YXRjaGRvZ19lbmFibGVkID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTEyODpzdGF0aWMgdm9pZCB6ZF9yeF9pZGxlX3RpbWVyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzMS1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB6ZF91c2IsIHJ4LmlkbGVfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMzI6XHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTM3Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTM5LVx0LyogMzAgc2Vjb25kcyBzaW5jZSBsYXN0IHJ4LCByZXNldCByeCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MDpcdHpkX3VzYl9yZXNldF9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MzpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcl90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0NTpcdHN0cnVjdCB6ZF91c2IgKnVzYiA9IGZyb21fdGFza2xldCh1c2IsIHQsIHJ4LnJlc2V0X3RpbWVyX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDc6XHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE1MDp2b2lkIHpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExNTc9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX2ludGVycnVwdChzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE2MS1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmludHItXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTYyOlx0aW50ci1cdTAwM2VpbnRlcnZhbCA9IGludF91cmJfaW50ZXJ2YWwoemRfdXNiX3RvX3VzYmRldih1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNjMtXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2aW50ci1cdTAwM2VyZWFkX3JlZ3MuY29tcGxldGlvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIxMjp2b2lkIHpkX3VzYl9jbGVhcihzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjM0PXN0YXRpYyBpbnQgc2NucHJpbnRfaWQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEyNDM6aW50IHpkX3VzYl9zY25wcmludF9pZChzdHJ1Y3QgemRfdXNiICp1c2IsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTktXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjA6XHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyMjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMjUtXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyNjpcdFx0ZGV2X2Vycih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzI3LVx0XHQgICAgICAgXCYjMzQ7Y291bGRuJiMzOTt0IGxvYWQgZmlybXdhcmUuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzE6XHRyID0gdXNiX3Jlc2V0X2NvbmZpZ3VyYXRpb24oemRfdXNiX3RvX3VzYmRldih1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzItXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMzMzpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzQtXHRcdFx0XCYjMzQ7Y291bGRuJiMzOTt0IHJlc2V0IGNvbmZpZ3VyYXRpb24uIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzg6XHRyID0gemRfbWFjX2luaXRfaHcobWFjLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzktXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0MDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDEtXHRcdCAgICAgICAgIFwmIzM0O2NvdWxkbiYjMzk7dCBpbml0aWFsaXplIG1hYy4gRXJyb3IgbnVtYmVyICVkXFxuXCYjMzQ7LCByKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcdGh3ID0gemRfbWFjX2FsbG9jX2h3KGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cdGlmIChodyA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTM6XHR1c2IgPSBcdTAwMjZ6ZF9od19tYWMoaHcpLVx1MDAzZWNoaXAudXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cdHVzYi1cdTAwM2Vpc196ZDEyMTFiID0gKGlkLVx1MDAzZWRyaXZlcl9pbmZvID09IERFVklDRV9aRDEyMTFCKSAhPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTY6XHRyID0gemRfbWFjX3ByZWluaXRfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Ny1cdGlmIChyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNS1cdGlmIChodykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQxNjpcdFx0emRfbWFjX2NsZWFyKHpkX2h3X21hYyhodykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNy1cdFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE0MjI9c3RhdGljIHZvaWQgZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQyNDpcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gemRfaW50Zl90b19odyhpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MjUtXHRzdHJ1Y3QgemRfbWFjICptYWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0MzM6XHRtYWMgPSB6ZF9od19tYWMoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzNC1cdHVzYiA9IFx1MDAyNm1hYy1cdTAwM2VjaGlwLnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDM2Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ0MC1cdC8qIEp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmchICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDQxOlx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NDI6XHR6ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ0MzpcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ0NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1MjpcdHpkX21hY19jbGVhcihtYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1My1cdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1NzpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzdW1lKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1OTpcdHN0cnVjdCB6ZF9tYWMgKm1hYyA9IHpkX3VzYl90b19tYWModXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjAtXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDYyOlx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY0Olx0ciA9IHpkX29wX3N0YXJ0KHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjUtXHRpZiAociBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ2NjpcdFx0ZGV2X3dhcm4oemRfdXNiX2Rldih1c2IpLCBcJiMzNDtEZXZpY2UgcmVzdW1lIGZhaWxlZCBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjctXHRcdFx0IFwmIzM0O3dpdGggZXJyb3IgY29kZSAlZC4gUmV0cnlpbmcuLi5cXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzQtXHRpZiAobWFjLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NzU6XHRcdHIgPSB6ZF9yZXN0b3JlX3NldHRpbmdzKG1hYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDc2LVx0XHRpZiAociBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ3NzpcdFx0XHRkZXZfZGJnKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzgtXHRcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBzZXR0aW5ncywgJWRcXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDg0OnN0YXRpYyB2b2lkIHpkX3VzYl9zdG9wKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ4NjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ4ODpcdHpkX29wX3N0b3AoemRfdXNiX3RvX2h3KHVzYiksIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDkwOlx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0OTE6XHR6ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ5MjpcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNDk3PXN0YXRpYyBpbnQgcHJlX3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTA2Olx0bWFjID0gemRfaHdfbWFjKGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDctXHR1c2IgPSBcdTAwMjZtYWMtXHUwMDNlY2hpcC51c2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MTE6XHR6ZF91c2Jfc3RvcCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNTE3PXN0YXRpYyBpbnQgcG9zdF9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUyNjpcdG1hYyA9IHpkX2h3X21hYyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI3LVx0dXNiID0gXHUwMDI2bWFjLVx1MDAzZWNoaXAudXNiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MzEtXHRpZiAodXNiLVx1MDAzZXdhc19ydW5uaW5nKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUzMjpcdFx0emRfdXNiX3Jlc3VtZSh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzMy1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1NDg9c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTU1NDpcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1NTUtXHRpZiAoemRfd29ya3F1ZXVlID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNTgwPW1vZHVsZV9leGl0KHVzYl9leGl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTgyOnN0YXRpYyBpbnQgemRfZXBfcmVnc19vdXRfbXNnKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU4My1cdFx0XHQgICAgICBpbnQgKmFjdHVhbF9sZW5ndGgsIGludCB0aW1lb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE2MzA9c3RhdGljIGJvb2wgY2hlY2tfcmVhZF9yZWdzKHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IHVzYl9yZXFfcmVhZF9yZWdzICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0MS1cdGlmIChyci1cdTAwM2VsZW5ndGggXHUwMDNjIHN0cnVjdF9zaXplKHJlZ3MsIHJlZ3MsIGNvdW50KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY0MjpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NDMtXHRcdFx0IFwmIzM0O2Vycm9yOiBhY3R1YWwgbGVuZ3RoICVkIGxlc3MgdGhhbiBleHBlY3RlZCAlenVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0OC1cdGlmIChyci1cdTAwM2VsZW5ndGggXHUwMDNlIHNpemVvZihyci1cdTAwM2VidWZmZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNjQ5Olx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1MC1cdFx0XHQgXCYjMzQ7ZXJyb3I6IGFjdHVhbCBsZW5ndGggJWQgZXhjZWVkcyBidWZmZXIgc2l6ZSAlenVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1Ny1cdFx0aWYgKHJkLVx1MDAzZWFkZHIgIT0gcmVxLVx1MDAzZWFkZHJbaV0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2NTg6XHRcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NTktXHRcdFx0XHQgXCYjMzQ7cmRbJWRdIGFkZHIgJSMwNmh4IGV4cGVjdGVkICUjMDZoeFxcblwmIzM0OywgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNjY5PXN0YXRpYyBpbnQgZ2V0X3Jlc3VsdHMoc3RydWN0IHpkX3VzYiAqdXNiLCB1MTYgKnZhbHVlcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjg4LVx0aWYgKCFjaGVja19yZWFkX3JlZ3ModXNiLCByZXEsIGNvdW50KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY4OTpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7ZXJyb3I6IGludmFsaWQgcmVhZCByZWdzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2OTAtXHRcdGdvdG8gZXJyb3JfdW5sb2NrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzA0OmludCB6ZF91c2JfaW9yZWFkMTZ2KHN0cnVjdCB6ZF91c2IgKnVzYiwgdTE2ICp2YWx1ZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzA1LVx0ICAgICAgICAgICAgIGNvbnN0IHpkX2FkZHJfdCAqYWRkcmVzc2VzLCB1bnNpZ25lZCBpbnQgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxMy1cdGlmIChjb3VudCBcdTAwM2MgMSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcxNDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7ZXJyb3I6IGNvdW50IGlzIHplcm9cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNy1cdGlmIChjb3VudCBcdTAwM2UgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcxODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MTktXHRcdFx0IFwmIzM0O2Vycm9yOiBjb3VudCAldSBleGNlZWRzIHBvc3NpYmxlIG1heCAldVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzIzLVx0aWYgKCF1c2JfaW50X2VuYWJsZWQodXNiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcyNDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MjUtXHRcdFx0ICBcJiMzNDtlcnJvcjogdXNiIGludGVycnVwdCBub3QgZW5hYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3Mjk6XHRaRF9BU1NFUlQobXV0ZXhfaXNfbG9ja2VkKFx1MDAyNnpkX3VzYl90b19jaGlwKHVzYiktXHUwMDNlbXV0ZXgpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MzAtXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB1c2JfcmVxX3JlYWRfcmVncykgJiM0MzsgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc0My1cdHRyeV9jb3VudCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ0Olx0dWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDUtXHRwcmVwYXJlX3JlYWRfcmVnc19pbnQodXNiLCByZXEsIGNvdW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NDY6XHRyID0gemRfZXBfcmVnc19vdXRfbXNnKHVkZXYsIHJlcSwgcmVxX2xlbiwgXHUwMDI2YWN0dWFsX3JlcV9sZW4sIDUwIC8qbXMqLyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzQ3LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NDg6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ5Olx0XHRcdFwmIzM0O2Vycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssIHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1MC1cdFx0Z290byBlcnJvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzUyLVx0aWYgKHJlcV9sZW4gIT0gYWN0dWFsX3JlcV9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NTM6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2Vycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpXFxuXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzU0LVx0XHRcdFwmIzM0OyByZXFfbGVuICVkICE9IGFjdHVhbF9yZXFfbGVuICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NjMtXHRcdGRpc2FibGVfcmVhZF9yZWdzX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc2NDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7cmVhZCB0aW1lZCBvdXRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc2NS1cdFx0ciA9IC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc3MC1cdGlmIChyZXRyeSBcdTAwMjZcdTAwMjYgdHJ5X2NvdW50IFx1MDAzYyAyMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc3MTpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7cmVhZCByZXRyeSwgdHJpZXMgc28gZmFyOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NzItXHRcdFx0XHR0cnlfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE3Nzk9c3RhdGljIHZvaWQgaW93cml0ZTE2dl91cmJfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzkxOnN0YXRpYyBpbnQgemRfc3VibWl0X3dhaXRpbmdfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYiwgYm9vbCBsYXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc5Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgwNy1cdFx0dXNiX3VuYW5jaG9yX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgwODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MDktXHRcdFx0XCYjMzQ7ZXJyb3IgaW4gdXNiX3N1Ym1pdF91cmIoKS4gRXJyb3IgbnVtYmVyICVkXFxuXCYjMzQ7LCByKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgxOTp2b2lkIHpkX3VzYl9pb3dyaXRlMTZ2X2FzeW5jX3N0YXJ0KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODI1Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODMyOmludCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19lbmQoc3RydWN0IHpkX3VzYiAqdXNiLCB1bnNpZ25lZCBpbnQgdGltZW91dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODM2Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODM3LVx0WkRfQVNTRVJUKHVzYi1cdTAwM2Vpbl9hc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzOS1cdC8qIFN1Ym1pdCBsYXN0IGlvd3JpdGUxNnYgVVJCICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQwOlx0ciA9IHpkX3N1Ym1pdF93YWl0aW5nX3VyYih1c2IsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg0MS1cdGlmIChyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQyOlx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg0MzpcdFx0XHRcJiMzNDtlcnJvciBpbiB6ZF9zdWJtaXRfd2FpdGluZ191c2IoKS4gXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODQ0LVx0XHRcdFwmIzM0O0Vycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1NS1cdFx0aWYgKHVzYi1cdTAwM2VjbWRfZXJyb3IgPT0gLUVOT0VOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg1NjpcdFx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcJiMzNDt0aW1lZCBvdXRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1Ny1cdFx0XHRyID0gLUVUSU1FRE9VVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg2ODppbnQgemRfdXNiX2lvd3JpdGUxNnZfYXN5bmMoc3RydWN0IHpkX3VzYiAqdXNiLCBjb25zdCBzdHJ1Y3QgemRfaW9yZXExNiAqaW9yZXFzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg2OS1cdFx0XHQgICAgdW5zaWduZWQgaW50IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODc4Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc5LVx0WkRfQVNTRVJUKHVzYi1cdTAwM2Vpbl9hc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg4My1cdGlmIChjb3VudCBcdTAwM2UgVVNCX01BWF9JT1dSSVRFMTZfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4ODQ6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODg1LVx0XHRcdFwmIzM0O2Vycm9yOiBjb3VudCAldSBleGNlZWRzIHBvc3NpYmxlIG1heCAldVxcblwmIzM0Oyxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMTAKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpEMTIxMVJXIFBhdGNoKioKCk9rYXksIHNvIGB6ZF9tYWNfYWxsb2NfaHdgIGxvb2tzIHNvbGlkLCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBnb29kIGZpeCBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBvdXRwdXQgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLCBtYWtpbmcgc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFyIGZvciB0aGUgbmV4dCBzdGVwcy4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIHNvIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byB0cnVlLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgYHpkX21hY19hbGxvY19od2AsIHNvIHRoYXQmIzM5O3MgaW4gYEZvY3VzU3ltYm9sc2AuCgpXZSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBaRDEyMTFSV2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gVGhlIHJlYXNvbmluZyBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIGNvbmZsaWN0IGlzc3VlIHRoYXQgYXJvc2Ugd2l0aCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gcHJldmVudCB0aGVzZSBjb25mbGljdHMgYnkgcmVqZWN0aW5nIHNlY29uZGFyeSBpbnRlcmZhY2VzLiBTaW5jZSBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBpbnRlcmZhY2UgcHJvYmluZywgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBXZSBjYW4gYW5kIHNob3VsZCB0cnkgdG8gZmluZCBhbnkgcmVncmVzc2lvbnMgd2l0aCB0aGVzZSBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaRDEyMTFSVyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6ZF9tYWNfYWxsb2NfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gdG8gcmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzIG9uIFpEMTIxMSBkZXZpY2VzLCBwcmV2ZW50aW5nIGNvbmZsaWN0cyBhbmQgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuIFRoaXMgbW9kaWZpZXMgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyAoZS5nLiwgZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjE2LjEzMzkwMDQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTk2MzYzNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpEMTIxMVJXXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemRfbWFjX2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToxNi4xMzM5MTQ5MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTY1OTI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg3NDdmYWEyOWE0ZjIyYmI3OTkzODFlMWJjMGFlNjE4YTllN2I2ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6NDk6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xcbmluZGV4IDk2NmQ4Y2NiMGRiY2QuLjk4MTAyYzY2MzQzNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xcbkBAIC0xMzUzLDYgKzEzNTMsMTQgQEAgc3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiBcXHRzdHJ1Y3QgemRfdXNiICp1c2I7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFpEMTIxMSBkZXZpY2VzIGFyZSBzaW5nbGUtZnVuY3Rpb24uIFJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlc1xcbitcXHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcXG4rXFx0ICogYW5kIHRyaWdnZXJpbmcgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuXFxuK1xcdCAqL1xcbitcXHRpZiAoaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHByaW50X2lkKHVkZXYpO1xcbiBcXG4gXFx0aWYgKGlkLVxcdTAwM2Vkcml2ZXJfaW5mbyBcXHUwMDI2IERFVklDRV9JTlNUQUxMRVIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjE2LjU2MDU4MzMzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY2NTY5NjY3NDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpEMTIxMVJXXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemRfbWFjX2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NzQ3ZmFhMjlhNGYyMmJiNzk5MzgxZTFiYzBhZTYxOGE5ZTdiNmU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6NDk6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXG5pbmRleCA5NjZkOGNjYjBkYmNkLi45ODEwMmM2NjM0MzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXG5AQCAtMTM1Myw2ICsxMzUzLDE0IEBAIHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiBcdHN0cnVjdCB6ZF91c2IgKnVzYjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcbiBcbitcdC8qXG4rXHQgKiBaRDEyMTEgZGV2aWNlcyBhcmUgc2luZ2xlLWZ1bmN0aW9uLiBSZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXNcbitcdCAqIHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzIGZyb20gY29uZmxpY3Rpbmcgb24gaGFyZGNvZGVkIGVuZHBvaW50c1xuK1x0ICogYW5kIHRyaWdnZXJpbmcgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuXG4rXHQgKi9cbitcdGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdHByaW50X2lkKHVkZXYpO1xuIFxuIFx0aWYgKGlkLVx1MDAzZWRyaXZlcl9pbmZvIFx1MDAyNiBERVZJQ0VfSU5TVEFMTEVSKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6MTYuNTYwNTg1NDA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NDgxODEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogemQxMjExcncgVVNCIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBuZXcgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jYCB0aGF0J3MgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMgKGBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwYCkuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgZnV6emluZy5cblxuVGhpcyBgemQxMjExcndgIGRyaXZlciBpcyBmb3IgVVNCIHdpcmVsZXNzLCB3aGljaCBtZWFucyBpdCBzaG91bGQgYmUgcHJldHR5IGFjY2Vzc2libGUgZm9yIGZ1enppbmcuIFNpbmNlIHdlIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGdhZGdldHMgb3IgYGR1bW15X2hjZGAsIGFuZCBzeXprYWxsZXIgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIFRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIHNvbWUgaW4tZGVwdGggZnV6emluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYHpkMTIxMXJ3YCB0byBnZXQgbW9yZSBjb250ZXh0IGFuZCBmaWd1cmUgb3V0IGhvdyB0byBiZXN0IHRhcmdldCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1OCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjIxLjYxNTQwNzc5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE3Mzg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWkQxMjExUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZzoyOmNvbmZpZyBaRDEyMTFSV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiWnlEQVMgWkQxMjExL1pEMTIxMUIgVVNCLXdpcmVsZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWc6MTM6Y29uZmlnIFpEMTIxMVJXX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJaeURBUyBaRDEyMTEgZGVidWdnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyMS43MDA1ODcyOTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5MjIxMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIFpEMTIxMVJXIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHByb21wdCBpbnZvbHZlcyBaRDEyMTFSVy4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIGNvbnNpZGVyIGFueXRoaW5nIGVsc2UgYWJvdXQgdGhlIFpEMTIxMVJXLCBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBzeXN0ZW1zIGl0IHJlbGllcyBvbi4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcCBpbiBhbnkgYW5hbHlzaXMuIEkgbmVlZCB0byBrbm93IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMgaWYgSSdtIGdvaW5nIHRvIG1vZGlmeSBpdCwgdHJvdWJsZXNob290IGl0LCBvciBldmVuIGp1c3QgYXNzZXNzIGl0cyBjdXJyZW50IHN0YXRlLiBJIG5lZWQgdG8gaWRlbnRpZnkgaXRzIGRpcmVjdCBhbmQgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG1vZHVsZXMgY2FsbCBpdCwgd2hhdCBkb2VzIGl0IGNhbGw/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzPyBUaGlzIGludmVzdGlnYXRpb24gaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyNC44Nzk4MTA3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBaRDEyMTFSV1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlp5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi13aXJlbGVzcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG4gICA1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIHdpcmVsZXNzXFxuICAgODpcXHRcXHQgIGNoaXAsIHByZXNlbnQgaW4gbWFueSBVU0Itd2lyZWxlc3MgYWRhcHRlcnMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgRGV2aWNlIGZpcm13YXJlIGlzIHJlcXVpcmVkIGFsb25nc2lkZSB0aGlzIGRyaXZlci4gWW91IGNhbiBkb3dubG9hZFxcbiAgMTE6XFx0XFx0ICB0aGUgZmlybXdhcmUgZGlzdHJpYnV0aW9uIGZyb20gaHR0cDovL3NmLm5ldC9wcm9qZWN0cy96ZDEyMTEvZmlsZXMvXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBaRDEyMTFSV19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiWnlEQVMgWkQxMjExIGRlYnVnZ2luZ1xcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gWkQxMjExUldcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgWkQxMjExIGRlYnVnZ2luZyBtZXNzYWdlcy4gQ2hvb3NpbmcgWSB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGRlYnVnXFxuICAxODpcXHRcXHQgIG1lc3NhZ2VzIGJlaW5nIHNhdmVkIHRvIHlvdXIga2VybmVsIGxvZ3MsIHdoaWNoIG1heSBoZWxwIGRlYnVnIGFueVxcbiAgMTk6XFx0XFx0ICBwcm9ibGVtcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyNC44Nzk4ODczOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjI5MTcyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaRDEyMTFSVyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgSSdtIGRlYWxpbmcgd2l0aCB0aGUgYFpEMTIxMVJXYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGltcGxlbWVudGF0aW9uLCBzaW5jZSB0aGUgZGVwZW5kZW5jaWVzIGxpc3RlZCBhcmUgYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZW5hYmxlIHRoZSBgWkQxMjExUldgIGNvbmZpZ3VyYXRpb24uIE5vdywgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIGlzIGJlaW5nIG1vZGlmaWVkLCBzcGVjaWZpY2FsbHkgdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoZSBmaWxlIHBhdGggcG9pbnRzIG1lIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGhhdmUgYSBodW5jaCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgcmVhbCBxdWljayBhbmQgdmVyaWZ5IGl0cyBkZWNsYXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6MjguOTQyODA3NTg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjY1NzE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgaW50IHByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEzMTc9aW50IHpkX3VzYl9pbml0X2h3KHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0OTpzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjI5LjE3NTQ3MDI2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODIyMzIyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIGl0cyBwdXJwb3NlOiBpdCdzIGxpa2VseSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgd2l0aGluIHRoZSBgc3RydWN0IHVzYl9kcml2ZXJgIHN0cnVjdHVyZS4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IG5hbWluZyBjb252ZW50aW9ucyBvZiB0aGlzIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGBwcm9iZWAgZnVuY3Rpb24ncyByb2xlIGluIHRoZSBVU0IgZGV2aWNlIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSdzIG5hbWUgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjMyLjY1NzcwNjAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE0NzI5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHVzYl9kcml2ZXIgLio9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1MTc9c3RhdGljIGludCBwb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTM2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBkcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzNy1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjMyLjc3OTE4MzQyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyOTM3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRyaXZlcmAgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGp1c3QgZm9jdXMgb24gdGhhdCwgYnV0IHdhaXTigKYgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXMgYSBmb2N1cyBzeW1ib2wsIGVzcGVjaWFsbHkgaWYgaXQncyBzdGF0aWMgYW5kICpjYWxsZWQqIGBwcm9iZWAuIFdlIG5lZWQgc29tZXRoaW5nIGxlc3MgZ2VuZXJpYy5cblxuTGV0J3Mgc2VlLiBJIG5lZWQgdG8gc2NhbiBgemRfdXNiLmNgIGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludCwgb3IgcGVyaGFwcyBgemRfdXNiX2luaXRfaHdgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGU/XG5cbkFoLCByaWdodC4gVGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMsIGluIGZhY3QsIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgVVNCIGRldmljZSBwcm9iaW5nLiBJdCB3b3VsZCBiZSBzaWxseSB0byBkaXNjb3VudCBpdC5cblxuQWxyaWdodCwgYSBxdWljayBjaGVja+KApiBpcyBgcHJvYmVgIHRoZSAqb25seSogZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQ/IFllcywgdGhhdCBhbnN3ZXJzIHRoYXQuXG5cblNvLCBzaW5jZSBJIHNlZW0gdG8gYmUgc3R1Y2sgb24gYHByb2JlYCwgYXJlIHRoZXJlIGFueSByZWxhdGVkIGZ1bmN0aW9ucyBhcm91bmQgaXQgaW4gYHpkX3VzYi5jYCB0aGF0IG1pZ2h0IHByb3ZpZGUgbW9yZSBjb250ZXh0IG9yIGluc2lnaHRzPyBMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBzZWUgd2hhdCdzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0MywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTozOS4wODIxMjI0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0MDpcXHRcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbjEzNDE6XFx0XFx0XFx0ICAgICAgICAgXFxcImNvdWxkbid0IGluaXRpYWxpemUgbWFjLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbjEzNDI6XFx0XFx0XFx0cmV0dXJuIHI7XFxuMTM0MzpcXHRcXHR9XFxuMTM0NDpcXHRcXG4xMzQ1OlxcdFxcdHVzYi1cXHUwMDNlaW5pdGlhbGl6ZWQgPSAxO1xcbjEzNDY6XFx0XFx0cmV0dXJuIDA7XFxuMTM0NzpcXHR9XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdGludCByO1xcbjEzNTI6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbjEzNTM6XFx0XFx0c3RydWN0IHpkX3VzYiAqdXNiO1xcbjEzNTQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBOVUxMO1xcbjEzNTU6XFx0XFxuMTM1NjpcXHRcXHQvKlxcbjEzNTc6XFx0XFx0ICogWkQxMjExIGRldmljZXMgYXJlIHNpbmdsZS1mdW5jdGlvbi4gUmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzXFxuMTM1ODpcXHRcXHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcXG4xMzU5OlxcdFxcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxcbjEzNjA6XFx0XFx0ICovXFxuMTM2MTpcXHRcXHRpZiAoaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxcbjEzNjI6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdHByaW50X2lkKHVkZXYpO1xcbjEzNjU6XFx0XFxuMTM2NjpcXHRcXHRpZiAoaWQtXFx1MDAzZWRyaXZlcl9pbmZvIFxcdTAwMjYgREVWSUNFX0lOU1RBTExFUilcXG4xMzY3OlxcdFxcdFxcdHJldHVybiBlamVjdF9pbnN0YWxsZXIoaW50Zik7XFxuMTM2ODpcXHRcXG4xMzY5OlxcdFxcdHN3aXRjaCAodWRldi1cXHUwMDNlc3BlZWQpIHtcXG4xMzcwOlxcdFxcdGNhc2UgVVNCX1NQRUVEX0xPVzpcXG4xMzcxOlxcdFxcdGNhc2UgVVNCX1NQRUVEX0ZVTEw6XFxuMTM3MjpcXHRcXHRjYXNlIFVTQl9TUEVFRF9ISUdIOlxcbjEzNzM6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NDpcXHRcXHRkZWZhdWx0OlxcbjEzNzU6XFx0XFx0XFx0ZGV2X2RiZ19mKFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsIFxcXCJVbmtub3duIFVTQiBzcGVlZFxcXFxuXFxcIik7XFxuMTM3NjpcXHRcXHRcXHRyID0gLUVOT0RFVjtcXG4xMzc3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMTM3ODpcXHRcXHR9XFxuMTM3OTpcXHRcXG4xMzgwOlxcdFxcdHIgPSB1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbjEzODE6XFx0XFx0aWYgKHIpIHtcXG4xMzgyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmludGYtXFx1MDAzZWRldixcXG4xMzgzOlxcdFxcdFxcdFxcdFxcXCJjb3VsZG4ndCByZXNldCB1c2IgZGV2aWNlLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbjEzODQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMzg1OlxcdFxcdH1cXG4xMzg2OlxcdFxcbjEzODc6XFx0XFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XFxuMTM4ODpcXHRcXHRpZiAoaHcgPT0gTlVMTCkge1xcbjEzODk6XFx0XFx0XFx0ciA9IC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjM5LjA4MjIzMTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NDM2NTkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhpcyBkcml2ZXIgZmlsZS4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHByb2JpbmcgcHJvY2VzcywgYnV0IHRoZSBmYWN0IHRoYXQgaXQncyBzdGF0aWMgaXMgcG90ZW50aWFsbHkgbGltaXRpbmcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSB0byBpdC4gSG1tLCBsZXQgbWUgc2Nyb2xsIHRvIHRoZSBlbmQgb2YgYHpkX3VzYi5jYC4gUGVyaGFwcyB0aGVyZSdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIHRoYXQgSSBjYW4gdXRpbGl6ZSBpbnN0ZWFkLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6NDIuNjU2NjAwMjc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTMwOlxcdFxcbjE1MzE6XFx0XFx0aWYgKHVzYi1cXHUwMDNld2FzX3J1bm5pbmcpXFxuMTUzMjpcXHRcXHRcXHR6ZF91c2JfcmVzdW1lKHVzYik7XFxuMTUzMzpcXHRcXHRyZXR1cm4gMDtcXG4xNTM0OlxcdH1cXG4xNTM1OlxcdFxcbjE1MzY6XFx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGRyaXZlciA9IHtcXG4xNTM3OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4xNTM4OlxcdFxcdC5pZF90YWJsZVxcdD0gdXNiX2lkcyxcXG4xNTM5OlxcdFxcdC5wcm9iZVxcdFxcdD0gcHJvYmUsXFxuMTU0MDpcXHRcXHQuZGlzY29ubmVjdFxcdD0gZGlzY29ubmVjdCxcXG4xNTQxOlxcdFxcdC5wcmVfcmVzZXRcXHQ9IHByZV9yZXNldCxcXG4xNTQyOlxcdFxcdC5wb3N0X3Jlc2V0XFx0PSBwb3N0X3Jlc2V0LFxcbjE1NDM6XFx0XFx0LmRpc2FibGVfaHViX2luaXRpYXRlZF9scG0gPSAxLFxcbjE1NDQ6XFx0fTtcXG4xNTQ1OlxcdFxcbjE1NDY6XFx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnpkX3dvcmtxdWV1ZTtcXG4xNTQ3OlxcdFxcbjE1NDg6XFx0c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcXG4xNTQ5OlxcdHtcXG4xNTUwOlxcdFxcdGludCByO1xcbjE1NTE6XFx0XFxuMTU1MjpcXHRcXHRwcl9kZWJ1ZyhcXFwiJXMgdXNiX2luaXQoKVxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1NTM6XFx0XFxuMTU1NDpcXHRcXHR6ZF93b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShkcml2ZXIubmFtZSk7XFxuMTU1NTpcXHRcXHRpZiAoemRfd29ya3F1ZXVlID09IE5VTEwpIHtcXG4xNTU2OlxcdFxcdFxcdHByX2VycihcXFwiJXMgY291bGRuJ3QgY3JlYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1NTc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTU1ODpcXHRcXHR9XFxuMTU1OTpcXHRcXG4xNTYwOlxcdFxcdHIgPSB1c2JfcmVnaXN0ZXIoXFx1MDAyNmRyaXZlcik7XFxuMTU2MTpcXHRcXHRpZiAocikge1xcbjE1NjI6XFx0XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcXG4xNTYzOlxcdFxcdFxcdHByX2VycihcXFwiJXMgdXNiX3JlZ2lzdGVyKCkgZmFpbGVkLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsXFxuMTU2NDpcXHRcXHRcXHQgICAgICAgZHJpdmVyLm5hbWUsIHIpO1xcbjE1NjU6XFx0XFx0XFx0cmV0dXJuIHI7XFxuMTU2NjpcXHRcXHR9XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdHByX2RlYnVnKFxcXCIlcyBpbml0aWFsaXplZFxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1Njk6XFx0XFx0cmV0dXJuIDA7XFxuMTU3MDpcXHR9XFxuMTU3MTpcXHRcXG4xNTcyOlxcdHN0YXRpYyB2b2lkIF9fZXhpdCB1c2JfZXhpdCh2b2lkKVxcbjE1NzM6XFx0e1xcbjE1NzQ6XFx0XFx0cHJfZGVidWcoXFxcIiVzIHVzYl9leGl0KClcXFxcblxcXCIsIGRyaXZlci5uYW1lKTtcXG4xNTc1OlxcdFxcdHVzYl9kZXJlZ2lzdGVyKFxcdTAwMjZkcml2ZXIpO1xcbjE1NzY6XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcXG4xNTc3OlxcdH1cXG4xNTc4OlxcdFxcbjE1Nzk6XFx0bW9kdWxlX2luaXQodXNiX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo0Mi42NTY3ODU4NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMzE0MDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKk5hdmlnYXRpbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluaXRpYWxpemVkIHdpdGggYHVzYl9yZWdpc3RlcihcdTAwMjZkcml2ZXIpYC4gVGhhdCdzIHN0YW5kYXJkIFVTQiBkcml2ZXIgc3R1ZmYuIE5vdywgSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgc28gYHByb2JlYCBpcyBtYXJrZWQgYXMgYHN0YXRpY2Agd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQgbWFrZXMgaXQgaGFyZGVyIHRvIGp1bXAgdG8gZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBQZXJoYXBzIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgcHJvYmVgIGl0c2VsZiwgb3IgYHpkX21hY19hbGxvY19od2AsIG9yIGB6ZF91c2JfaW5pdF9od2A/IExldCBtZSBzZWUuIEFoLCB3YWl0IGEgbWludXRlLCBgemRfbWFjX2FsbG9jX2h3YCBpcyAqY2FsbGVkKiBmcm9tIGBwcm9iZWAuIFNvLCB0aGF0J3Mga2V5LiBJdCdzIGxpa2VseSBpbnZvbHZlZCB3aXRoIGFjdHVhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGlmIGl0J3MgY2FsbGVkIGZyb20gcHJvYmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIExldCdzIHNlZSBpZiBgemRfbWFjX2FsbG9jX2h3YCBpcyBzdGF0aWMgLSB0aGF0IHdvdWxkIG1ha2UgdGhpcyBoYXJkZXIgdG8gdGVzdCBvciBkZWJ1ZyBvdXRzaWRlIG9mIHRoZSBgcHJvYmVgIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjQ3LjQ3OTkyODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMDU4NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpkX21hY19hbGxvY19od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmM9MTM0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgemRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoxMzY2OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYy0xMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5oPTI4OD1zdGF0aWMgaW5saW5lIHU4ICp6ZF9tYWNfZ2V0X3Blcm1fYWRkcihzdHJ1Y3QgemRfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuaC0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmg6Mjk1OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmgtMjk2LXZvaWQgemRfbWFjX2NsZWFyKHN0cnVjdCB6ZF9tYWMgKm1hYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcXHRodyA9IHpkX21hY19hbGxvY19odyhpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg4LVxcdGlmIChodyA9PSBOVUxMKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjQ3LjU3MDk5MjQ0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcwNDY3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKklkZW50aWZ5aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzIGluIHRoZSBLZXJuZWwgTW9kdWxlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIG1vZHVsZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGB6ZF9tYWNfYWxsb2NfaHdgIHNlZW1zIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGEgZm9jdXMgc3ltYm9sLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldCBmb3Igc3ltYm9saWMgYW5hbHlzaXMuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBmaW5kIHRoaW5ncyB0aGF0IHRoZSBsaW5rZXIgY2FuIHNlZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIFRoYXQncyBnb29kLlxuXG5IbW0sIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBgemRfdXNiX2luaXRfaHdgLiBJdCBoYXMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLCBhbmQgdGhhdCBtaWdodCBhbHNvIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHdlIGNvdWxkIHVzZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgdmlzaWJsZSwgYnV0IGl0J3Mgd29ydGggY2hlY2tpbmcgcmlnaHQgYXdheS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo1MS40NDE0NjI3MjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODkxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpkX3VzYl9pbml0X2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYz0yNjk9aW50IHpkX29wX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMjc2LVxcdGlmICghdXNiLVxcdTAwM2Vpbml0aWFsaXplZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jOjI3NzpcXHRcXHRyID0gemRfdXNiX2luaXRfaHcodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYy0yNzgtXFx0XFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzU9dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzNi1cXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzOC12b2lkIHpkX3VzYl9jbGVhcihzdHJ1Y3QgemRfdXNiICp1c2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo1MS40OTUzNjAwODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUwOTU1OTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBJIHNlZSB0aGF0IGB6ZF91c2JfaW5pdF9od2AgYW5kIGB6ZF91c2JfaW5pdGAgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBpcyBnb29kLiBCdXQgdGhlIGFjdHVhbCBtb2RpZmllZCBmdW5jdGlvbiBpcyBgcHJvYmVgLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgY2hlY2sgdG8gcmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzIHdpdGhpbiBgcHJvYmVgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1bXAgdG8gYHpkX21hY19hbGxvY19od2Agc2luY2UgaXQncyBjYWxsZWQgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLlxuXG5Ib2xkIG9uLCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIFRoZSBjaGVjayBpdHNlbGYgaXMgdGhpczogYGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKSByZXR1cm4gLUVOT0RFVjtgLiBJZiB3ZSB3YW50IHRvIGZvY3VzIHNwZWNpZmljYWxseSBvbiAqdGVzdGluZyogdGhhdCBjaGVjaywgSSBjYW4ndCByZWFsbHkgcHJpb3JpdGl6ZSBhIGZ1bmN0aW9uIGNhbGxlZCAqYWZ0ZXIqIHRoZSBjaGVjaywgdW5sZXNzIGl0J3MgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gcGF0aCBpcyB0YWtlbi5cblxuTm93LCBgcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBjb25zaWRlcmF0aW9uLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBpbnN0cnVjdGlvbnM6IGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIGFuZCBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF0IHN0YXRpYy1uZXNzIHRocm93cyBhIHdyZW5jaCBpbnRvIHRoZSB3b3Jrcy4gSXMgYHByb2JlYCBpbmxpbmVkPyBJdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBzdHJ1Y3QgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciB3b24ndCBiZSBhYmxlIHRvIGlubGluZSBpdCwgYW5kIGl0IGRlZmluaXRlbHkgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEhvd2V2ZXIsIHRoZSBuYW1lIGBwcm9iZWAgaXMgaW5jcmVkaWJseSBnZW5lcmljLiBUaGUgZnV6emVyIG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIG90aGVyIHNpbWlsYXJseSBuYW1lZCBmdW5jdGlvbnMgaWYgaXQgcmVsaWVzIG9uIG5hbWUgbWF0Y2hpbmcsIHdoaWNoIGlzIG5vdCBpZGVhbC5cblxuU28sIGhlcmUncyBteSByZXZpc2VkIHN0cmF0ZWd5LiBgemRfbWFjX2FsbG9jX2h3YCBpcyBub24tc3RhdGljLCBjYWxsZWQgKmZyb20qIGBwcm9iZWAsIGFuZCBpcyBzcGVjaWZpYyB0byB0aGlzIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYSBtdWNoIGJldHRlciBwcm94eSBmb3IgZnV6emluZyB0aGUgZXhlY3V0aW9uIHBhdGggSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIGlzIHRoZSBjb2RlICphZnRlciogdGhlIGludGVyZmFjZSBjaGVjayBwYXNzZXMuIEknbGwgdXNlIGl0IGFzIHRoZSBgRm9jdXNTeW1ib2xgLiBJdCdzIGEgdW5pcXVlIG5vbi1zdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGZyb20gYHByb2JlYC4gSSBhbHNvIGtub3cgYHpkX3VzYl9pbml0YCBpcyBjYWxsZWQgZnJvbSBgcHJvYmVgLiBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgaXQncyBjYWxsZWQgZnJvbSBwcm9iZSBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODA0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjAwLjAwNDkyMTk2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MzkxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemRfdXNiX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVxcdCAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTI2Mj1zdGF0aWMgaW50IGVqZWN0X2luc3RhbGxlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMxNzppbnQgemRfdXNiX2luaXRfaHcoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDowMC4wODE1NjU5MDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjMyNDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQsIGZvY3VzaW5nIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBhbmQgY29udGV4dCBwcm92aWRlZC5cblxuKipBbmFseXppbmcgRHJpdmVyIEluaXRpYWxpemF0aW9uIGluIHRoZSBQcm9iZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhpcyBVU0IgZGV2aWNlIGRyaXZlciBpcyBpbml0aWFsaXplZC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciB0aGUgYHpkX3VzYl9pbml0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlcidzIGluc3RhbnRpYXRpb24gc2VxdWVuY2UuIElmIGB6ZF91c2JfaW5pdGAgaXMgY2FsbGVkIGZyb20gYHByb2JlYCwgaXQgaW5kaWNhdGVzIGEgZGlyZWN0LCBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4gVGhhdCBpbXBsaWVzIGEgc3BlY2lmaWMgdGltaW5nIHJlbGF0aW9uc2hpcCwgYW5kIHdpbGwgcHJvYmFibHkgaW52b2x2ZSBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlciBzZXR0aW5ncyBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyBhbHNvIHRoYXQgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGZhaWxzIHRoZW4gYHpkX3VzYl9pbml0YCB3aWxsIG5vdCBiZSBjYWxsZWQuIEFsdGVybmF0aXZlbHksIGl0IG1pZ2h0IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSwgcGVyaGFwcyBsYXRlciBvbiBpbiBhIHdvcmtxdWV1ZSBvciBpbiBhIGRlZGljYXRlZCB0aHJlYWQgdHJpZ2dlcmVkIGJ5IHNvbWUgb3RoZXIgZXZlbnQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBjZXJ0YWluLiBLbm93aW5nIHRoaXMgaXMgdGhlIGZpcnN0IGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBzZXR1cCBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgVVNCIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTAyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NTA6MDMuNzM3ODk0MjM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU2MzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF91c2JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMTg2PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEyMDA6dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXFx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjAzLjc5MjQ2MjU5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzOTA1MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgdGhhdCBsZWFkcyB0byBgemRfdXNiX2luaXRgLiBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwsIGJ1dCB3aXRob3V0IGtub3dpbmcgd2hlcmUgaXQncyB0cmlnZ2VyZWQsIGl0cyBwdXJwb3NlIGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4gSSBuZWVkIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIGB6ZF91c2JfaW5pdGAgaXMgaW52b2tlZC4gRnJvbSB0aGVyZSwgSSBjYW4gcmV2ZXJzZSBlbmdpbmVlciB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBiaWdnZXIgcGljdHVyZS4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NTA6MDcuMTM2MzcxNjA1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgyMzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF91c2JfaW5pdFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmM9MjI9dm9pZCB6ZF9jaGlwX2luaXQoc3RydWN0IHpkX2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmMtMjctXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYzoyODpcXHR6ZF91c2JfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldXNiLCBodywgaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfY2hpcC5jLTI5LVxcdHpkX3JmX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXJmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExODY9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIwMDp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTIwMS1cXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oPTIzMD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX3VzYl90b19odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM1OnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzYtXFx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDowNy4xOTIyMDM0OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwNzc1NDcxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi1XaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGlzIGNhbGxlZCBmcm9tIGB6ZF9jaGlwX2luaXRgLiBUaGUgY3JpdGljYWwgc3ltYm9sIGhlcmUgc2VlbXMgdG8gYmUgYHpkX21hY19hbGxvY19od2AuIEkgY2hlY2tlZCB3aGVyZSBpdCdzIGNhbGxlZCwgYW5kIGl0J3MgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHByb2JlYC4gU28sIGB6ZF9tYWNfYWxsb2NfaHdgIGlzIGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBmb2N1cyBzeW1ib2wuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFRoZSBLY29uZmlnIGZpbGUgc3RhdGVzIHRoYXQgd2UgbmVlZCBgWkQxMjExUldgLCBgVVNCYCwgYW5kIGBNQUM4MDIxMWAuIGBVU0JgIGFuZCBgTUFDODAyMTFgIGFyZSBzdGFuZGFyZCBzdWJzeXN0ZW1zLCBidXQgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlbSBhbnl3YXksIG9yIGp1c3QgYFpEMTIxMVJXYCwgYXMgcGVyIHRoZSBpbnN0cnVjdGlvbnMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgY29tcGlsZXMgc3RhdGljYWxseS4gVGhlIGluc3RydWN0aW9uIGFsc28gc2FpZCB0byBsaXN0IGFueSBwYXJlbnQgc3Vic3lzdGVtcywgc28sIGRlZmluaXRlbHkgaW5jbHVkZSBgTUFDODAyMTFgIGFuZCBgVVNCYC4gVGh1cywgb3VyIEVuYWJsZUNvbmZpZ3Mgc2hvdWxkIGJlIGBaRDEyMTFSV2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC5cblxuQWgsIHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgcHJldmVudHMgbXVsdGlwbGUgaW50ZXJmYWNlcyBvbiB0aGUgc2FtZSBkZXZpY2UgZnJvbSBjb25mbGljdGluZyBkdWUgdG8gaGFyZGNvZGVkIGVuZHBvaW50cy4gVGhlIGNvZGUgcmVqZWN0cyBzZWNvbmRhcnkgaW50ZXJmYWNlcyAoYGJJbnRlcmZhY2VOdW1iZXIgIT0gMGApIGFuZCByZXR1cm5zIGAtRU5PREVWYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZywgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgc28gaXQncyBXb3J0aEZ1enppbmcuXG5cbk15IGluaXRpYWwgRm9jdXNTeW1ib2xzOiBgemRfbWFjX2FsbG9jX2h3YC4gRW5hYmxlQ29uZmlnczogYFpEMTIxMVJXYCwgYE1BQzgwMjExYCwgYFVTQmAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZm9jdXMgc3ltYm9sLiBTaG91bGQgd2UgY29uc2lkZXIgYHpkX3VzYl9pbml0X2h3YD8gTm8sIGJlY2F1c2UgYHpkX3VzYl9pbml0X2h3YCBpcyBjYWxsZWQgZnJvbSBgemRfb3Bfc3RhcnRgIGFuZCB0aGlzIGlzIGEgbWFjODAyMTEgY2FsbGJhY2suIFRoZSBidWcgbGllcyBpbiBgcHJvYmVgLCBzbywgZm9jdXNpbmcgb24gYHpkX21hY19hbGxvY19od2Agd2hpY2ggaXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHByb2JlYCBzZWVtcyBvcHRpbWFsIGJlY2F1c2UgaXQncyB3aXRoaW4gdGhlIHJlbGV2YW50IGV4ZWN1dGlvbiBwYXRoLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBgemRfdXNiLmNgIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHByb2JlYCwganVzdCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQzNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDoxNy4yNjk3NTM1OThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODgwNjczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF8uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTYzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yMjQ9c3RhdGljIGludCBoYW5kbGVfdmVyc2lvbl9taXNtYXRjaChzdHJ1Y3QgemRfdXNiICp1c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjIyNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjgtXFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1cl9mdyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yNTc9c3RhdGljIGludCB1cGxvYWRfZmlybXdhcmUoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMjYxLVxcdHUxNiBiY2REZXZpY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MjYyOlxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2My1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnViX2Z3ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTMyMD1NT0RVTEVfRklSTVdBUkUoRldfWkQxMjExX1BSRUZJWCBcXFwidXBoclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzIzLSAqIG5vdCByZXF1aXJlIGZpcm13YXJlIHRvIGJlIGxvYWRlZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzozMjQ6aW50IHpkX3VzYl9yZWFkX2Z3KHN0cnVjdCB6ZF91c2IgKnVzYiwgemRfYWRkcl90IGFkZHIsIHU4ICpkYXRhLCB1MTYgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTMyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzI2LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjMyNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjgtXFx0dTggKmJ1ZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTM3Mj1zdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX3JlZ3NfaW50KHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTM4My1cXHRpZiAoaW50X251bSA9PSAodTE2KUNSX0lOVEVSUlVQVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjM4NDpcXHRcXHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF9od19tYWMoemRfdXNiX3RvX2h3KHVyYi1cXHUwMDNlY29udGV4dCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTM4NS1cXHRcXHRzcGluX2xvY2soXFx1MDAyNm1hYy1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz00MjQ9c3RhdGljIHZvaWQgaW50X3VyYl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzAtXFx0Y2FzZSBVU0JfSU5UX0lEX1JFVFJZX0ZBSUxFRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo0NzE6XFx0XFx0emRfbWFjX3R4X2ZhaWxlZCh1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTQ3Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTUwMj1zdGF0aWMgaW5saW5lIGludCB1c2JfaW50X2VuYWJsZWQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNDppbnQgemRfdXNiX2VuYWJsZV9pbnQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTE2LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MTgtXFx0c3RydWN0IHpkX3VzYl9pbnRlcnJ1cHQgKmludHIgPSBcXHUwMDI2dXNiLVxcdTAwM2VpbnRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUyMTpcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcXFwiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NDItXFx0aWYgKCFpbnRyLVxcdTAwM2VidWZmZXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1NDM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NDQtXFx0XFx0XFx0XFxcImNvdWxkbid0IGFsbG9jYXRlIHRyYW5zZmVyX2J1ZmZlclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTU1OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJzdWJtaXQgdXJiICVwXFxcXG5cXFwiLCBpbnRyLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1Ni1cXHRyID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTctXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1NTg6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTktXFx0XFx0XFx0IFxcXCJDb3VsZG4ndCBzdWJtaXQgdXJiLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU3Nzp2b2lkIHpkX3VzYl9kaXNhYmxlX2ludChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NzktXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1ODA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTgxLVxcdHN0cnVjdCB6ZF91c2JfaW50ZXJydXB0ICppbnRyID0gXFx1MDAyNnVzYi1cXHUwMDNlaW50cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU5OC1cXHR1c2Jfa2lsbF91cmIodXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1OTk6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInVyYiAlcCBraWxsZWRcXFxcblxcXCIsIHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjAwLVxcdHVzYl9mcmVlX3VyYih1cmIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9NjA1PXN0YXRpYyB2b2lkIGhhbmRsZV9yeF9wYWNrZXQoc3RydWN0IHpkX3VzYiAqdXNiLCBjb25zdCB1OCAqYnVmZmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjEyLVxcdFxcdC8qIEl0J3Mgbm90IGEgY29tcGxldGUgcGFja2V0IGFueWhvdy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2MTM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImludmFsaWQsIHNtYWxsIFJYIHBhY2tldCA6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjM3LVxcdFxcdFxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2Mzg6XFx0XFx0XFx0emRfbWFjX3J4KHpkX3VzYl90b19odyh1c2IpLCBidWZmZXIrbCwgayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjM5LVxcdFxcdFxcdGlmIChpIFxcdTAwM2U9IDIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02NDMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2NDQ6XFx0XFx0emRfbWFjX3J4KHpkX3VzYl90b19odyh1c2IpLCBidWZmZXIsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjQ1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTcxMz1zdGF0aWMgc3RydWN0IHVyYiAqYWxsb2NfcnhfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03MTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjcxNTpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03MTYtXFx0c3RydWN0IHVyYiAqdXJiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9NzM3PXN0YXRpYyB2b2lkIGZyZWVfcnhfdXJiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3NDY6c3RhdGljIGludCBfX3pkX3VzYl9lbmFibGVfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NzUyOlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3OTk6aW50IHpkX3VzYl9lbmFibGVfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MDQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cngtXFx1MDAzZXNldHVwX211dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MDU6XFx0ciA9IF9femRfdXNiX2VuYWJsZV9yeCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwNi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnJ4LVxcdTAwM2VzZXR1cF9tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjgwODpcXHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MTM6c3RhdGljIHZvaWQgX196ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NDA6dm9pZCB6ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg0NC1cXHRtdXRleF9sb2NrKFxcdTAwMjZyeC1cXHUwMDNlc2V0dXBfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg0NTpcXHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQ2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cngtXFx1MDAzZXNldHVwX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NTI6c3RhdGljIHZvaWQgemRfdXNiX3Jlc2V0X3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODY0LVxcdGlmIChkb19yZXNldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg2NTpcXHRcXHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODY2OlxcdFxcdF9femRfdXNiX2VuYWJsZV9yeCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg2Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzEtXFx0aWYgKGRvX3Jlc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg3MjpcXHRcXHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg3My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04ODAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODgxOnZvaWQgemRfdXNiX2Rpc2FibGVfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTctXFx0LyogVGhlIHN0b3BwZWQgc3RhdGUgaXMgaWdub3JlZCwgcmVseWluZyBvbiBpZWVlODAyMTFfd2FrZV9xdWV1ZXMoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg5ODpcXHQgKiBpbiBhIHBvdGVudGlvbmFsbHkgZm9sbG93aW5nIHpkX3VzYl9lbmFibGVfdHgoKS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTktXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MDgtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTA5OnZvaWQgemRfdXNiX2VuYWJsZV90eChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxNi1cXHR0eC1cXHUwMDNlc3VibWl0dGVkX3VyYnMgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjkxNzpcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMoemRfdXNiX3RvX2h3KHVzYikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxOC1cXHR0eC1cXHUwMDNlc3RvcHBlZCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz05MjI9c3RhdGljIHZvaWQgdHhfZGVjX3N1Ym1pdHRlZF91cmJzKHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkyOS1cXHRpZiAodHgtXFx1MDAzZXN0b3BwZWQgXFx1MDAyNlxcdTAwMjYgdHgtXFx1MDAzZXN1Ym1pdHRlZF91cmJzIFxcdTAwM2M9IFpEX1VTQl9UWF9MT1cpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5MzA6XFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MzEtXFx0XFx0dHgtXFx1MDAzZXN0b3BwZWQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTM2PXN0YXRpYyB2b2lkIHR4X2luY19zdWJtaXR0ZWRfdXJicyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05NDMtXFx0aWYgKCF0eC1cXHUwMDNlc3RvcHBlZCBcXHUwMDI2XFx1MDAyNiB0eC1cXHUwMDNlc3VibWl0dGVkX3VyYnMgXFx1MDAzZSBaRF9VU0JfVFhfSElHSCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjk0NDpcXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMoemRfdXNiX3RvX2h3KHVzYikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk0NS1cXHRcXHR0eC1cXHUwMDNlc3RvcHBlZCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz05NTc9c3RhdGljIHZvaWQgdHhfdXJiX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk3MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5NzE6XFx0dXNiID0gXFx1MDAyNnpkX2h3X21hYyhpbmZvLVxcdTAwM2VyYXRlX2RyaXZlcl9kYXRhWzBdKS1cXHUwMDNlY2hpcC51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTcyLVxcdHR4ID0gXFx1MDAyNnVzYi1cXHUwMDNldHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05OTAtXFx0c2tiX3VubGluayhza2IsIFxcdTAwMjZ1c2ItXFx1MDAzZXR4LnN1Ym1pdHRlZF9za2JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5OTE6XFx0emRfbWFjX3R4X3RvX2Rldihza2IsIHVyYi1cXHUwMDNlc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05OTItXFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDE2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwMTc6aW50IHpkX3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDIwLVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDIxOlxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwMjItXFx0c3RydWN0IHVyYiAqdXJiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA0NC1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNDU6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yIHN1Ym1pdCB1cmIgJXAgJWRcXFxcblxcXCIsIHVyYiwgcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA0Ni1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNTg6c3RhdGljIGJvb2wgemRfdHhfdGltZW91dChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwODI6c3RhdGljIHZvaWQgemRfdHhfd2F0Y2hkb2dfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDg5LVxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwOTA6XFx0aWYgKCF6ZF90eF90aW1lb3V0KHVzYikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwOTMtXFx0LyogVFggaGFsdGVkLCB0cnkgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDk0OlxcdGRldl93YXJuKHpkX3VzYl9kZXYodXNiKSwgXFxcIlRYLXN0YWxsIGRldGVjdGVkLCByZXNldHRpbmcgZGV2aWNlLi4uXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTEwNTp2b2lkIHpkX3R4X3dhdGNoZG9nX2VuYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTA5LVxcdGlmICghdHgtXFx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTEwOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMTEtXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHpkX3dvcmtxdWV1ZSwgXFx1MDAyNnR4LVxcdTAwM2V3YXRjaGRvZ193b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTE3OnZvaWQgemRfdHhfd2F0Y2hkb2dfZGlzYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTExOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIxLVxcdGlmICh0eC1cXHUwMDNld2F0Y2hkb2dfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjI6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEyMy1cXHRcXHR0eC1cXHUwMDNld2F0Y2hkb2dfZW5hYmxlZCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjg6c3RhdGljIHZvaWQgemRfcnhfaWRsZV90aW1lcl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzEtXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB6ZF91c2IsIHJ4LmlkbGVfd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTMyOlxcdHN0cnVjdCB6ZF9tYWMgKm1hYyA9IHpkX3VzYl90b19tYWModXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTM3OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzOS1cXHQvKiAzMCBzZWNvbmRzIHNpbmNlIGxhc3QgcngsIHJlc2V0IHJ4ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MDpcXHR6ZF91c2JfcmVzZXRfcngodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDM6c3RhdGljIHZvaWQgemRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXJfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0NTpcXHRzdHJ1Y3QgemRfdXNiICp1c2IgPSBmcm9tX3Rhc2tsZXQodXNiLCB0LCByeC5yZXNldF90aW1lcl90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDc6XFx0emRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXIodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNTA6dm9pZCB6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcihzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3VzYl9pbnRlcnJ1cHQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE2MS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aW50ci1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE2MjpcXHRpbnRyLVxcdTAwM2VpbnRlcnZhbCA9IGludF91cmJfaW50ZXJ2YWwoemRfdXNiX3RvX3VzYmRldih1c2IpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTYzLVxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2aW50ci1cXHUwMDNlcmVhZF9yZWdzLmNvbXBsZXRpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVxcdCAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTIxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjEyOnZvaWQgemRfdXNiX2NsZWFyKHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEyMzQ9c3RhdGljIGludCBzY25wcmludF9pZChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTI0MzppbnQgemRfdXNiX3NjbnByaW50X2lkKHN0cnVjdCB6ZF91c2IgKnVzYiwgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEyNjI9c3RhdGljIGludCBlamVjdF9pbnN0YWxsZXIoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMTc6aW50IHpkX3VzYl9pbml0X2h3KHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE5LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjA6XFx0c3RydWN0IHpkX21hYyAqbWFjID0gemRfdXNiX3RvX21hYyh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyMjpcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcXFwiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMyNS1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjY6XFx0XFx0ZGV2X2Vycih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMyNy1cXHRcXHQgICAgICAgXFxcImNvdWxkbid0IGxvYWQgZmlybXdhcmUuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzE6XFx0ciA9IHVzYl9yZXNldF9jb25maWd1cmF0aW9uKHpkX3VzYl90b191c2JkZXYodXNiKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzMi1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzM0LVxcdFxcdFxcdFxcXCJjb3VsZG4ndCByZXNldCBjb25maWd1cmF0aW9uLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzM4OlxcdHIgPSB6ZF9tYWNfaW5pdF9odyhtYWMtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzM5LVxcdGlmIChyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0MDpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDEtXFx0XFx0ICAgICAgICAgXFxcImNvdWxkbid0IGluaXRpYWxpemUgbWFjLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTM0OT1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzODc6XFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cXHRpZiAoaHcgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzkzOlxcdHVzYiA9IFxcdTAwMjZ6ZF9od19tYWMoaHcpLVxcdTAwM2VjaGlwLnVzYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzk0LVxcdHVzYi1cXHUwMDNlaXNfemQxMjExYiA9IChpZC1cXHUwMDNlZHJpdmVyX2luZm8gPT0gREVWSUNFX1pEMTIxMUIpICE9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzk2OlxcdHIgPSB6ZF9tYWNfcHJlaW5pdF9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Ny1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNS1cXHRpZiAoaHcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDE2OlxcdFxcdHpkX21hY19jbGVhcih6ZF9od19tYWMoaHcpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDE3LVxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE0MjI9c3RhdGljIHZvaWQgZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDI0OlxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gemRfaW50Zl90b19odyhpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDI1LVxcdHN0cnVjdCB6ZF9tYWMgKm1hYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQzMzpcXHRtYWMgPSB6ZF9od19tYWMoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzQtXFx0dXNiID0gXFx1MDAyNm1hYy1cXHUwMDNlY2hpcC51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDM2OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDQwLVxcdC8qIEp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmchICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ0MTpcXHR6ZF91c2JfZGlzYWJsZV90eCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NDI6XFx0emRfdXNiX2Rpc2FibGVfcngodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDQzOlxcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NTI6XFx0emRfbWFjX2NsZWFyKG1hYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1My1cXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NTc6c3RhdGljIHZvaWQgemRfdXNiX3Jlc3VtZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1OTpcXHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2MC1cXHRpbnQgcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NjI6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY0OlxcdHIgPSB6ZF9vcF9zdGFydCh6ZF91c2JfdG9faHcodXNiKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2NS1cXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY2OlxcdFxcdGRldl93YXJuKHpkX3VzYl9kZXYodXNiKSwgXFxcIkRldmljZSByZXN1bWUgZmFpbGVkIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDY3LVxcdFxcdFxcdCBcXFwid2l0aCBlcnJvciBjb2RlICVkLiBSZXRyeWluZy4uLlxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDc0LVxcdGlmIChtYWMtXFx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDc1OlxcdFxcdHIgPSB6ZF9yZXN0b3JlX3NldHRpbmdzKG1hYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ3Ni1cXHRcXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDc3OlxcdFxcdFxcdGRldl9kYmcoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzgtXFx0XFx0XFx0XFx0XFxcImZhaWxlZCB0byByZXN0b3JlIHNldHRpbmdzLCAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0ODQ6c3RhdGljIHZvaWQgemRfdXNiX3N0b3Aoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0ODY6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDg4OlxcdHpkX29wX3N0b3AoemRfdXNiX3RvX2h3KHVzYiksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0OTA6XFx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDkxOlxcdHpkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ5MjpcXHR6ZF91c2JfZGlzYWJsZV9pbnQodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTQ5Nz1zdGF0aWMgaW50IHByZV9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUwNjpcXHRtYWMgPSB6ZF9od19tYWMoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDctXFx0dXNiID0gXFx1MDAyNm1hYy1cXHUwMDNlY2hpcC51c2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MTE6XFx0emRfdXNiX3N0b3AodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTUxNz1zdGF0aWMgaW50IHBvc3RfcmVzZXQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MjY6XFx0bWFjID0gemRfaHdfbWFjKGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI3LVxcdHVzYiA9IFxcdTAwMjZtYWMtXFx1MDAzZWNoaXAudXNiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzMS1cXHRpZiAodXNiLVxcdTAwM2V3YXNfcnVubmluZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTMyOlxcdFxcdHpkX3VzYl9yZXN1bWUodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTMzLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTU0OD1zdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTU0OlxcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTU1LVxcdGlmICh6ZF93b3JrcXVldWUgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTU4MD1tb2R1bGVfZXhpdCh1c2JfZXhpdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTgyOnN0YXRpYyBpbnQgemRfZXBfcmVnc19vdXRfbXNnKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1ODMtXFx0XFx0XFx0ICAgICAgaW50ICphY3R1YWxfbGVuZ3RoLCBpbnQgdGltZW91dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE2MzA9c3RhdGljIGJvb2wgY2hlY2tfcmVhZF9yZWdzKHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IHVzYl9yZXFfcmVhZF9yZWdzICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjQxLVxcdGlmIChyci1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgc3RydWN0X3NpemUocmVncywgcmVncywgY291bnQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY0MjpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NDMtXFx0XFx0XFx0IFxcXCJlcnJvcjogYWN0dWFsIGxlbmd0aCAlZCBsZXNzIHRoYW4gZXhwZWN0ZWQgJXp1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0OC1cXHRpZiAocnItXFx1MDAzZWxlbmd0aCBcXHUwMDNlIHNpemVvZihyci1cXHUwMDNlYnVmZmVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2NDk6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjUwLVxcdFxcdFxcdCBcXFwiZXJyb3I6IGFjdHVhbCBsZW5ndGggJWQgZXhjZWVkcyBidWZmZXIgc2l6ZSAlenVcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjU3LVxcdFxcdGlmIChyZC1cXHUwMDNlYWRkciAhPSByZXEtXFx1MDAzZWFkZHJbaV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNjU4OlxcdFxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1OS1cXHRcXHRcXHRcXHQgXFxcInJkWyVkXSBhZGRyICUjMDZoeCBleHBlY3RlZCAlIzA2aHhcXFxcblxcXCIsIGksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNjY5PXN0YXRpYyBpbnQgZ2V0X3Jlc3VsdHMoc3RydWN0IHpkX3VzYiAqdXNiLCB1MTYgKnZhbHVlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2ODgtXFx0aWYgKCFjaGVja19yZWFkX3JlZ3ModXNiLCByZXEsIGNvdW50KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2ODk6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yOiBpbnZhbGlkIHJlYWQgcmVnc1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY5MC1cXHRcXHRnb3RvIGVycm9yX3VubG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcwNDppbnQgemRfdXNiX2lvcmVhZDE2dihzdHJ1Y3QgemRfdXNiICp1c2IsIHUxNiAqdmFsdWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDUtXFx0ICAgICAgICAgICAgIGNvbnN0IHpkX2FkZHJfdCAqYWRkcmVzc2VzLCB1bnNpZ25lZCBpbnQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzEzLVxcdGlmIChjb3VudCBcXHUwMDNjIDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzE0OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJlcnJvcjogY291bnQgaXMgemVyb1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MTctXFx0aWYgKGNvdW50IFxcdTAwM2UgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3MTg6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzE5LVxcdFxcdFxcdCBcXFwiZXJyb3I6IGNvdW50ICV1IGV4Y2VlZHMgcG9zc2libGUgbWF4ICV1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyMy1cXHRpZiAoIXVzYl9pbnRfZW5hYmxlZCh1c2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcyNDpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MjUtXFx0XFx0XFx0ICBcXFwiZXJyb3I6IHVzYiBpbnRlcnJ1cHQgbm90IGVuYWJsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzI5OlxcdFpEX0FTU0VSVChtdXRleF9pc19sb2NrZWQoXFx1MDAyNnpkX3VzYl90b19jaGlwKHVzYiktXFx1MDAzZW11dGV4KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTczMC1cXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB1c2JfcmVxX3JlYWRfcmVncykgKyBVU0JfTUFYX0lPUkVBRDE2X0NPVU5UICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDMtXFx0dHJ5X2NvdW50Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0NDpcXHR1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDUtXFx0cHJlcGFyZV9yZWFkX3JlZ3NfaW50KHVzYiwgcmVxLCBjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0NjpcXHRyID0gemRfZXBfcmVnc19vdXRfbXNnKHVkZXYsIHJlcSwgcmVxX2xlbiwgXFx1MDAyNmFjdHVhbF9yZXFfbGVuLCA1MCAvKm1zKi8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDctXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ4OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0OTpcXHRcXHRcXHRcXFwiZXJyb3IgaW4gemRfZXBfcmVnc19vdXRfbXNnKCkuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1MC1cXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1Mi1cXHRpZiAocmVxX2xlbiAhPSBhY3R1YWxfcmVxX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NTM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpXFxcXG5cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1NC1cXHRcXHRcXHRcXFwiIHJlcV9sZW4gJWQgIT0gYWN0dWFsX3JlcV9sZW4gJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzYzLVxcdFxcdGRpc2FibGVfcmVhZF9yZWdzX2ludCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NjQ6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInJlYWQgdGltZWQgb3V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzY1LVxcdFxcdHIgPSAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc3MC1cXHRpZiAocmV0cnkgXFx1MDAyNlxcdTAwMjYgdHJ5X2NvdW50IFxcdTAwM2MgMjApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzcxOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJyZWFkIHJldHJ5LCB0cmllcyBzbyBmYXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NzItXFx0XFx0XFx0XFx0dHJ5X2NvdW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE3Nzk9c3RhdGljIHZvaWQgaW93cml0ZTE2dl91cmJfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzkxOnN0YXRpYyBpbnQgemRfc3VibWl0X3dhaXRpbmdfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYiwgYm9vbCBsYXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgwNy1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgwODpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MDktXFx0XFx0XFx0XFxcImVycm9yIGluIHVzYl9zdWJtaXRfdXJiKCkuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4MTk6dm9pZCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19zdGFydChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4MjU6XFx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2emRfdXNiX3RvX2NoaXAodXNiKS1cXHUwMDNlbXV0ZXgpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODMyOmludCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19lbmQoc3RydWN0IHpkX3VzYiAqdXNiLCB1bnNpZ25lZCBpbnQgdGltZW91dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgzNjpcXHRaRF9BU1NFUlQobXV0ZXhfaXNfbG9ja2VkKFxcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVxcdTAwM2VtdXRleCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzctXFx0WkRfQVNTRVJUKHVzYi1cXHUwMDNlaW5fYXN5bmMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzOS1cXHQvKiBTdWJtaXQgbGFzdCBpb3dyaXRlMTZ2IFVSQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4NDA6XFx0ciA9IHpkX3N1Ym1pdF93YWl0aW5nX3VyYih1c2IsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NDEtXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQyOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg0MzpcXHRcXHRcXHRcXFwiZXJyb3IgaW4gemRfc3VibWl0X3dhaXRpbmdfdXNiKCkuIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODQ0LVxcdFxcdFxcdFxcXCJFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1NS1cXHRcXHRpZiAodXNiLVxcdTAwM2VjbWRfZXJyb3IgPT0gLUVOT0VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4NTY6XFx0XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInRpbWVkIG91dFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NTctXFx0XFx0XFx0ciA9IC1FVElNRURPVVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4Njg6aW50IHpkX3VzYl9pb3dyaXRlMTZ2X2FzeW5jKHN0cnVjdCB6ZF91c2IgKnVzYiwgY29uc3Qgc3RydWN0IHpkX2lvcmVxMTYgKmlvcmVxcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY5LVxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4Nzg6XFx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2emRfdXNiX3RvX2NoaXAodXNiKS1cXHUwMDNlbXV0ZXgpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc5LVxcdFpEX0FTU0VSVCh1c2ItXFx1MDAzZWluX2FzeW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4ODMtXFx0aWYgKGNvdW50IFxcdTAwM2UgVVNCX01BWF9JT1dSSVRFMTZfQ09VTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODg0OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg4NS1cXHRcXHRcXHRcXFwiZXJyb3I6IGNvdW50ICV1IGV4Y2VlZHMgcG9zc2libGUgbWF4ICV1XFxcXG5cXFwiLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjE3LjYwODU2NjU2M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg0MjA3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpEMTIxMVJXIFBhdGNoKipcblxuT2theSwgc28gYHpkX21hY19hbGxvY19od2AgbG9va3Mgc29saWQsIGl0IHNlZW1zIGxpa2Ugd2UgaGF2ZSBhIGdvb2QgZml4IGhlcmUuIEknbSBnb2luZyB0byBnbyBhaGVhZCBhbmQgb3V0cHV0IHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiwgbWFraW5nIHN1cmUgZXZlcnl0aGluZyBpcyBjbGVhciBmb3IgdGhlIG5leHQgc3RlcHMuXG5cbkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIHNvIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIHRydWUuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgemRfbWFjX2FsbG9jX2h3YCwgc28gdGhhdCdzIGluIGBGb2N1c1N5bWJvbHNgLlxuXG5XZSdsbCBiZSBzdXJlIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9uczogYFpEMTIxMVJXYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgY29uZmxpY3QgaXNzdWUgdGhhdCBhcm9zZSB3aXRoIHNlY29uZGFyeSBpbnRlcmZhY2VzIG9uIFpEMTIxMSBkZXZpY2VzLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBwcm9iZSBmdW5jdGlvbiB0byBwcmV2ZW50IHRoZXNlIGNvbmZsaWN0cyBieSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMuIFNpbmNlIGl0J3MgY2hhbmdpbmcgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHByb2JpbmcsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBXZSBjYW4gYW5kIHNob3VsZCB0cnkgdG8gZmluZCBhbnkgcmVncmVzc2lvbnMgd2l0aCB0aGVzZSBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMTAsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjIyLjk5Mjc3NjgxOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzQ2Nzk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWkQxMjExUldcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZF9tYWNfYWxsb2NfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcywgcHJldmVudGluZyBjb25mbGljdHMgYW5kIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLiBUaGlzIG1vZGlmaWVzIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgKGUuZy4sIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWkQxMjExUldcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZF9tYWNfYWxsb2NfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcywgcHJldmVudGluZyBjb25mbGljdHMgYW5kIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLiBUaGlzIG1vZGlmaWVzIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgKGUuZy4sIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-30 07:14:30 +0000 UTC FinishedAt: 2026-07-30 07:50:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZD1211RW", "MAC80211", "USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZD1211RW", "MAC80211", "USB" ], "series_id": "9b94bd4a-bcde-4e2d-80ff-1f2f332416a6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "zd_mac_alloc_hw" ], "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+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgODc0N2ZhYTI5YTRmMjJiYjc5OTM4MWUxYmMwYWU2MThhOWU3YjZlNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDMwIDA3OjQ5OjE1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbmluZGV4IDk2NmQ4Y2NiMGRiY2QuLjk4MTAyYzY2MzQzNGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbkBAIC0xMzUzLDYgJiM0MzsxMzUzLDE0IEBAIHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiBcdHN0cnVjdCB6ZF91c2IgKnVzYjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFpEMTIxMSBkZXZpY2VzIGFyZSBzaW5nbGUtZnVuY3Rpb24uIFJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlc1xuJiM0MztcdCAqIHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzIGZyb20gY29uZmxpY3Rpbmcgb24gaGFyZGNvZGVkIGVuZHBvaW50c1xuJiM0MztcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzQzO1xuIFx0cHJpbnRfaWQodWRldik7XG4gXG4gXHRpZiAoaWQtXHUwMDNlZHJpdmVyX2luZm8gXHUwMDI2IERFVklDRV9JTlNUQUxMRVIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODc0N2ZhYTI5YTRmMjJiYjc5OTM4MWUxYmMwYWU2MThhOWU3YjZlNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgSnVsIDMwIDA3OjQ5OjE1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwppbmRleCA5NjZkOGNjYjBkYmNkLi45ODEwMmM2NjM0MzRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYwpAQCAtMTM1Myw2ICYjNDM7MTM1MywxNCBAQCBzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpCiAJc3RydWN0IHpkX3VzYiAqdXNiOwogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDsKIAomIzQzOwkvKgomIzQzOwkgKiBaRDEyMTEgZGV2aWNlcyBhcmUgc2luZ2xlLWZ1bmN0aW9uLiBSZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMKJiM0MzsJICogdG8gcHJldmVudCBtdWx0aXBsZSBpbnN0YW5jZXMgZnJvbSBjb25mbGljdGluZyBvbiBoYXJkY29kZWQgZW5kcG9pbnRzCiYjNDM7CSAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLgomIzQzOwkgKi8KJiM0MzsJaWYgKGludGYtJmd0O2N1cl9hbHRzZXR0aW5nLSZndDtkZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMCkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCXByaW50X2lkKHVkZXYpOwogCiAJaWYgKGlkLSZndDtkcml2ZXJfaW5mbyAmYW1wOyBERVZJQ0VfSU5TVEFMTEVSKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0OiB6ZDEyMTFydyBVU0IgV2lyZWxlc3MgRHJpdmVyKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIGEgbmV3IHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY2AgdGhhdCYjMzk7cyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMgKGBpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZGVzYy5iSW50ZXJmYWNlTnVtYmVyICE9IDBgKS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgZnV6emluZy4KClRoaXMgYHpkMTIxMXJ3YCBkcml2ZXIgaXMgZm9yIFVTQiB3aXJlbGVzcywgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlIHByZXR0eSBhY2Nlc3NpYmxlIGZvciBmdXp6aW5nLiBTaW5jZSB3ZSBjYW4gZW11bGF0ZSBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXRzIG9yIGBkdW1teV9oY2RgLCBhbmQgc3l6a2FsbGVyIHN1cHBvcnRzIFVTQiBmdXp6aW5nLCB0aGlzIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBUaGlzIGlzIGEgc29saWQgY2FuZGlkYXRlIGZvciBzb21lIGluLWRlcHRoIGZ1enppbmcuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIEtjb25maWcgZm9yIGB6ZDEyMTFyd2AgdG8gZ2V0IG1vcmUgY29udGV4dCBhbmQgZmlndXJlIG91dCBob3cgdG8gYmVzdCB0YXJnZXQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFpEMTIxMVJXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnOjI6Y29uZmlnIFpEMTIxMVJXXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtaeURBUyBaRDEyMTEvWkQxMjExQiBVU0Itd2lyZWxlc3Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWctMTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnOjEzOmNvbmZpZyBaRDEyMTFSV19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7WnlEQVMgWkQxMjExIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NzYKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIFpEMTIxMVJXIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyB0aGUgaW5pdGlhbCBwcm9tcHQgaW52b2x2ZXMgWkQxMjExUlcuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGp1bXBzIHRvIHRoZSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZXZlbiBjb25zaWRlciBhbnl0aGluZyBlbHNlIGFib3V0IHRoZSBaRDEyMTFSVywgSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IG90aGVyIGNvbXBvbmVudHMsIGxpYnJhcmllcywgb3Igc3lzdGVtcyBpdCByZWxpZXMgb24uIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gYW55IGFuYWx5c2lzLiBJIG5lZWQgdG8ga25vdyB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIGlmIEkmIzM5O20gZ29pbmcgdG8gbW9kaWZ5IGl0LCB0cm91Ymxlc2hvb3QgaXQsIG9yIGV2ZW4ganVzdCBhc3Nlc3MgaXRzIGN1cnJlbnQgc3RhdGUuIEkgbmVlZCB0byBpZGVudGlmeSBpdHMgZGlyZWN0IGFuZCBpbmRpcmVjdCBkZXBlbmRlbmNpZXMuIFdoYXQgbW9kdWxlcyBjYWxsIGl0LCB3aGF0IGRvZXMgaXQgY2FsbD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aG9zZSBkZXBlbmRlbmNpZXM/IFRoaXMgaW52ZXN0aWdhdGlvbiBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgWkQxMjExUldcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1p5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi13aXJlbGVzcyBzdXBwb3J0XCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFVTQiBcdTAwMjZcdTAwMjYgTUFDODAyMTFcbiAgIDU6XHRcdHNlbGVjdCBGV19MT0FERVJcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIHdpcmVsZXNzXG4gICA4Olx0XHQgIGNoaXAsIHByZXNlbnQgaW4gbWFueSBVU0Itd2lyZWxlc3MgYWRhcHRlcnMuXG4gICA5Olx0XG4gIDEwOlx0XHQgIERldmljZSBmaXJtd2FyZSBpcyByZXF1aXJlZCBhbG9uZ3NpZGUgdGhpcyBkcml2ZXIuIFlvdSBjYW4gZG93bmxvYWRcbiAgMTE6XHRcdCAgdGhlIGZpcm13YXJlIGRpc3RyaWJ1dGlvbiBmcm9tIGh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvemQxMjExL2ZpbGVzL1xuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBaRDEyMTFSV19ERUJVR1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtaeURBUyBaRDEyMTEgZGVidWdnaW5nXCYjMzQ7XG4gIDE1Olx0XHRkZXBlbmRzIG9uIFpEMTIxMVJXXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFpEMTIxMSBkZWJ1Z2dpbmcgbWVzc2FnZXMuIENob29zaW5nIFkgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBkZWJ1Z1xuICAxODpcdFx0ICBtZXNzYWdlcyBiZWluZyBzYXZlZCB0byB5b3VyIGtlcm5lbCBsb2dzLCB3aGljaCBtYXkgaGVscCBkZWJ1ZyBhbnlcbiAgMTk6XHRcdCAgcHJvYmxlbXMuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMxNAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgWkQxMjExUlcgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgSSYjMzk7bSBkZWFsaW5nIHdpdGggdGhlIGBaRDEyMTFSV2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgaXRzIFVTQiBpbXBsZW1lbnRhdGlvbiwgc2luY2UgdGhlIGRlcGVuZGVuY2llcyBsaXN0ZWQgYXJlIGBVU0JgIGFuZCBgTUFDODAyMTFgLiBSaWdodCwgc28gSSBuZWVkIHRvIGVuYWJsZSB0aGUgYFpEMTIxMVJXYCBjb25maWd1cmF0aW9uLiBOb3csIGl0IGxvb2tzIGxpa2UgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIGRyaXZlciBpcyBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IHRoZSBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgZmlsZSBwYXRoIHBvaW50cyBtZSB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBoYXZlIGEgaHVuY2ggaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24sIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29kZSByZWFsIHF1aWNrIGFuZCB2ZXJpZnkgaXRzIGRlY2xhcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YXRpYyBpbnQgcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzE3PWludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM0OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzNDk6c3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM1MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc3MwoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBQcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCYjMzk7cyBhIGBzdGF0aWNgIGZ1bmN0aW9uLCB3aGljaCBpbW1lZGlhdGVseSBjbHVlcyBtZSBpbiB0byBpdHMgcHVycG9zZTogaXQmIzM5O3MgbGlrZWx5IGEgY2FsbGJhY2sgZnVuY3Rpb24gdXNlZCB3aXRoaW4gdGhlIGBzdHJ1Y3QgdXNiX2RyaXZlcmAgc3RydWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgbmFtaW5nIGNvbnZlbnRpb25zIG9mIHRoaXMgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgYHByb2JlYCBmdW5jdGlvbiYjMzk7cyByb2xlIGluIHRoZSBVU0IgZGV2aWNlIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSYjMzk7cyBuYW1lIGlzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0cnVjdCB1c2JfZHJpdmVyIC4qPSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1MTc9c3RhdGljIGludCBwb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTM2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBkcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTM3LVx0Lm5hbWVcdFx0PSBLQlVJTERfTU9ETkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE0MwoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBEcml2ZXIgRW50cnkgUG9pbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGRyaXZlcmAgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGp1c3QgZm9jdXMgb24gdGhhdCwgYnV0IHdhaXTigKYgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXMgYSBmb2N1cyBzeW1ib2wsIGVzcGVjaWFsbHkgaWYgaXQmIzM5O3Mgc3RhdGljIGFuZCAqY2FsbGVkKiBgcHJvYmVgLiBXZSBuZWVkIHNvbWV0aGluZyBsZXNzIGdlbmVyaWMuCgpMZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gc2NhbiBgemRfdXNiLmNgIGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludCwgb3IgcGVyaGFwcyBgemRfdXNiX2luaXRfaHdgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGU/CgpBaCwgcmlnaHQuIFRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzLCBpbiBmYWN0LCB0aGUgc3RhbmRhcmQgZW50cnkgcG9pbnQgZm9yIFVTQiBkZXZpY2UgcHJvYmluZy4gSXQgd291bGQgYmUgc2lsbHkgdG8gZGlzY291bnQgaXQuCgpBbHJpZ2h0LCBhIHF1aWNrIGNoZWNr4oCmIGlzIGBwcm9iZWAgdGhlICpvbmx5KiBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQ/IFllcywgdGhhdCBhbnN3ZXJzIHRoYXQuCgpTbywgc2luY2UgSSBzZWVtIHRvIGJlIHN0dWNrIG9uIGBwcm9iZWAsIGFyZSB0aGVyZSBhbnkgcmVsYXRlZCBmdW5jdGlvbnMgYXJvdW5kIGl0IGluIGB6ZF91c2IuY2AgdGhhdCBtaWdodCBwcm92aWRlIG1vcmUgY29udGV4dCBvciBpbnNpZ2h0cz8gTGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM0MDpcdFx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuMTM0MTpcdFx0XHQgICAgICAgICBcJiMzNDtjb3VsZG4mIzM5O3QgaW5pdGlhbGl6ZSBtYWMuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4xMzQyOlx0XHRcdHJldHVybiByO1xuMTM0MzpcdFx0fVxuMTM0NDpcdFxuMTM0NTpcdFx0dXNiLVx1MDAzZWluaXRpYWxpemVkID0gMTtcbjEzNDY6XHRcdHJldHVybiAwO1xuMTM0NzpcdH1cbjEzNDg6XHRcbjEzNDk6XHRzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXG4xMzUwOlx0e1xuMTM1MTpcdFx0aW50IHI7XG4xMzUyOlx0XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50Zik7XG4xMzUzOlx0XHRzdHJ1Y3QgemRfdXNiICp1c2I7XG4xMzU0Olx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyA9IE5VTEw7XG4xMzU1Olx0XG4xMzU2Olx0XHQvKlxuMTM1NzpcdFx0ICogWkQxMjExIGRldmljZXMgYXJlIHNpbmdsZS1mdW5jdGlvbi4gUmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzXG4xMzU4Olx0XHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcbjEzNTk6XHRcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxuMTM2MDpcdFx0ICovXG4xMzYxOlx0XHRpZiAoaW50Zi1cdTAwM2VjdXJfYWx0c2V0dGluZy1cdTAwM2VkZXNjLmJJbnRlcmZhY2VOdW1iZXIgIT0gMClcbjEzNjI6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xMzYzOlx0XG4xMzY0Olx0XHRwcmludF9pZCh1ZGV2KTtcbjEzNjU6XHRcbjEzNjY6XHRcdGlmIChpZC1cdTAwM2Vkcml2ZXJfaW5mbyBcdTAwMjYgREVWSUNFX0lOU1RBTExFUilcbjEzNjc6XHRcdFx0cmV0dXJuIGVqZWN0X2luc3RhbGxlcihpbnRmKTtcbjEzNjg6XHRcbjEzNjk6XHRcdHN3aXRjaCAodWRldi1cdTAwM2VzcGVlZCkge1xuMTM3MDpcdFx0Y2FzZSBVU0JfU1BFRURfTE9XOlxuMTM3MTpcdFx0Y2FzZSBVU0JfU1BFRURfRlVMTDpcbjEzNzI6XHRcdGNhc2UgVVNCX1NQRUVEX0hJR0g6XG4xMzczOlx0XHRcdGJyZWFrO1xuMTM3NDpcdFx0ZGVmYXVsdDpcbjEzNzU6XHRcdFx0ZGV2X2RiZ19mKFx1MDAyNmludGYtXHUwMDNlZGV2LCBcJiMzNDtVbmtub3duIFVTQiBzcGVlZFxcblwmIzM0Oyk7XG4xMzc2Olx0XHRcdHIgPSAtRU5PREVWO1xuMTM3NzpcdFx0XHRnb3RvIGVycm9yO1xuMTM3ODpcdFx0fVxuMTM3OTpcdFxuMTM4MDpcdFx0ciA9IHVzYl9yZXNldF9kZXZpY2UodWRldik7XG4xMzgxOlx0XHRpZiAocikge1xuMTM4MjpcdFx0XHRkZXZfZXJyKFx1MDAyNmludGYtXHUwMDNlZGV2LFxuMTM4MzpcdFx0XHRcdFwmIzM0O2NvdWxkbiYjMzk7dCByZXNldCB1c2IgZGV2aWNlLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssIHIpO1xuMTM4NDpcdFx0XHRnb3RvIGVycm9yO1xuMTM4NTpcdFx0fVxuMTM4NjpcdFxuMTM4NzpcdFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XG4xMzg4Olx0XHRpZiAoaHcgPT0gTlVMTCkge1xuMTM4OTpcdFx0XHRyID0gLUVOT01FTTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI1NAoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoaXMgZHJpdmVyIGZpbGUuIEl0JiMzOTtzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgcHJvYmluZyBwcm9jZXNzLCBidXQgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBzdGF0aWMgaXMgcG90ZW50aWFsbHkgbGltaXRpbmcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW4gYWx0ZXJuYXRpdmUgdG8gaXQuIEhtbSwgbGV0IG1lIHNjcm9sbCB0byB0aGUgZW5kIG9mIGB6ZF91c2IuY2AuIFBlcmhhcHMgdGhlcmUmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uIGV4cG9zZWQgdGhhdCBJIGNhbiB1dGlsaXplIGluc3RlYWQuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTMwOlx0XG4xNTMxOlx0XHRpZiAodXNiLVx1MDAzZXdhc19ydW5uaW5nKVxuMTUzMjpcdFx0XHR6ZF91c2JfcmVzdW1lKHVzYik7XG4xNTMzOlx0XHRyZXR1cm4gMDtcbjE1MzQ6XHR9XG4xNTM1Olx0XG4xNTM2Olx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGRyaXZlciA9IHtcbjE1Mzc6XHRcdC5uYW1lXHRcdD0gS0JVSUxEX01PRE5BTUUsXG4xNTM4Olx0XHQuaWRfdGFibGVcdD0gdXNiX2lkcyxcbjE1Mzk6XHRcdC5wcm9iZVx0XHQ9IHByb2JlLFxuMTU0MDpcdFx0LmRpc2Nvbm5lY3RcdD0gZGlzY29ubmVjdCxcbjE1NDE6XHRcdC5wcmVfcmVzZXRcdD0gcHJlX3Jlc2V0LFxuMTU0MjpcdFx0LnBvc3RfcmVzZXRcdD0gcG9zdF9yZXNldCxcbjE1NDM6XHRcdC5kaXNhYmxlX2h1Yl9pbml0aWF0ZWRfbHBtID0gMSxcbjE1NDQ6XHR9O1xuMTU0NTpcdFxuMTU0NjpcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp6ZF93b3JrcXVldWU7XG4xNTQ3Olx0XG4xNTQ4Olx0c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcbjE1NDk6XHR7XG4xNTUwOlx0XHRpbnQgcjtcbjE1NTE6XHRcbjE1NTI6XHRcdHByX2RlYnVnKFwmIzM0OyVzIHVzYl9pbml0KClcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1NTM6XHRcbjE1NTQ6XHRcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcbjE1NTU6XHRcdGlmICh6ZF93b3JrcXVldWUgPT0gTlVMTCkge1xuMTU1NjpcdFx0XHRwcl9lcnIoXCYjMzQ7JXMgY291bGRuJiMzOTt0IGNyZWF0ZSB3b3JrcXVldWVcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1NTc6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4xNTU4Olx0XHR9XG4xNTU5Olx0XG4xNTYwOlx0XHRyID0gdXNiX3JlZ2lzdGVyKFx1MDAyNmRyaXZlcik7XG4xNTYxOlx0XHRpZiAocikge1xuMTU2MjpcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh6ZF93b3JrcXVldWUpO1xuMTU2MzpcdFx0XHRwcl9lcnIoXCYjMzQ7JXMgdXNiX3JlZ2lzdGVyKCkgZmFpbGVkLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssXG4xNTY0Olx0XHRcdCAgICAgICBkcml2ZXIubmFtZSwgcik7XG4xNTY1Olx0XHRcdHJldHVybiByO1xuMTU2NjpcdFx0fVxuMTU2NzpcdFxuMTU2ODpcdFx0cHJfZGVidWcoXCYjMzQ7JXMgaW5pdGlhbGl6ZWRcXG5cJiMzNDssIGRyaXZlci5uYW1lKTtcbjE1Njk6XHRcdHJldHVybiAwO1xuMTU3MDpcdH1cbjE1NzE6XHRcbjE1NzI6XHRzdGF0aWMgdm9pZCBfX2V4aXQgdXNiX2V4aXQodm9pZClcbjE1NzM6XHR7XG4xNTc0Olx0XHRwcl9kZWJ1ZyhcJiMzNDslcyB1c2JfZXhpdCgpXFxuXCYjMzQ7LCBkcml2ZXIubmFtZSk7XG4xNTc1Olx0XHR1c2JfZGVyZWdpc3RlcihcdTAwMjZkcml2ZXIpO1xuMTU3NjpcdFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcbjE1Nzc6XHR9XG4xNTc4Olx0XG4xNTc5Olx0bW9kdWxlX2luaXQodXNiX2luaXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTMxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBkcml2ZXIgY29kZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCBgdXNiX3JlZ2lzdGVyKCZhbXA7ZHJpdmVyKWAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgVVNCIGRyaXZlciBzdHVmZi4gTm93LCBJJiMzOTttIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgc28gYHByb2JlYCBpcyBtYXJrZWQgYXMgYHN0YXRpY2Agd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQgbWFrZXMgaXQgaGFyZGVyIHRvIGp1bXAgdG8gZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBQZXJoYXBzIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgcHJvYmVgIGl0c2VsZiwgb3IgYHpkX21hY19hbGxvY19od2AsIG9yIGB6ZF91c2JfaW5pdF9od2A/IExldCBtZSBzZWUuIEFoLCB3YWl0IGEgbWludXRlLCBgemRfbWFjX2FsbG9jX2h3YCBpcyAqY2FsbGVkKiBmcm9tIGBwcm9iZWAuIFNvLCB0aGF0JiMzOTtzIGtleS4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIHdpdGggYWN0dWFsIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uLCBhbmQgaWYgaXQmIzM5O3MgY2FsbGVkIGZyb20gcHJvYmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIExldCYjMzk7cyBzZWUgaWYgYHpkX21hY19hbGxvY19od2AgaXMgc3RhdGljIC0gdGhhdCB3b3VsZCBtYWtlIHRoaXMgaGFyZGVyIHRvIHRlc3Qgb3IgZGVidWcgb3V0c2lkZSBvZiB0aGUgYHByb2JlYCBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF9tYWNfYWxsb2NfaHcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmM9MTM0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgemRfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTEzNjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoxMzY2OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTEzNjcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5oPTI4OD1zdGF0aWMgaW5saW5lIHU4ICp6ZF9tYWNfZ2V0X3Blcm1fYWRkcihzdHJ1Y3QgemRfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmgtMjk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmg6Mjk1OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuaC0yOTYtdm9pZCB6ZF9tYWNfY2xlYXIoc3RydWN0IHpkX21hYyAqbWFjKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcdGh3ID0gemRfbWFjX2FsbG9jX2h3KGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cdGlmIChodyA9PSBOVUxMKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHN1bW1hcnk6CgoqKklkZW50aWZ5aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzIGluIHRoZSBLZXJuZWwgTW9kdWxlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBrZXJuZWwgbW9kdWxlLCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHpkX21hY19hbGxvY19od2Agc2VlbXMgbGlrZSBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgYSBmb2N1cyBzeW1ib2wuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCYjMzk7cyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldCBmb3Igc3ltYm9saWMgYW5hbHlzaXMuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBmaW5kIHRoaW5ncyB0aGF0IHRoZSBsaW5rZXIgY2FuIHNlZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIFRoYXQmIzM5O3MgZ29vZC4KCkhtbSwgd2hpbGUgSSYjMzk7bSBhdCBpdCwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBgemRfdXNiX2luaXRfaHdgLiBJdCBoYXMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLCBhbmQgdGhhdCBtaWdodCBhbHNvIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHdlIGNvdWxkIHVzZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBpdCYjMzk7cyB2aXNpYmxlLCBidXQgaXQmIzM5O3Mgd29ydGggY2hlY2tpbmcgcmlnaHQgYXdheS4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF91c2JfaW5pdF9odyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYz0yNjk9aW50IHpkX29wX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jLTI3Ni1cdGlmICghdXNiLVx1MDAzZWluaXRpYWxpemVkKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoyNzc6XHRcdHIgPSB6ZF91c2JfaW5pdF9odyh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMjc4LVx0XHRpZiAocilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzU9dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmgtMjM2LVx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmgtMjM4LXZvaWQgemRfdXNiX2NsZWFyKHN0cnVjdCB6ZF91c2IgKnVzYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiA0NzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3QgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBwYXRjaC4gSSBzZWUgdGhhdCBgemRfdXNiX2luaXRfaHdgIGFuZCBgemRfdXNiX2luaXRgIGFyZSBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZC4gQnV0IHRoZSBhY3R1YWwgbW9kaWZpZWQgZnVuY3Rpb24gaXMgYHByb2JlYC4gVGhlIHBhdGNoIGlzIGFkZGluZyBhIGNoZWNrIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyB3aXRoaW4gYHByb2JlYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBqdW1wIHRvIGB6ZF9tYWNfYWxsb2NfaHdgIHNpbmNlIGl0JiMzOTtzIGNhbGxlZCByaWdodCBhZnRlciB0aGUgY2hlY2suCgpIb2xkIG9uLCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIFRoZSBjaGVjayBpdHNlbGYgaXMgdGhpczogYGlmIChpbnRmLSZndDtjdXJfYWx0c2V0dGluZy0mZ3Q7ZGVzYy5iSW50ZXJmYWNlTnVtYmVyICE9IDApIHJldHVybiAtRU5PREVWO2AuIElmIHdlIHdhbnQgdG8gZm9jdXMgc3BlY2lmaWNhbGx5IG9uICp0ZXN0aW5nKiB0aGF0IGNoZWNrLCBJIGNhbiYjMzk7dCByZWFsbHkgcHJpb3JpdGl6ZSBhIGZ1bmN0aW9uIGNhbGxlZCAqYWZ0ZXIqIHRoZSBjaGVjaywgdW5sZXNzIGl0JiMzOTtzIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIHBhdGggaXMgdGFrZW4uCgpOb3csIGBwcm9iZWAgaXMgc3RhdGljLCB3aGljaCBpcyBhIGNvbnNpZGVyYXRpb24uIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGluc3RydWN0aW9uczogYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgYW5kIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFRoYXQgc3RhdGljLW5lc3MgdGhyb3dzIGEgd3JlbmNoIGludG8gdGhlIHdvcmtzLiBJcyBgcHJvYmVgIGlubGluZWQ/IEl0JiMzOTtzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBzdHJ1Y3QgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciB3b24mIzM5O3QgYmUgYWJsZSB0byBpbmxpbmUgaXQsIGFuZCBpdCBkZWZpbml0ZWx5IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBIb3dldmVyLCB0aGUgbmFtZSBgcHJvYmVgIGlzIGluY3JlZGlibHkgZ2VuZXJpYy4gVGhlIGZ1enplciBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCBvdGhlciBzaW1pbGFybHkgbmFtZWQgZnVuY3Rpb25zIGlmIGl0IHJlbGllcyBvbiBuYW1lIG1hdGNoaW5nLCB3aGljaCBpcyBub3QgaWRlYWwuCgpTbywgaGVyZSYjMzk7cyBteSByZXZpc2VkIHN0cmF0ZWd5LiBgemRfbWFjX2FsbG9jX2h3YCBpcyBub24tc3RhdGljLCBjYWxsZWQgKmZyb20qIGBwcm9iZWAsIGFuZCBpcyBzcGVjaWZpYyB0byB0aGlzIGRyaXZlciYjMzk7cyBmdW5jdGlvbmFsaXR5LiBJdCYjMzk7cyBhIG11Y2ggYmV0dGVyIHByb3h5IGZvciBmdXp6aW5nIHRoZSBleGVjdXRpb24gcGF0aCBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIGlzIHRoZSBjb2RlICphZnRlciogdGhlIGludGVyZmFjZSBjaGVjayBwYXNzZXMuIEkmIzM5O2xsIHVzZSBpdCBhcyB0aGUgYEZvY3VzU3ltYm9sYC4gSXQmIzM5O3MgYSB1bmlxdWUgbm9uLXN0YXRpYyBmdW5jdGlvbiBjYWxsZWQgZnJvbSBgcHJvYmVgLiBJIGFsc28ga25vdyBgemRfdXNiX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBwcm9iZWAuIEkgc2hvdWxkIHByb2JhYmx5IG1ha2Ugc3VyZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBwcm9iZSBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF91c2JfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExODY9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIwMDp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTI2Mj1zdGF0aWMgaW50IGVqZWN0X2luc3RhbGxlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMxNzppbnQgemRfdXNiX2luaXRfaHcoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxMDIKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggZW1iZWRkZWQgc3lzdGVtcyBhbmQgZHJpdmVyIGRldmVsb3BtZW50LCBmb2N1c2luZyBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gYW5kIGNvbnRleHQgcHJvdmlkZWQuCgoqKkFuYWx5emluZyBEcml2ZXIgSW5pdGlhbGl6YXRpb24gaW4gdGhlIFByb2JlIEZ1bmN0aW9uKioKCkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhpcyBVU0IgZGV2aWNlIGRyaXZlciBpcyBpbml0aWFsaXplZC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciB0aGUgYHpkX3VzYl9pbml0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnN0YW50aWF0aW9uIHNlcXVlbmNlLiBJZiBgemRfdXNiX2luaXRgIGlzIGNhbGxlZCBmcm9tIGBwcm9iZWAsIGl0IGluZGljYXRlcyBhIGRpcmVjdCwgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uIFRoYXQgaW1wbGllcyBhIHNwZWNpZmljIHRpbWluZyByZWxhdGlvbnNoaXAsIGFuZCB3aWxsIHByb2JhYmx5IGludm9sdmUgc3BlY2lmaWMgaGFyZHdhcmUgcmVnaXN0ZXIgc2V0dGluZ3MgaW4gdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGUgaW1wbGljYXRpb24gaXMgYWxzbyB0aGF0IGlmIHRoZSBwcm9iZSBmdW5jdGlvbiBmYWlscyB0aGVuIGB6ZF91c2JfaW5pdGAgd2lsbCBub3QgYmUgY2FsbGVkLiBBbHRlcm5hdGl2ZWx5LCBpdCBtaWdodCBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHksIHBlcmhhcHMgbGF0ZXIgb24gaW4gYSB3b3JrcXVldWUgb3IgaW4gYSBkZWRpY2F0ZWQgdGhyZWFkIHRyaWdnZXJlZCBieSBzb21lIG90aGVyIGV2ZW50LiBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgZ3JhcGggdG8gYmUgY2VydGFpbi4gS25vd2luZyB0aGlzIGlzIHRoZSBmaXJzdCBjcnVjaWFsIHN0ZXAgaW4gdW5kZXJzdGFuZGluZyB0aGUgZGV2aWNlJiMzOTtzIHNldHVwIGFuZCBob3cgaXQgaW50ZWdyYXRlcyB3aXRoIHRoZSBVU0Igc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pkX3VzYl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipUcmFjaW5nIHRoZSBFeGVjdXRpb24gUGF0aCoqCgpPa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgdGhhdCBsZWFkcyB0byBgemRfdXNiX2luaXRgLiBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwsIGJ1dCB3aXRob3V0IGtub3dpbmcgd2hlcmUgaXQmIzM5O3MgdHJpZ2dlcmVkLCBpdHMgcHVycG9zZSBpcyBnb2luZyB0byBiZSBvcGFxdWUuIEkgbmVlZCB0byBmaW5kIGFsbCB0aGUgcGxhY2VzIGluIHRoZSBjb2RlYmFzZSB3aGVyZSBgemRfdXNiX2luaXRgIGlzIGludm9rZWQuIEZyb20gdGhlcmUsIEkgY2FuIHJldmVyc2UgZW5naW5lZXIgdGhlIGZsb3cgYW5kIGZpZ3VyZSBvdXQgaXRzIGNvbnRleHQuIEtub3dpbmcgdGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSBjcml0aWNhbCB0byBncmFzcGluZyB0aGUgYmlnZ2VyIHBpY3R1cmUuIExldCYjMzk7cyBzdGFydCB0aGUgc2VhcmNoLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3pkX3VzYl9pbml0XFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYz0yMj12b2lkIHpkX2NoaXBfaW5pdChzdHJ1Y3QgemRfY2hpcCAqY2hpcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmMtMjctXHRtdXRleF9pbml0KFx1MDAyNmNoaXAtXHUwMDNlbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfY2hpcC5jOjI4Olx0emRfdXNiX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2V1c2IsIGh3LCBpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYy0yOS1cdHpkX3JmX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzA9c3RhdGljIGlubGluZSBzdHJ1Y3QgaWVlZTgwMjExX2h3ICp6ZF91c2JfdG9faHcoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oOjIzNTp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzYtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMwIDA3OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDM2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBaeURBUyBaRDEyMTEvWkQxMjExQiBVU0ItV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGlzIGNhbGxlZCBmcm9tIGB6ZF9jaGlwX2luaXRgLiBUaGUgY3JpdGljYWwgc3ltYm9sIGhlcmUgc2VlbXMgdG8gYmUgYHpkX21hY19hbGxvY19od2AuIEkgY2hlY2tlZCB3aGVyZSBpdCYjMzk7cyBjYWxsZWQsIGFuZCBpdCYjMzk7cyBkaXJlY3RseSBjYWxsZWQgZnJvbSBgcHJvYmVgLiBTbywgYHpkX21hY19hbGxvY19od2AgaXMgYSBzdHJvbmcgY2FuZGlkYXRlIGZvciBhIGZvY3VzIHN5bWJvbC4KCk5vdywgbGV0JiMzOTtzIHZlcmlmeSB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBUaGUgS2NvbmZpZyBmaWxlIHN0YXRlcyB0aGF0IHdlIG5lZWQgYFpEMTIxMVJXYCwgYFVTQmAsIGFuZCBgTUFDODAyMTFgLiBgVVNCYCBhbmQgYE1BQzgwMjExYCBhcmUgc3RhbmRhcmQgc3Vic3lzdGVtcywgYnV0IHdlIHNob3VsZCBpbmNsdWRlIHRoZW0gYW55d2F5LCBvciBqdXN0IGBaRDEyMTFSV2AsIGFzIHBlciB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGVuc3VyZSBldmVyeXRoaW5nIGNvbXBpbGVzIHN0YXRpY2FsbHkuIFRoZSBpbnN0cnVjdGlvbiBhbHNvIHNhaWQgdG8gbGlzdCBhbnkgcGFyZW50IHN1YnN5c3RlbXMsIHNvLCBkZWZpbml0ZWx5IGluY2x1ZGUgYE1BQzgwMjExYCBhbmQgYFVTQmAuIFRodXMsIG91ciBFbmFibGVDb25maWdzIHNob3VsZCBiZSBgWkQxMjExUldgLCBgTUFDODAyMTFgLCBhbmQgYFVTQmAuCgpBaCwgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgcHJldmVudHMgbXVsdGlwbGUgaW50ZXJmYWNlcyBvbiB0aGUgc2FtZSBkZXZpY2UgZnJvbSBjb25mbGljdGluZyBkdWUgdG8gaGFyZGNvZGVkIGVuZHBvaW50cy4gVGhlIGNvZGUgcmVqZWN0cyBzZWNvbmRhcnkgaW50ZXJmYWNlcyAoYGJJbnRlcmZhY2VOdW1iZXIgIT0gMGApIGFuZCByZXR1cm5zIGAtRU5PREVWYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZywgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgc28gaXQmIzM5O3MgV29ydGhGdXp6aW5nLgoKTXkgaW5pdGlhbCBGb2N1c1N5bWJvbHM6IGB6ZF9tYWNfYWxsb2NfaHdgLiBFbmFibGVDb25maWdzOiBgWkQxMjExUldgLCBgTUFDODAyMTFgLCBgVVNCYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIGZvY3VzIHN5bWJvbC4gU2hvdWxkIHdlIGNvbnNpZGVyIGB6ZF91c2JfaW5pdF9od2A/IE5vLCBiZWNhdXNlIGB6ZF91c2JfaW5pdF9od2AgaXMgY2FsbGVkIGZyb20gYHpkX29wX3N0YXJ0YCBhbmQgdGhpcyBpcyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGUgYnVnIGxpZXMgaW4gYHByb2JlYCwgc28sIGZvY3VzaW5nIG9uIGB6ZF9tYWNfYWxsb2NfaHdgIHdoaWNoIGlzIGRpcmVjdGx5IGNhbGxlZCBmcm9tIGBwcm9iZWAgc2VlbXMgb3B0aW1hbCBiZWNhdXNlIGl0JiMzOTtzIHdpdGhpbiB0aGUgcmVsZXZhbnQgZXhlY3V0aW9uIHBhdGguCgpOb3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBgemRfdXNiLmNgIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHByb2JlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMCAwNzo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6ZF8uKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA1NjMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTIyND1zdGF0aWMgaW50IGhhbmRsZV92ZXJzaW9uX21pc21hdGNoKHN0cnVjdCB6ZF91c2IgKnVzYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MjI3Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjgtXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnVyX2Z3ID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yNTc9c3RhdGljIGludCB1cGxvYWRfZmlybXdhcmUoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2MS1cdHUxNiBiY2REZXZpY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoyNjI6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2My1cdGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqdWJfZncgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTMyMD1NT0RVTEVfRklSTVdBUkUoRldfWkQxMjExX1BSRUZJWCBcJiMzNDt1cGhyXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjMtICogbm90IHJlcXVpcmUgZmlybXdhcmUgdG8gYmUgbG9hZGVkLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MzI0OmludCB6ZF91c2JfcmVhZF9mdyhzdHJ1Y3QgemRfdXNiICp1c2IsIHpkX2FkZHJfdCBhZGRyLCB1OCAqZGF0YSwgdTE2IGxlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTMyNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjYtXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjMyNzpcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzI4LVx0dTggKmJ1Zjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0zNzI9c3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9yZWdzX2ludChzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzgzLVx0aWYgKGludF9udW0gPT0gKHUxNilDUl9JTlRFUlJVUFQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjM4NDpcdFx0c3RydWN0IHpkX21hYyAqbWFjID0gemRfaHdfbWFjKHpkX3VzYl90b19odyh1cmItXHUwMDNlY29udGV4dCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzg1LVx0XHRzcGluX2xvY2soXHUwMDI2bWFjLVx1MDAzZWxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTQyND1zdGF0aWMgdm9pZCBpbnRfdXJiX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzAtXHRjYXNlIFVTQl9JTlRfSURfUkVUUllfRkFJTEVEOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NDcxOlx0XHR6ZF9tYWNfdHhfZmFpbGVkKHVyYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzItXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTUwMj1zdGF0aWMgaW5saW5lIGludCB1c2JfaW50X2VuYWJsZWQoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNDppbnQgemRfdXNiX2VuYWJsZV9pbnQoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTE1LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxNi1cdGludCByO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTE3Olx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MTgtXHRzdHJ1Y3QgemRfdXNiX2ludGVycnVwdCAqaW50ciA9IFx1MDAyNnVzYi1cdTAwM2VpbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUyMTpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MjItXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTQyLVx0aWYgKCFpbnRyLVx1MDAzZWJ1ZmZlcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTQzOlx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTQ0LVx0XHRcdFwmIzM0O2NvdWxkbiYjMzk7dCBhbGxvY2F0ZSB0cmFuc2Zlcl9idWZmZXJcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU1NTpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O3N1Ym1pdCB1cmIgJXBcXG5cJiMzNDssIGludHItXHUwMDNldXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1Ni1cdHIgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9LRVJORUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTU3LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU1ODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1OS1cdFx0XHQgXCYjMzQ7Q291bGRuJiMzOTt0IHN1Ym1pdCB1cmIuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTc3OnZvaWQgemRfdXNiX2Rpc2FibGVfaW50KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU3OC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NzktXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTgwOlx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01ODEtXHRzdHJ1Y3QgemRfdXNiX2ludGVycnVwdCAqaW50ciA9IFx1MDAyNnVzYi1cdTAwM2VpbnRyO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU5OC1cdHVzYl9raWxsX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTk5Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7dXJiICVwIGtpbGxlZFxcblwmIzM0OywgdXJiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYwMC1cdHVzYl9mcmVlX3VyYih1cmIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTYwNT1zdGF0aWMgdm9pZCBoYW5kbGVfcnhfcGFja2V0KHN0cnVjdCB6ZF91c2IgKnVzYiwgY29uc3QgdTggKmJ1ZmZlcixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02MTItXHRcdC8qIEl0JiMzOTtzIG5vdCBhIGNvbXBsZXRlIHBhY2tldCBhbnlob3cuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2MTM6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2ludmFsaWQsIHNtYWxsIFJYIHBhY2tldCA6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjE0LVx0XHRcdFx0XHQgICBsZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYzNy1cdFx0XHRcdHJldHVybjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjYzODpcdFx0XHR6ZF9tYWNfcngoemRfdXNiX3RvX2h3KHVzYiksIGJ1ZmZlciYjNDM7bCwgayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02MzktXHRcdFx0aWYgKGkgXHUwMDNlPSAyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTY0My1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2NDQ6XHRcdHpkX21hY19yeCh6ZF91c2JfdG9faHcodXNiKSwgYnVmZmVyLCBsZW5ndGgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjQ1LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTcxMz1zdGF0aWMgc3RydWN0IHVyYiAqYWxsb2NfcnhfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTcxNC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3MTU6XHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTcxNi1cdHN0cnVjdCB1cmIgKnVyYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz03Mzc9c3RhdGljIHZvaWQgZnJlZV9yeF91cmIoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjc0NjpzdGF0aWMgaW50IF9femRfdXNiX2VuYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NDcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjc1MjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNzk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6Nzk5OmludCB6ZF91c2JfZW5hYmxlX3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA0LVx0bXV0ZXhfbG9jayhcdTAwMjZyeC1cdTAwM2VzZXR1cF9tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MDU6XHRyID0gX196ZF91c2JfZW5hYmxlX3J4KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MDYtXHRtdXRleF91bmxvY2soXHUwMDI2cngtXHUwMDNlc2V0dXBfbXV0ZXgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODA4Olx0emRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXIodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MTM6c3RhdGljIHZvaWQgX196ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MTQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg0MDp2b2lkIHpkX3VzYl9kaXNhYmxlX3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg0MS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQ0LVx0bXV0ZXhfbG9jayhcdTAwMjZyeC1cdTAwM2VzZXR1cF9tdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NDU6XHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NDYtXHRtdXRleF91bmxvY2soXHUwMDI2cngtXHUwMDNlc2V0dXBfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg1MjpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzZXRfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NjQtXHRpZiAoZG9fcmVzZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg2NTpcdFx0X196ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODY2Olx0XHRfX3pkX3VzYl9lbmFibGVfcngodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg2Ny1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzEtXHRpZiAoZG9fcmVzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NzI6XHRcdHpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzMtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4MC0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg4MTp2b2lkIHpkX3VzYl9kaXNhYmxlX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODk3LVx0LyogVGhlIHN0b3BwZWQgc3RhdGUgaXMgaWdub3JlZCwgcmVseWluZyBvbiBpZWVlODAyMTFfd2FrZV9xdWV1ZXMoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODk4Olx0ICogaW4gYSBwb3RlbnRpb25hbGx5IGZvbGxvd2luZyB6ZF91c2JfZW5hYmxlX3R4KCkuXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTktXHQgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MDgtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5MDk6dm9pZCB6ZF91c2JfZW5hYmxlX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTE2LVx0dHgtXHUwMDNlc3VibWl0dGVkX3VyYnMgPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTE3Olx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxOC1cdHR4LVx1MDAzZXN0b3BwZWQgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTkyMj1zdGF0aWMgdm9pZCB0eF9kZWNfc3VibWl0dGVkX3VyYnMoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkyOS1cdGlmICh0eC1cdTAwM2VzdG9wcGVkIFx1MDAyNlx1MDAyNiB0eC1cdTAwM2VzdWJtaXR0ZWRfdXJicyBcdTAwM2M9IFpEX1VTQl9UWF9MT1cpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjkzMDpcdFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkzMS1cdFx0dHgtXHUwMDNlc3RvcHBlZCA9IDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTM2PXN0YXRpYyB2b2lkIHR4X2luY19zdWJtaXR0ZWRfdXJicyhzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTQzLVx0aWYgKCF0eC1cdTAwM2VzdG9wcGVkIFx1MDAyNlx1MDAyNiB0eC1cdTAwM2VzdWJtaXR0ZWRfdXJicyBcdTAwM2UgWkRfVVNCX1RYX0hJR0gpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjk0NDpcdFx0aWVlZTgwMjExX3N0b3BfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk0NS1cdFx0dHgtXHUwMDNlc3RvcHBlZCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTU3PXN0YXRpYyB2b2lkIHR4X3VyYl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTcwLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5NzE6XHR1c2IgPSBcdTAwMjZ6ZF9od19tYWMoaW5mby1cdTAwM2VyYXRlX2RyaXZlcl9kYXRhWzBdKS1cdTAwM2VjaGlwLnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk3Mi1cdHR4ID0gXHUwMDI2dXNiLVx1MDAzZXR4O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk5MC1cdHNrYl91bmxpbmsoc2tiLCBcdTAwMjZ1c2ItXHUwMDNldHguc3VibWl0dGVkX3NrYnMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTkxOlx0emRfbWFjX3R4X3RvX2Rldihza2IsIHVyYi1cdTAwM2VzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTkyLVx0dXNiX2ZyZWVfdXJiKHVyYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAxNi0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwMTc6aW50IHpkX3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDIwLVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvID0gSUVFRTgwMjExX1NLQl9DQihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTAyMTpcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAyMi1cdHN0cnVjdCB1cmIgKnVyYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDQ0LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNDU6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2Vycm9yIHN1Ym1pdCB1cmIgJXAgJWRcXG5cJiMzNDssIHVyYiwgcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDQ2LVx0XHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNTg6c3RhdGljIGJvb2wgemRfdHhfdGltZW91dChzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTA4MjpzdGF0aWMgdm9pZCB6ZF90eF93YXRjaGRvZ19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwODMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwODktXHRcdGdvdG8gb3V0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTA5MDpcdGlmICghemRfdHhfdGltZW91dCh1c2IpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5MS1cdFx0Z290byBvdXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5My1cdC8qIFRYIGhhbHRlZCwgdHJ5IHJlc2V0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDk0Olx0ZGV2X3dhcm4oemRfdXNiX2Rldih1c2IpLCBcJiMzNDtUWC1zdGFsbCBkZXRlY3RlZCwgcmVzZXR0aW5nIGRldmljZS4uLlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDk1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTA1OnZvaWQgemRfdHhfd2F0Y2hkb2dfZW5hYmxlKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDktXHRpZiAoIXR4LVx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMTA6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTExLVx0XHRxdWV1ZV9kZWxheWVkX3dvcmsoemRfd29ya3F1ZXVlLCBcdTAwMjZ0eC1cdTAwM2V3YXRjaGRvZ193b3JrLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTE3OnZvaWQgemRfdHhfd2F0Y2hkb2dfZGlzYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTE4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIxLVx0aWYgKHR4LVx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjI6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIzLVx0XHR0eC1cdTAwM2V3YXRjaGRvZ19lbmFibGVkID0gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTEyODpzdGF0aWMgdm9pZCB6ZF9yeF9pZGxlX3RpbWVyX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEyOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzMS1cdFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB6ZF91c2IsIHJ4LmlkbGVfd29yay53b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMzI6XHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTMzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTM3Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTM5LVx0LyogMzAgc2Vjb25kcyBzaW5jZSBsYXN0IHJ4LCByZXNldCByeCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MDpcdHpkX3VzYl9yZXNldF9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0MS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MzpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcl90YXNrbGV0KHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNDQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0NTpcdHN0cnVjdCB6ZF91c2IgKnVzYiA9IGZyb21fdGFza2xldCh1c2IsIHQsIHJ4LnJlc2V0X3RpbWVyX3Rhc2tsZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDc6XHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0OC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE1MDp2b2lkIHpkX3VzYl9yZXNldF9yeF9pZGxlX3RpbWVyKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExNTc9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX2ludGVycnVwdChzdHJ1Y3QgemRfdXNiICp1c2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE2MS1cdHNwaW5fbG9ja19pbml0KFx1MDAyNmludHItXHUwMDNlbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTYyOlx0aW50ci1cdTAwM2VpbnRlcnZhbCA9IGludF91cmJfaW50ZXJ2YWwoemRfdXNiX3RvX3VzYmRldih1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExNjMtXHRpbml0X2NvbXBsZXRpb24oXHUwMDI2aW50ci1cdTAwM2VyZWFkX3JlZ3MuY29tcGxldGlvbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjExLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIxMjp2b2lkIHpkX3VzYl9jbGVhcihzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjM0PXN0YXRpYyBpbnQgc2NucHJpbnRfaWQoc3RydWN0IHVzYl9kZXZpY2UgKnVkZXYsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTI0Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEyNDM6aW50IHpkX3VzYl9zY25wcmludF9pZChzdHJ1Y3QgemRfdXNiICp1c2IsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTktXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjA6XHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyMjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMjUtXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyNjpcdFx0ZGV2X2Vycih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzI3LVx0XHQgICAgICAgXCYjMzQ7Y291bGRuJiMzOTt0IGxvYWQgZmlybXdhcmUuIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzE6XHRyID0gdXNiX3Jlc2V0X2NvbmZpZ3VyYXRpb24oemRfdXNiX3RvX3VzYmRldih1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzItXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMzMzpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzQtXHRcdFx0XCYjMzQ7Y291bGRuJiMzOTt0IHJlc2V0IGNvbmZpZ3VyYXRpb24uIEVycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzg6XHRyID0gemRfbWFjX2luaXRfaHcobWFjLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMzktXHRpZiAocikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0MDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDEtXHRcdCAgICAgICAgIFwmIzM0O2NvdWxkbiYjMzk7dCBpbml0aWFsaXplIG1hYy4gRXJyb3IgbnVtYmVyICVkXFxuXCYjMzQ7LCByKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcdGh3ID0gemRfbWFjX2FsbG9jX2h3KGludGYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cdGlmIChodyA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTM6XHR1c2IgPSBcdTAwMjZ6ZF9od19tYWMoaHcpLVx1MDAzZWNoaXAudXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NC1cdHVzYi1cdTAwM2Vpc196ZDEyMTFiID0gKGlkLVx1MDAzZWRyaXZlcl9pbmZvID09IERFVklDRV9aRDEyMTFCKSAhPSAwO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzOTY6XHRyID0gemRfbWFjX3ByZWluaXRfaHcoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Ny1cdGlmIChyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNS1cdGlmIChodykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQxNjpcdFx0emRfbWFjX2NsZWFyKHpkX2h3X21hYyhodykpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNy1cdFx0aWVlZTgwMjExX2ZyZWVfaHcoaHcpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE0MjI9c3RhdGljIHZvaWQgZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MjMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQyNDpcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gemRfaW50Zl90b19odyhpbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MjUtXHRzdHJ1Y3QgemRfbWFjICptYWM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0MzM6XHRtYWMgPSB6ZF9od19tYWMoaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzNC1cdHVzYiA9IFx1MDAyNm1hYy1cdTAwM2VjaGlwLnVzYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDM2Olx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ0MC1cdC8qIEp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmchICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDQxOlx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NDI6XHR6ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ0MzpcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ0NC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1MjpcdHpkX21hY19jbGVhcihtYWMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1My1cdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1NzpzdGF0aWMgdm9pZCB6ZF91c2JfcmVzdW1lKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1OTpcdHN0cnVjdCB6ZF9tYWMgKm1hYyA9IHpkX3VzYl90b19tYWModXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjAtXHRpbnQgcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDYyOlx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY0Olx0ciA9IHpkX29wX3N0YXJ0KHpkX3VzYl90b19odyh1c2IpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjUtXHRpZiAociBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ2NjpcdFx0ZGV2X3dhcm4oemRfdXNiX2Rldih1c2IpLCBcJiMzNDtEZXZpY2UgcmVzdW1lIGZhaWxlZCBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NjctXHRcdFx0IFwmIzM0O3dpdGggZXJyb3IgY29kZSAlZC4gUmV0cnlpbmcuLi5cXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzQtXHRpZiAobWFjLVx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NzU6XHRcdHIgPSB6ZF9yZXN0b3JlX3NldHRpbmdzKG1hYyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDc2LVx0XHRpZiAociBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ3NzpcdFx0XHRkZXZfZGJnKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzgtXHRcdFx0XHRcJiMzNDtmYWlsZWQgdG8gcmVzdG9yZSBzZXR0aW5ncywgJWRcXG5cJiMzNDssIHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDg0OnN0YXRpYyB2b2lkIHpkX3VzYl9zdG9wKHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ4NjpcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDg3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ4ODpcdHpkX29wX3N0b3AoemRfdXNiX3RvX2h3KHVzYiksIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDkwOlx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0OTE6XHR6ZF91c2JfZGlzYWJsZV9yeCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ5MjpcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ5My1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNDk3PXN0YXRpYyBpbnQgcHJlX3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTA2Olx0bWFjID0gemRfaHdfbWFjKGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDctXHR1c2IgPSBcdTAwMjZtYWMtXHUwMDNlY2hpcC51c2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUxMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MTE6XHR6ZF91c2Jfc3RvcCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUxMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNTE3PXN0YXRpYyBpbnQgcG9zdF9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUyNjpcdG1hYyA9IHpkX2h3X21hYyhodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI3LVx0dXNiID0gXHUwMDI2bWFjLVx1MDAzZWNoaXAudXNiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MzEtXHRpZiAodXNiLVx1MDAzZXdhc19ydW5uaW5nKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUzMjpcdFx0emRfdXNiX3Jlc3VtZSh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzMy1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1NDg9c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTU1NDpcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1NTUtXHRpZiAoemRfd29ya3F1ZXVlID09IE5VTEwpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNTgwPW1vZHVsZV9leGl0KHVzYl9leGl0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1ODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTgyOnN0YXRpYyBpbnQgemRfZXBfcmVnc19vdXRfbXNnKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU4My1cdFx0XHQgICAgICBpbnQgKmFjdHVhbF9sZW5ndGgsIGludCB0aW1lb3V0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE2MzA9c3RhdGljIGJvb2wgY2hlY2tfcmVhZF9yZWdzKHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IHVzYl9yZXFfcmVhZF9yZWdzICpyZXEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0MS1cdGlmIChyci1cdTAwM2VsZW5ndGggXHUwMDNjIHN0cnVjdF9zaXplKHJlZ3MsIHJlZ3MsIGNvdW50KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY0MjpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NDMtXHRcdFx0IFwmIzM0O2Vycm9yOiBhY3R1YWwgbGVuZ3RoICVkIGxlc3MgdGhhbiBleHBlY3RlZCAlenVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0OC1cdGlmIChyci1cdTAwM2VsZW5ndGggXHUwMDNlIHNpemVvZihyci1cdTAwM2VidWZmZXIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNjQ5Olx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1MC1cdFx0XHQgXCYjMzQ7ZXJyb3I6IGFjdHVhbCBsZW5ndGggJWQgZXhjZWVkcyBidWZmZXIgc2l6ZSAlenVcXG5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1Ny1cdFx0aWYgKHJkLVx1MDAzZWFkZHIgIT0gcmVxLVx1MDAzZWFkZHJbaV0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2NTg6XHRcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NTktXHRcdFx0XHQgXCYjMzQ7cmRbJWRdIGFkZHIgJSMwNmh4IGV4cGVjdGVkICUjMDZoeFxcblwmIzM0OywgaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNjY5PXN0YXRpYyBpbnQgZ2V0X3Jlc3VsdHMoc3RydWN0IHpkX3VzYiAqdXNiLCB1MTYgKnZhbHVlcyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjg4LVx0aWYgKCFjaGVja19yZWFkX3JlZ3ModXNiLCByZXEsIGNvdW50KSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY4OTpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7ZXJyb3I6IGludmFsaWQgcmVhZCByZWdzXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2OTAtXHRcdGdvdG8gZXJyb3JfdW5sb2NrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzA0OmludCB6ZF91c2JfaW9yZWFkMTZ2KHN0cnVjdCB6ZF91c2IgKnVzYiwgdTE2ICp2YWx1ZXMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzA1LVx0ICAgICAgICAgICAgIGNvbnN0IHpkX2FkZHJfdCAqYWRkcmVzc2VzLCB1bnNpZ25lZCBpbnQgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxMy1cdGlmIChjb3VudCBcdTAwM2MgMSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcxNDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7ZXJyb3I6IGNvdW50IGlzIHplcm9cXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNy1cdGlmIChjb3VudCBcdTAwM2UgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcxODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MTktXHRcdFx0IFwmIzM0O2Vycm9yOiBjb3VudCAldSBleGNlZWRzIHBvc3NpYmxlIG1heCAldVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzIzLVx0aWYgKCF1c2JfaW50X2VuYWJsZWQodXNiKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcyNDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MjUtXHRcdFx0ICBcJiMzNDtlcnJvcjogdXNiIGludGVycnVwdCBub3QgZW5hYmxlZFxcblwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3Mjk6XHRaRF9BU1NFUlQobXV0ZXhfaXNfbG9ja2VkKFx1MDAyNnpkX3VzYl90b19jaGlwKHVzYiktXHUwMDNlbXV0ZXgpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MzAtXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB1c2JfcmVxX3JlYWRfcmVncykgJiM0MzsgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCAqXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc0My1cdHRyeV9jb3VudCYjNDM7JiM0Mzs7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ0Olx0dWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDUtXHRwcmVwYXJlX3JlYWRfcmVnc19pbnQodXNiLCByZXEsIGNvdW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NDY6XHRyID0gemRfZXBfcmVnc19vdXRfbXNnKHVkZXYsIHJlcSwgcmVxX2xlbiwgXHUwMDI2YWN0dWFsX3JlcV9sZW4sIDUwIC8qbXMqLyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzQ3LVx0aWYgKHIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NDg6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ5Olx0XHRcdFwmIzM0O2Vycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpLiBFcnJvciBudW1iZXIgJWRcXG5cJiMzNDssIHIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1MC1cdFx0Z290byBlcnJvcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzUyLVx0aWYgKHJlcV9sZW4gIT0gYWN0dWFsX3JlcV9sZW4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NTM6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFwmIzM0O2Vycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpXFxuXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzU0LVx0XHRcdFwmIzM0OyByZXFfbGVuICVkICE9IGFjdHVhbF9yZXFfbGVuICVkXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NjMtXHRcdGRpc2FibGVfcmVhZF9yZWdzX2ludCh1c2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc2NDpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7cmVhZCB0aW1lZCBvdXRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc2NS1cdFx0ciA9IC1FVElNRURPVVQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc3MC1cdGlmIChyZXRyeSBcdTAwMjZcdTAwMjYgdHJ5X2NvdW50IFx1MDAzYyAyMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc3MTpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXCYjMzQ7cmVhZCByZXRyeSwgdHJpZXMgc28gZmFyOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NzItXHRcdFx0XHR0cnlfY291bnQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE3Nzk9c3RhdGljIHZvaWQgaW93cml0ZTE2dl91cmJfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzkxOnN0YXRpYyBpbnQgemRfc3VibWl0X3dhaXRpbmdfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYiwgYm9vbCBsYXN0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc5Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgwNy1cdFx0dXNiX3VuYW5jaG9yX3VyYih1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgwODpcdFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MDktXHRcdFx0XCYjMzQ7ZXJyb3IgaW4gdXNiX3N1Ym1pdF91cmIoKS4gRXJyb3IgbnVtYmVyICVkXFxuXCYjMzQ7LCByKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODE4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgxOTp2b2lkIHpkX3VzYl9pb3dyaXRlMTZ2X2FzeW5jX3N0YXJ0KHN0cnVjdCB6ZF91c2IgKnVzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODI1Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODMyOmludCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19lbmQoc3RydWN0IHpkX3VzYiAqdXNiLCB1bnNpZ25lZCBpbnQgdGltZW91dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODM2Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODM3LVx0WkRfQVNTRVJUKHVzYi1cdTAwM2Vpbl9hc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzOS1cdC8qIFN1Ym1pdCBsYXN0IGlvd3JpdGUxNnYgVVJCICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQwOlx0ciA9IHpkX3N1Ym1pdF93YWl0aW5nX3VyYih1c2IsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg0MS1cdGlmIChyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQyOlx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg0MzpcdFx0XHRcJiMzNDtlcnJvciBpbiB6ZF9zdWJtaXRfd2FpdGluZ191c2IoKS4gXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODQ0LVx0XHRcdFwmIzM0O0Vycm9yIG51bWJlciAlZFxcblwmIzM0Oywgcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1NS1cdFx0aWYgKHVzYi1cdTAwM2VjbWRfZXJyb3IgPT0gLUVOT0VOVCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg1NjpcdFx0XHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcJiMzNDt0aW1lZCBvdXRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1Ny1cdFx0XHRyID0gLUVUSU1FRE9VVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg2ODppbnQgemRfdXNiX2lvd3JpdGUxNnZfYXN5bmMoc3RydWN0IHpkX3VzYiAqdXNiLCBjb25zdCBzdHJ1Y3QgemRfaW9yZXExNiAqaW9yZXFzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg2OS1cdFx0XHQgICAgdW5zaWduZWQgaW50IGNvdW50KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODc4Olx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVx1MDAzZW11dGV4KSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc5LVx0WkRfQVNTRVJUKHVzYi1cdTAwM2Vpbl9hc3luYyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg4My1cdGlmIChjb3VudCBcdTAwM2UgVVNCX01BWF9JT1dSSVRFMTZfQ09VTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4ODQ6XHRcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODg1LVx0XHRcdFwmIzM0O2Vycm9yOiBjb3VudCAldSBleGNlZWRzIHBvc3NpYmxlIG1heCAldVxcblwmIzM0Oyxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMTAKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogMTE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpEMTIxMVJXIFBhdGNoKioKCk9rYXksIHNvIGB6ZF9tYWNfYWxsb2NfaHdgIGxvb2tzIHNvbGlkLCBpdCBzZWVtcyBsaWtlIHdlIGhhdmUgYSBnb29kIGZpeCBoZXJlLiBJJiMzOTttIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBvdXRwdXQgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uLCBtYWtpbmcgc3VyZSBldmVyeXRoaW5nIGlzIGNsZWFyIGZvciB0aGUgbmV4dCBzdGVwcy4KCkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIHNvIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byB0cnVlLiBUaGUgY3JpdGljYWwgZnVuY3Rpb24gdG8gZm9jdXMgb24gaXMgYHpkX21hY19hbGxvY19od2AsIHNvIHRoYXQmIzM5O3MgaW4gYEZvY3VzU3ltYm9sc2AuCgpXZSYjMzk7bGwgYmUgc3VyZSB0byBlbmFibGUgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBaRDEyMTFSV2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC4gVGhlIHJlYXNvbmluZyBoZXJlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIGNvbmZsaWN0IGlzc3VlIHRoYXQgYXJvc2Ugd2l0aCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjaGVjayBpbiB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gcHJldmVudCB0aGVzZSBjb25mbGljdHMgYnkgcmVqZWN0aW5nIHNlY29uZGFyeSBpbnRlcmZhY2VzLiBTaW5jZSBpdCYjMzk7cyBjaGFuZ2luZyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBpbnRlcmZhY2UgcHJvYmluZywgaXQmIzM5O3MgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBXZSBjYW4gYW5kIHNob3VsZCB0cnkgdG8gZmluZCBhbnkgcmVncmVzc2lvbnMgd2l0aCB0aGVzZSBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzAgMDc6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pEMTIxMVJXJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3pkX21hY19hbGxvY19odyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlciYjMzk7cyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaRDEyMTFSVyYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtVU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt6ZF9tYWNfYWxsb2NfaHcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXImIzM5O3MgcHJvYmUgZnVuY3Rpb24gdG8gcmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzIG9uIFpEMTIxMSBkZXZpY2VzLCBwcmV2ZW50aW5nIGNvbmZsaWN0cyBhbmQgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuIFRoaXMgbW9kaWZpZXMgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZnV6emluZyAoZS5nLiwgZHVtbXlfaGNkKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjE2LjEzMzkwMDQzNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTk2MzYzNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpEMTIxMVJXXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemRfbWFjX2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToxNi4xMzM5MTQ5MzZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNTY1OTI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDg3NDdmYWEyOWE0ZjIyYmI3OTkzODFlMWJjMGFlNjE4YTllN2I2ZTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6NDk6MTUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xcbmluZGV4IDk2NmQ4Y2NiMGRiY2QuLjk4MTAyYzY2MzQzNGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1xcbkBAIC0xMzUzLDYgKzEzNTMsMTQgQEAgc3RhdGljIGludCBwcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKVxcbiBcXHRzdHJ1Y3QgemRfdXNiICp1c2I7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIFpEMTIxMSBkZXZpY2VzIGFyZSBzaW5nbGUtZnVuY3Rpb24uIFJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlc1xcbitcXHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcXG4rXFx0ICogYW5kIHRyaWdnZXJpbmcgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuXFxuK1xcdCAqL1xcbitcXHRpZiAoaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHByaW50X2lkKHVkZXYpO1xcbiBcXG4gXFx0aWYgKGlkLVxcdTAwM2Vkcml2ZXJfaW5mbyBcXHUwMDI2IERFVklDRV9JTlNUQUxMRVIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjE2LjU2MDU4MzMzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY2NTY5NjY3NDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpEMTIxMVJXXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiemRfbWFjX2FsbG9jX2h3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNoZWNrIGluIHRoZSBkcml2ZXIncyBwcm9iZSBmdW5jdGlvbiB0byByZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXMgb24gWkQxMjExIGRldmljZXMsIHByZXZlbnRpbmcgY29uZmxpY3RzIGFuZCByZWN1cnNpdmUgbG9ja2luZyB3YXJuaW5ncy4gVGhpcyBtb2RpZmllcyB0aGUgZHJpdmVyIGluaXRpYWxpemF0aW9uIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nIChlLmcuLCBkdW1teV9oY2QpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4NzQ3ZmFhMjlhNGYyMmJiNzk5MzgxZTFiYzBhZTYxOGE5ZTdiNmU1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMzAgMDc6NDk6MTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXG5pbmRleCA5NjZkOGNjYjBkYmNkLi45ODEwMmM2NjM0MzRiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXG5AQCAtMTM1Myw2ICsxMzUzLDE0IEBAIHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbiBcdHN0cnVjdCB6ZF91c2IgKnVzYjtcbiBcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gTlVMTDtcbiBcbitcdC8qXG4rXHQgKiBaRDEyMTEgZGV2aWNlcyBhcmUgc2luZ2xlLWZ1bmN0aW9uLiBSZWplY3Qgc2Vjb25kYXJ5IGludGVyZmFjZXNcbitcdCAqIHRvIHByZXZlbnQgbXVsdGlwbGUgaW5zdGFuY2VzIGZyb20gY29uZmxpY3Rpbmcgb24gaGFyZGNvZGVkIGVuZHBvaW50c1xuK1x0ICogYW5kIHRyaWdnZXJpbmcgcmVjdXJzaXZlIGxvY2tpbmcgd2FybmluZ3MuXG4rXHQgKi9cbitcdGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcbiBcdHByaW50X2lkKHVkZXYpO1xuIFxuIFx0aWYgKGlkLVx1MDAzZWRyaXZlcl9pbmZvIFx1MDAyNiBERVZJQ0VfSU5TVEFMTEVSKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6MTYuNTYwNTg1NDA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA1NDgxODEyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogemQxMjExcncgVVNCIFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBuZXcgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jYCB0aGF0J3MgbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IHNlZW1zIHRoZXkndmUgYWRkZWQgYSBjaGVjayB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24sIHNwZWNpZmljYWxseSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMgKGBpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwYCkuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGltbWVkaWF0ZWx5IHRyaWdnZXJzIHNvbWUgdGhvdWdodHMgYWJvdXQgZnV6emluZy5cblxuVGhpcyBgemQxMjExcndgIGRyaXZlciBpcyBmb3IgVVNCIHdpcmVsZXNzLCB3aGljaCBtZWFucyBpdCBzaG91bGQgYmUgcHJldHR5IGFjY2Vzc2libGUgZm9yIGZ1enppbmcuIFNpbmNlIHdlIGNhbiBlbXVsYXRlIFVTQiBkZXZpY2VzIHVzaW5nIGdhZGdldHMgb3IgYGR1bW15X2hjZGAsIGFuZCBzeXprYWxsZXIgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIFRoaXMgaXMgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIHNvbWUgaW4tZGVwdGggZnV6emluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYHpkMTIxMXJ3YCB0byBnZXQgbW9yZSBjb250ZXh0IGFuZCBmaWd1cmUgb3V0IGhvdyB0byBiZXN0IHRhcmdldCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1OCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjIxLjYxNTQwNzc5MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTE3Mzg1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWkQxMjExUldcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZzoyOmNvbmZpZyBaRDEyMTFSV1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiWnlEQVMgWkQxMjExL1pEMTIxMUIgVVNCLXdpcmVsZXNzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9LY29uZmlnLTEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWc6MTM6Y29uZmlnIFpEMTIxMVJXX0RFQlVHXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJaeURBUyBaRDEyMTEgZGVidWdnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyMS43MDA1ODcyOTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTc5MjIxMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqQXNzZXNzaW5nIFpEMTIxMVJXIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIHByb21wdCBpbnZvbHZlcyBaRDEyMTFSVy4gSW1tZWRpYXRlbHksIG15IG1pbmQganVtcHMgdG8gdGhlIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIGNvbnNpZGVyIGFueXRoaW5nIGVsc2UgYWJvdXQgdGhlIFpEMTIxMVJXLCBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQgb3RoZXIgY29tcG9uZW50cywgbGlicmFyaWVzLCBvciBzeXN0ZW1zIGl0IHJlbGllcyBvbi4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcCBpbiBhbnkgYW5hbHlzaXMuIEkgbmVlZCB0byBrbm93IHRoZSBwb3RlbnRpYWwgcmlwcGxlIGVmZmVjdHMgaWYgSSdtIGdvaW5nIHRvIG1vZGlmeSBpdCwgdHJvdWJsZXNob290IGl0LCBvciBldmVuIGp1c3QgYXNzZXNzIGl0cyBjdXJyZW50IHN0YXRlLiBJIG5lZWQgdG8gaWRlbnRpZnkgaXRzIGRpcmVjdCBhbmQgaW5kaXJlY3QgZGVwZW5kZW5jaWVzLiBXaGF0IG1vZHVsZXMgY2FsbCBpdCwgd2hhdCBkb2VzIGl0IGNhbGw/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhvc2UgZGVwZW5kZW5jaWVzPyBUaGlzIGludmVzdGlnYXRpb24gaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NzYsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyNC44Nzk4MTA3M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBaRDEyMTFSV1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlp5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi13aXJlbGVzcyBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBVU0IgXFx1MDAyNlxcdTAwMjYgTUFDODAyMTFcXG4gICA1OlxcdFxcdHNlbGVjdCBGV19MT0FERVJcXG4gICA2OlxcdFxcdGhlbHBcXG4gICA3OlxcdFxcdCAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIHdpcmVsZXNzXFxuICAgODpcXHRcXHQgIGNoaXAsIHByZXNlbnQgaW4gbWFueSBVU0Itd2lyZWxlc3MgYWRhcHRlcnMuXFxuICAgOTpcXHRcXG4gIDEwOlxcdFxcdCAgRGV2aWNlIGZpcm13YXJlIGlzIHJlcXVpcmVkIGFsb25nc2lkZSB0aGlzIGRyaXZlci4gWW91IGNhbiBkb3dubG9hZFxcbiAgMTE6XFx0XFx0ICB0aGUgZmlybXdhcmUgZGlzdHJpYnV0aW9uIGZyb20gaHR0cDovL3NmLm5ldC9wcm9qZWN0cy96ZDEyMTEvZmlsZXMvXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBaRDEyMTFSV19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiWnlEQVMgWkQxMjExIGRlYnVnZ2luZ1xcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gWkQxMjExUldcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgWkQxMjExIGRlYnVnZ2luZyBtZXNzYWdlcy4gQ2hvb3NpbmcgWSB3aWxsIHJlc3VsdCBpbiBhZGRpdGlvbmFsIGRlYnVnXFxuICAxODpcXHRcXHQgIG1lc3NhZ2VzIGJlaW5nIHNhdmVkIHRvIHlvdXIga2VybmVsIGxvZ3MsIHdoaWNoIG1heSBoZWxwIGRlYnVnIGFueVxcbiAgMTk6XFx0XFx0ICBwcm9ibGVtcy5cXG4gIDIwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OToyNC44Nzk4ODczOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjI5MTcyMzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBaRDEyMTFSVyBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgSSdtIGRlYWxpbmcgd2l0aCB0aGUgYFpEMTIxMVJXYCBkcml2ZXIsIHNwZWNpZmljYWxseSBpdHMgVVNCIGltcGxlbWVudGF0aW9uLCBzaW5jZSB0aGUgZGVwZW5kZW5jaWVzIGxpc3RlZCBhcmUgYFVTQmAgYW5kIGBNQUM4MDIxMWAuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZW5hYmxlIHRoZSBgWkQxMjExUldgIGNvbmZpZ3VyYXRpb24uIE5vdywgaXQgbG9va3MgbGlrZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgZHJpdmVyIGlzIGJlaW5nIG1vZGlmaWVkLCBzcGVjaWZpY2FsbHkgdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoZSBmaWxlIHBhdGggcG9pbnRzIG1lIHRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGhhdmUgYSBodW5jaCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvZGUgcmVhbCBxdWljayBhbmQgdmVyaWZ5IGl0cyBkZWNsYXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMxNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6MjguOTQyODA3NTg3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjY1NzE2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGF0aWMgaW50IHByb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEzMTc9aW50IHpkX3VzYl9pbml0X2h3KHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0OTpzdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM1MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjI5LjE3NTQ3MDI2NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0ODIyMzIyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgRHJpdmVyIFByb2JlIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSB0ZWxscyBtZSBpdCdzIGEgYHN0YXRpY2AgZnVuY3Rpb24sIHdoaWNoIGltbWVkaWF0ZWx5IGNsdWVzIG1lIGluIHRvIGl0cyBwdXJwb3NlOiBpdCdzIGxpa2VseSBhIGNhbGxiYWNrIGZ1bmN0aW9uIHVzZWQgd2l0aGluIHRoZSBgc3RydWN0IHVzYl9kcml2ZXJgIHN0cnVjdHVyZS4gTXkgbmV4dCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IG5hbWluZyBjb252ZW50aW9ucyBvZiB0aGlzIHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIGBwcm9iZWAgZnVuY3Rpb24ncyByb2xlIGluIHRoZSBVU0IgZGV2aWNlIGRyaXZlciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIHN0cnVjdHVyZSdzIG5hbWUgaXMgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc3MywiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjMyLjY1NzcwNjAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjE0NzI5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IHVzYl9kcml2ZXIgLio9XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE1MTc9c3RhdGljIGludCBwb3N0X3Jlc2V0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTM2OnN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBkcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzNy1cXHQubmFtZVxcdFxcdD0gS0JVSUxEX01PRE5BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjMyLjc3OTE4MzQyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyOTM3MjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYGRyaXZlcmAgY29kZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGp1c3QgZm9jdXMgb24gdGhhdCwgYnV0IHdhaXTigKYgdGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgYXMgYSBmb2N1cyBzeW1ib2wsIGVzcGVjaWFsbHkgaWYgaXQncyBzdGF0aWMgYW5kICpjYWxsZWQqIGBwcm9iZWAuIFdlIG5lZWQgc29tZXRoaW5nIGxlc3MgZ2VuZXJpYy5cblxuTGV0J3Mgc2VlLiBJIG5lZWQgdG8gc2NhbiBgemRfdXNiLmNgIGFuZCBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSBhIGJldHRlciBlbnRyeSBwb2ludCwgb3IgcGVyaGFwcyBgemRfdXNiX2luaXRfaHdgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGU/XG5cbkFoLCByaWdodC4gVGhlIGBwcm9iZWAgZnVuY3Rpb24gaXMsIGluIGZhY3QsIHRoZSBzdGFuZGFyZCBlbnRyeSBwb2ludCBmb3IgVVNCIGRldmljZSBwcm9iaW5nLiBJdCB3b3VsZCBiZSBzaWxseSB0byBkaXNjb3VudCBpdC5cblxuQWxyaWdodCwgYSBxdWljayBjaGVja+KApiBpcyBgcHJvYmVgIHRoZSAqb25seSogZnVuY3Rpb24gdGhhdCdzIGJlZW4gbW9kaWZpZWQ/IFllcywgdGhhdCBhbnN3ZXJzIHRoYXQuXG5cblNvLCBzaW5jZSBJIHNlZW0gdG8gYmUgc3R1Y2sgb24gYHByb2JlYCwgYXJlIHRoZXJlIGFueSByZWxhdGVkIGZ1bmN0aW9ucyBhcm91bmQgaXQgaW4gYHpkX3VzYi5jYCB0aGF0IG1pZ2h0IHByb3ZpZGUgbW9yZSBjb250ZXh0IG9yIGluc2lnaHRzPyBMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBzZWUgd2hhdCdzIGhhcHBlbmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE0MywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTozOS4wODIxMjI0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc5NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0MDpcXHRcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbjEzNDE6XFx0XFx0XFx0ICAgICAgICAgXFxcImNvdWxkbid0IGluaXRpYWxpemUgbWFjLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbjEzNDI6XFx0XFx0XFx0cmV0dXJuIHI7XFxuMTM0MzpcXHRcXHR9XFxuMTM0NDpcXHRcXG4xMzQ1OlxcdFxcdHVzYi1cXHUwMDNlaW5pdGlhbGl6ZWQgPSAxO1xcbjEzNDY6XFx0XFx0cmV0dXJuIDA7XFxuMTM0NzpcXHR9XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdHN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdGludCByO1xcbjEzNTI6XFx0XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYpO1xcbjEzNTM6XFx0XFx0c3RydWN0IHpkX3VzYiAqdXNiO1xcbjEzNTQ6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBOVUxMO1xcbjEzNTU6XFx0XFxuMTM1NjpcXHRcXHQvKlxcbjEzNTc6XFx0XFx0ICogWkQxMjExIGRldmljZXMgYXJlIHNpbmdsZS1mdW5jdGlvbi4gUmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzXFxuMTM1ODpcXHRcXHQgKiB0byBwcmV2ZW50IG11bHRpcGxlIGluc3RhbmNlcyBmcm9tIGNvbmZsaWN0aW5nIG9uIGhhcmRjb2RlZCBlbmRwb2ludHNcXG4xMzU5OlxcdFxcdCAqIGFuZCB0cmlnZ2VyaW5nIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLlxcbjEzNjA6XFx0XFx0ICovXFxuMTM2MTpcXHRcXHRpZiAoaW50Zi1cXHUwMDNlY3VyX2FsdHNldHRpbmctXFx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKVxcbjEzNjI6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMTM2MzpcXHRcXG4xMzY0OlxcdFxcdHByaW50X2lkKHVkZXYpO1xcbjEzNjU6XFx0XFxuMTM2NjpcXHRcXHRpZiAoaWQtXFx1MDAzZWRyaXZlcl9pbmZvIFxcdTAwMjYgREVWSUNFX0lOU1RBTExFUilcXG4xMzY3OlxcdFxcdFxcdHJldHVybiBlamVjdF9pbnN0YWxsZXIoaW50Zik7XFxuMTM2ODpcXHRcXG4xMzY5OlxcdFxcdHN3aXRjaCAodWRldi1cXHUwMDNlc3BlZWQpIHtcXG4xMzcwOlxcdFxcdGNhc2UgVVNCX1NQRUVEX0xPVzpcXG4xMzcxOlxcdFxcdGNhc2UgVVNCX1NQRUVEX0ZVTEw6XFxuMTM3MjpcXHRcXHRjYXNlIFVTQl9TUEVFRF9ISUdIOlxcbjEzNzM6XFx0XFx0XFx0YnJlYWs7XFxuMTM3NDpcXHRcXHRkZWZhdWx0OlxcbjEzNzU6XFx0XFx0XFx0ZGV2X2RiZ19mKFxcdTAwMjZpbnRmLVxcdTAwM2VkZXYsIFxcXCJVbmtub3duIFVTQiBzcGVlZFxcXFxuXFxcIik7XFxuMTM3NjpcXHRcXHRcXHRyID0gLUVOT0RFVjtcXG4xMzc3OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuMTM3ODpcXHRcXHR9XFxuMTM3OTpcXHRcXG4xMzgwOlxcdFxcdHIgPSB1c2JfcmVzZXRfZGV2aWNlKHVkZXYpO1xcbjEzODE6XFx0XFx0aWYgKHIpIHtcXG4xMzgyOlxcdFxcdFxcdGRldl9lcnIoXFx1MDAyNmludGYtXFx1MDAzZWRldixcXG4xMzgzOlxcdFxcdFxcdFxcdFxcXCJjb3VsZG4ndCByZXNldCB1c2IgZGV2aWNlLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbjEzODQ6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4xMzg1OlxcdFxcdH1cXG4xMzg2OlxcdFxcbjEzODc6XFx0XFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XFxuMTM4ODpcXHRcXHRpZiAoaHcgPT0gTlVMTCkge1xcbjEzODk6XFx0XFx0XFx0ciA9IC1FTk9NRU07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjM5LjA4MjIzMTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NDM2NTkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBgcHJvYmVgIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYHN0YXRpY2AsIHdoaWNoIG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhpcyBkcml2ZXIgZmlsZS4gSXQncyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIHByb2JpbmcgcHJvY2VzcywgYnV0IHRoZSBmYWN0IHRoYXQgaXQncyBzdGF0aWMgaXMgcG90ZW50aWFsbHkgbGltaXRpbmcuIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSB0byBpdC4gSG1tLCBsZXQgbWUgc2Nyb2xsIHRvIHRoZSBlbmQgb2YgYHpkX3VzYi5jYC4gUGVyaGFwcyB0aGVyZSdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiBleHBvc2VkIHRoYXQgSSBjYW4gdXRpbGl6ZSBpbnN0ZWFkLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1NCwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NDk6NDIuNjU2NjAwMjc0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTMwOlxcdFxcbjE1MzE6XFx0XFx0aWYgKHVzYi1cXHUwMDNld2FzX3J1bm5pbmcpXFxuMTUzMjpcXHRcXHRcXHR6ZF91c2JfcmVzdW1lKHVzYik7XFxuMTUzMzpcXHRcXHRyZXR1cm4gMDtcXG4xNTM0OlxcdH1cXG4xNTM1OlxcdFxcbjE1MzY6XFx0c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIGRyaXZlciA9IHtcXG4xNTM3OlxcdFxcdC5uYW1lXFx0XFx0PSBLQlVJTERfTU9ETkFNRSxcXG4xNTM4OlxcdFxcdC5pZF90YWJsZVxcdD0gdXNiX2lkcyxcXG4xNTM5OlxcdFxcdC5wcm9iZVxcdFxcdD0gcHJvYmUsXFxuMTU0MDpcXHRcXHQuZGlzY29ubmVjdFxcdD0gZGlzY29ubmVjdCxcXG4xNTQxOlxcdFxcdC5wcmVfcmVzZXRcXHQ9IHByZV9yZXNldCxcXG4xNTQyOlxcdFxcdC5wb3N0X3Jlc2V0XFx0PSBwb3N0X3Jlc2V0LFxcbjE1NDM6XFx0XFx0LmRpc2FibGVfaHViX2luaXRpYXRlZF9scG0gPSAxLFxcbjE1NDQ6XFx0fTtcXG4xNTQ1OlxcdFxcbjE1NDY6XFx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnpkX3dvcmtxdWV1ZTtcXG4xNTQ3OlxcdFxcbjE1NDg6XFx0c3RhdGljIGludCBfX2luaXQgdXNiX2luaXQodm9pZClcXG4xNTQ5OlxcdHtcXG4xNTUwOlxcdFxcdGludCByO1xcbjE1NTE6XFx0XFxuMTU1MjpcXHRcXHRwcl9kZWJ1ZyhcXFwiJXMgdXNiX2luaXQoKVxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1NTM6XFx0XFxuMTU1NDpcXHRcXHR6ZF93b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZShkcml2ZXIubmFtZSk7XFxuMTU1NTpcXHRcXHRpZiAoemRfd29ya3F1ZXVlID09IE5VTEwpIHtcXG4xNTU2OlxcdFxcdFxcdHByX2VycihcXFwiJXMgY291bGRuJ3QgY3JlYXRlIHdvcmtxdWV1ZVxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1NTc6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTU1ODpcXHRcXHR9XFxuMTU1OTpcXHRcXG4xNTYwOlxcdFxcdHIgPSB1c2JfcmVnaXN0ZXIoXFx1MDAyNmRyaXZlcik7XFxuMTU2MTpcXHRcXHRpZiAocikge1xcbjE1NjI6XFx0XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcXG4xNTYzOlxcdFxcdFxcdHByX2VycihcXFwiJXMgdXNiX3JlZ2lzdGVyKCkgZmFpbGVkLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsXFxuMTU2NDpcXHRcXHRcXHQgICAgICAgZHJpdmVyLm5hbWUsIHIpO1xcbjE1NjU6XFx0XFx0XFx0cmV0dXJuIHI7XFxuMTU2NjpcXHRcXHR9XFxuMTU2NzpcXHRcXG4xNTY4OlxcdFxcdHByX2RlYnVnKFxcXCIlcyBpbml0aWFsaXplZFxcXFxuXFxcIiwgZHJpdmVyLm5hbWUpO1xcbjE1Njk6XFx0XFx0cmV0dXJuIDA7XFxuMTU3MDpcXHR9XFxuMTU3MTpcXHRcXG4xNTcyOlxcdHN0YXRpYyB2b2lkIF9fZXhpdCB1c2JfZXhpdCh2b2lkKVxcbjE1NzM6XFx0e1xcbjE1NzQ6XFx0XFx0cHJfZGVidWcoXFxcIiVzIHVzYl9leGl0KClcXFxcblxcXCIsIGRyaXZlci5uYW1lKTtcXG4xNTc1OlxcdFxcdHVzYl9kZXJlZ2lzdGVyKFxcdTAwMjZkcml2ZXIpO1xcbjE1NzY6XFx0XFx0ZGVzdHJveV93b3JrcXVldWUoemRfd29ya3F1ZXVlKTtcXG4xNTc3OlxcdH1cXG4xNTc4OlxcdFxcbjE1Nzk6XFx0bW9kdWxlX2luaXQodXNiX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo0Mi42NTY3ODU4NzRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMzE0MDc5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKk5hdmlnYXRpbmcgdGhlIERyaXZlciBJbml0aWFsaXphdGlvbioqXG5cblJpZ2h0LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgZHJpdmVyIGNvZGUuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluaXRpYWxpemVkIHdpdGggYHVzYl9yZWdpc3RlcihcdTAwMjZkcml2ZXIpYC4gVGhhdCdzIHN0YW5kYXJkIFVTQiBkcml2ZXIgc3R1ZmYuIE5vdywgSSdtIHRyeWluZyB0byB0cmFjZSB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUga2V5IGZ1bmN0aW9ucy4gT2theSwgc28gYHByb2JlYCBpcyBtYXJrZWQgYXMgYHN0YXRpY2Agd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIFRoYXQgbWFrZXMgaXQgaGFyZGVyIHRvIGp1bXAgdG8gZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBQZXJoYXBzIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgcHJvYmVgIGl0c2VsZiwgb3IgYHpkX21hY19hbGxvY19od2AsIG9yIGB6ZF91c2JfaW5pdF9od2A/IExldCBtZSBzZWUuIEFoLCB3YWl0IGEgbWludXRlLCBgemRfbWFjX2FsbG9jX2h3YCBpcyAqY2FsbGVkKiBmcm9tIGBwcm9iZWAuIFNvLCB0aGF0J3Mga2V5LiBJdCdzIGxpa2VseSBpbnZvbHZlZCB3aXRoIGFjdHVhbCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiwgYW5kIGlmIGl0J3MgY2FsbGVkIGZyb20gcHJvYmUsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIExldCdzIHNlZSBpZiBgemRfbWFjX2FsbG9jX2h3YCBpcyBzdGF0aWMgLSB0aGF0IHdvdWxkIG1ha2UgdGhpcyBoYXJkZXIgdG8gdGVzdCBvciBkZWJ1ZyBvdXRzaWRlIG9mIHRoZSBgcHJvYmVgIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjQ3LjQ3OTkyODlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkxMDU4NDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpkX21hY19hbGxvY19od1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmM9MTM0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgemRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMTM2NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYzoxMzY2OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYy0xMzY3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5oPTI4OD1zdGF0aWMgaW5saW5lIHU4ICp6ZF9tYWNfZ2V0X3Blcm1fYWRkcihzdHJ1Y3QgemRfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuaC0yOTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmg6Mjk1OnN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX21hY19hbGxvY19odyhzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmgtMjk2LXZvaWQgemRfbWFjX2NsZWFyKHN0cnVjdCB6ZF9tYWMgKm1hYyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMzQ5PXN0YXRpYyBpbnQgcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM4NzpcXHRodyA9IHpkX21hY19hbGxvY19odyhpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg4LVxcdGlmIChodyA9PSBOVUxMKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjQ5OjQ3LjU3MDk5MjQ0OFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODcwNDY3NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGEgZmlyc3QtcGVyc29uIGV4cGVydCBzdW1tYXJ5OlxuXG4qKklkZW50aWZ5aW5nIFBvdGVudGlhbCBGb2N1cyBTeW1ib2xzIGluIHRoZSBLZXJuZWwgTW9kdWxlKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMga2VybmVsIG1vZHVsZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGB6ZF9tYWNfYWxsb2NfaHdgIHNlZW1zIGxpa2UgYSBzb2xpZCBjYW5kaWRhdGUgZm9yIGEgZm9jdXMgc3ltYm9sLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyAqbm90KiBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldCBmb3Igc3ltYm9saWMgYW5hbHlzaXMuIFRoZSB3aG9sZSBwb2ludCBpcyB0byBmaW5kIHRoaW5ncyB0aGF0IHRoZSBsaW5rZXIgY2FuIHNlZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuIFRoYXQncyBnb29kLlxuXG5IbW0sIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgcXVpY2tseSBjaGVjayBgemRfdXNiX2luaXRfaHdgLiBJdCBoYXMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uLCBhbmQgdGhhdCBtaWdodCBhbHNvIGJlIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IHdlIGNvdWxkIHVzZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBwYXJ0aWN1bGFyIHBpZWNlIG9mIGNvZGUuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0J3MgdmlzaWJsZSwgYnV0IGl0J3Mgd29ydGggY2hlY2tpbmcgcmlnaHQgYXdheS4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo1MS40NDE0NjI3MjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODkxMTY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpkX3VzYl9pbml0X2h3XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYz0yNjk9aW50IHpkX29wX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfbWFjLmMtMjc2LVxcdGlmICghdXNiLVxcdTAwM2Vpbml0aWFsaXplZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX21hYy5jOjI3NzpcXHRcXHRyID0gemRfdXNiX2luaXRfaHcodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9tYWMuYy0yNzgtXFx0XFx0aWYgKHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaD0yMzU9dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzNi1cXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oLTIzOC12b2lkIHpkX3VzYl9jbGVhcihzdHJ1Y3QgemRfdXNiICp1c2IpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo0OTo1MS40OTUzNjAwODdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODUwOTU1OTQyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IGFuZCBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBJIHNlZSB0aGF0IGB6ZF91c2JfaW5pdF9od2AgYW5kIGB6ZF91c2JfaW5pdGAgYXJlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB3aGljaCBpcyBnb29kLiBCdXQgdGhlIGFjdHVhbCBtb2RpZmllZCBmdW5jdGlvbiBpcyBgcHJvYmVgLiBUaGUgcGF0Y2ggaXMgYWRkaW5nIGEgY2hlY2sgdG8gcmVqZWN0IHNlY29uZGFyeSBpbnRlcmZhY2VzIHdpdGhpbiBgcHJvYmVgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1bXAgdG8gYHpkX21hY19hbGxvY19od2Agc2luY2UgaXQncyBjYWxsZWQgcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLlxuXG5Ib2xkIG9uLCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZ1cnRoZXIuIFRoZSBjaGVjayBpdHNlbGYgaXMgdGhpczogYGlmIChpbnRmLVx1MDAzZWN1cl9hbHRzZXR0aW5nLVx1MDAzZWRlc2MuYkludGVyZmFjZU51bWJlciAhPSAwKSByZXR1cm4gLUVOT0RFVjtgLiBJZiB3ZSB3YW50IHRvIGZvY3VzIHNwZWNpZmljYWxseSBvbiAqdGVzdGluZyogdGhhdCBjaGVjaywgSSBjYW4ndCByZWFsbHkgcHJpb3JpdGl6ZSBhIGZ1bmN0aW9uIGNhbGxlZCAqYWZ0ZXIqIHRoZSBjaGVjaywgdW5sZXNzIGl0J3MgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gcGF0aCBpcyB0YWtlbi5cblxuTm93LCBgcHJvYmVgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBjb25zaWRlcmF0aW9uLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBpbnN0cnVjdGlvbnM6IGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIGFuZCBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBUaGF0IHN0YXRpYy1uZXNzIHRocm93cyBhIHdyZW5jaCBpbnRvIHRoZSB3b3Jrcy4gSXMgYHByb2JlYCBpbmxpbmVkPyBJdCdzIHVzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIGluIGBzdHJ1Y3QgdXNiX2RyaXZlcmAsIHNvIHRoZSBjb21waWxlciB3b24ndCBiZSBhYmxlIHRvIGlubGluZSBpdCwgYW5kIGl0IGRlZmluaXRlbHkgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIEhvd2V2ZXIsIHRoZSBuYW1lIGBwcm9iZWAgaXMgaW5jcmVkaWJseSBnZW5lcmljLiBUaGUgZnV6emVyIG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIG90aGVyIHNpbWlsYXJseSBuYW1lZCBmdW5jdGlvbnMgaWYgaXQgcmVsaWVzIG9uIG5hbWUgbWF0Y2hpbmcsIHdoaWNoIGlzIG5vdCBpZGVhbC5cblxuU28sIGhlcmUncyBteSByZXZpc2VkIHN0cmF0ZWd5LiBgemRfbWFjX2FsbG9jX2h3YCBpcyBub24tc3RhdGljLCBjYWxsZWQgKmZyb20qIGBwcm9iZWAsIGFuZCBpcyBzcGVjaWZpYyB0byB0aGlzIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYSBtdWNoIGJldHRlciBwcm94eSBmb3IgZnV6emluZyB0aGUgZXhlY3V0aW9uIHBhdGggSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIGlzIHRoZSBjb2RlICphZnRlciogdGhlIGludGVyZmFjZSBjaGVjayBwYXNzZXMuIEknbGwgdXNlIGl0IGFzIHRoZSBgRm9jdXNTeW1ib2xgLiBJdCdzIGEgdW5pcXVlIG5vbi1zdGF0aWMgZnVuY3Rpb24gY2FsbGVkIGZyb20gYHByb2JlYC4gSSBhbHNvIGtub3cgYHpkX3VzYl9pbml0YCBpcyBjYWxsZWQgZnJvbSBgcHJvYmVgLiBJIHNob3VsZCBwcm9iYWJseSBtYWtlIHN1cmUgaXQncyBjYWxsZWQgZnJvbSBwcm9iZSBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODA0LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjAwLjAwNDkyMTk2NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzY2MzkxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiemRfdXNiX2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVxcdCAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTI2Mj1zdGF0aWMgaW50IGVqZWN0X2luc3RhbGxlcihzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMxNzppbnQgemRfdXNiX2luaXRfaHcoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMTgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDowMC4wODE1NjU5MDRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NjMyNDg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBlbWJlZGRlZCBzeXN0ZW1zIGFuZCBkcml2ZXIgZGV2ZWxvcG1lbnQsIGZvY3VzaW5nIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBhbmQgY29udGV4dCBwcm92aWRlZC5cblxuKipBbmFseXppbmcgRHJpdmVyIEluaXRpYWxpemF0aW9uIGluIHRoZSBQcm9iZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHJ1biB0aHJvdWdoIHRoaXMgaW4gbXkgaGVhZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgdGhpcyBVU0IgZGV2aWNlIGRyaXZlciBpcyBpbml0aWFsaXplZC4gVGhlIHF1ZXN0aW9uIGF0IGhhbmQgaXMgd2hldGhlciB0aGUgYHpkX3VzYl9pbml0YCBmdW5jdGlvbiBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSB3aXRoaW4gdGhlIGBwcm9iZWAgZnVuY3Rpb24uIFRoaXMgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRyaXZlcidzIGluc3RhbnRpYXRpb24gc2VxdWVuY2UuIElmIGB6ZF91c2JfaW5pdGAgaXMgY2FsbGVkIGZyb20gYHByb2JlYCwgaXQgaW5kaWNhdGVzIGEgZGlyZWN0LCBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4gVGhhdCBpbXBsaWVzIGEgc3BlY2lmaWMgdGltaW5nIHJlbGF0aW9uc2hpcCwgYW5kIHdpbGwgcHJvYmFibHkgaW52b2x2ZSBzcGVjaWZpYyBoYXJkd2FyZSByZWdpc3RlciBzZXR0aW5ncyBpbiB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyBhbHNvIHRoYXQgaWYgdGhlIHByb2JlIGZ1bmN0aW9uIGZhaWxzIHRoZW4gYHpkX3VzYl9pbml0YCB3aWxsIG5vdCBiZSBjYWxsZWQuIEFsdGVybmF0aXZlbHksIGl0IG1pZ2h0IGJlIGNhbGxlZCBhc3luY2hyb25vdXNseSwgcGVyaGFwcyBsYXRlciBvbiBpbiBhIHdvcmtxdWV1ZSBvciBpbiBhIGRlZGljYXRlZCB0aHJlYWQgdHJpZ2dlcmVkIGJ5IHNvbWUgb3RoZXIgZXZlbnQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBncmFwaCB0byBiZSBjZXJ0YWluLiBLbm93aW5nIHRoaXMgaXMgdGhlIGZpcnN0IGNydWNpYWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UncyBzZXR1cCBhbmQgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgVVNCIHN0YWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTAyLCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NTA6MDMuNzM3ODk0MjM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU2MzE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF91c2JfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMTg2PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEyMDA6dm9pZCB6ZF91c2JfaW5pdChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyMDEtXFx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMjYyPXN0YXRpYyBpbnQgZWplY3RfaW5zdGFsbGVyKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzE3OmludCB6ZF91c2JfaW5pdF9odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMxOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjAzLjc5MjQ2MjU5N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzOTA1MzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqVHJhY2luZyB0aGUgRXhlY3V0aW9uIFBhdGgqKlxuXG5Pa2F5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZXhlY3V0aW9uIGZsb3cgdGhhdCBsZWFkcyB0byBgemRfdXNiX2luaXRgLiBUaGF0IGZ1bmN0aW9uIGlzIGNydWNpYWwsIGJ1dCB3aXRob3V0IGtub3dpbmcgd2hlcmUgaXQncyB0cmlnZ2VyZWQsIGl0cyBwdXJwb3NlIGlzIGdvaW5nIHRvIGJlIG9wYXF1ZS4gSSBuZWVkIHRvIGZpbmQgYWxsIHRoZSBwbGFjZXMgaW4gdGhlIGNvZGViYXNlIHdoZXJlIGB6ZF91c2JfaW5pdGAgaXMgaW52b2tlZC4gRnJvbSB0aGVyZSwgSSBjYW4gcmV2ZXJzZSBlbmdpbmVlciB0aGUgZmxvdyBhbmQgZmlndXJlIG91dCBpdHMgY29udGV4dC4gS25vd2luZyB0aGUgY2FsbCBzaXRlcyB3aWxsIGJlIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBiaWdnZXIgcGljdHVyZS4gTGV0J3Mgc3RhcnQgdGhlIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzMyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzBUMDc6NTA6MDcuMTM2MzcxNjA1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTgyMzY1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF91c2JfaW5pdFxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmM9MjI9dm9pZCB6ZF9jaGlwX2luaXQoc3RydWN0IHpkX2NoaXAgKmNoaXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF9jaGlwLmMtMjctXFx0bXV0ZXhfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX2NoaXAuYzoyODpcXHR6ZF91c2JfaW5pdChcXHUwMDI2Y2hpcC1cXHUwMDNldXNiLCBodywgaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfY2hpcC5jLTI5LVxcdHpkX3JmX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXJmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTExODY9c3RhdGljIGlubGluZSB2b2lkIGluaXRfdXNiX3R4KHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTIwMDp2b2lkIHpkX3VzYl9pbml0KHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTIwMS1cXHQgICAgICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5oPTIzMD1zdGF0aWMgaW5saW5lIHN0cnVjdCBpZWVlODAyMTFfaHcgKnpkX3VzYl90b19odyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmg6MjM1OnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuaC0yMzYtXFx0ICAgICAgICAgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDowNy4xOTIyMDM0OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAwNzc1NDcxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFp5REFTIFpEMTIxMS9aRDEyMTFCIFVTQi1XaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCB0aGlzIHBhdGNoIGlzIGNhbGxlZCBmcm9tIGB6ZF9jaGlwX2luaXRgLiBUaGUgY3JpdGljYWwgc3ltYm9sIGhlcmUgc2VlbXMgdG8gYmUgYHpkX21hY19hbGxvY19od2AuIEkgY2hlY2tlZCB3aGVyZSBpdCdzIGNhbGxlZCwgYW5kIGl0J3MgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHByb2JlYC4gU28sIGB6ZF9tYWNfYWxsb2NfaHdgIGlzIGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBmb2N1cyBzeW1ib2wuXG5cbk5vdywgbGV0J3MgdmVyaWZ5IHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIFRoZSBLY29uZmlnIGZpbGUgc3RhdGVzIHRoYXQgd2UgbmVlZCBgWkQxMjExUldgLCBgVVNCYCwgYW5kIGBNQUM4MDIxMWAuIGBVU0JgIGFuZCBgTUFDODAyMTFgIGFyZSBzdGFuZGFyZCBzdWJzeXN0ZW1zLCBidXQgd2Ugc2hvdWxkIGluY2x1ZGUgdGhlbSBhbnl3YXksIG9yIGp1c3QgYFpEMTIxMVJXYCwgYXMgcGVyIHRoZSBpbnN0cnVjdGlvbnMgdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgY29tcGlsZXMgc3RhdGljYWxseS4gVGhlIGluc3RydWN0aW9uIGFsc28gc2FpZCB0byBsaXN0IGFueSBwYXJlbnQgc3Vic3lzdGVtcywgc28sIGRlZmluaXRlbHkgaW5jbHVkZSBgTUFDODAyMTFgIGFuZCBgVVNCYC4gVGh1cywgb3VyIEVuYWJsZUNvbmZpZ3Mgc2hvdWxkIGJlIGBaRDEyMTFSV2AsIGBNQUM4MDIxMWAsIGFuZCBgVVNCYC5cblxuQWgsIHRoZSBwYXRjaCBpdHNlbGYuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZS4gSXQgcHJldmVudHMgbXVsdGlwbGUgaW50ZXJmYWNlcyBvbiB0aGUgc2FtZSBkZXZpY2UgZnJvbSBjb25mbGljdGluZyBkdWUgdG8gaGFyZGNvZGVkIGVuZHBvaW50cy4gVGhlIGNvZGUgcmVqZWN0cyBzZWNvbmRhcnkgaW50ZXJmYWNlcyAoYGJJbnRlcmZhY2VOdW1iZXIgIT0gMGApIGFuZCByZXR1cm5zIGAtRU5PREVWYC4gVGhpcyBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0IgZnV6emluZywgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgc28gaXQncyBXb3J0aEZ1enppbmcuXG5cbk15IGluaXRpYWwgRm9jdXNTeW1ib2xzOiBgemRfbWFjX2FsbG9jX2h3YC4gRW5hYmxlQ29uZmlnczogYFpEMTIxMVJXYCwgYE1BQzgwMjExYCwgYFVTQmAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayB0aGUgZm9jdXMgc3ltYm9sLiBTaG91bGQgd2UgY29uc2lkZXIgYHpkX3VzYl9pbml0X2h3YD8gTm8sIGJlY2F1c2UgYHpkX3VzYl9pbml0X2h3YCBpcyBjYWxsZWQgZnJvbSBgemRfb3Bfc3RhcnRgIGFuZCB0aGlzIGlzIGEgbWFjODAyMTEgY2FsbGJhY2suIFRoZSBidWcgbGllcyBpbiBgcHJvYmVgLCBzbywgZm9jdXNpbmcgb24gYHpkX21hY19hbGxvY19od2Agd2hpY2ggaXMgZGlyZWN0bHkgY2FsbGVkIGZyb20gYHByb2JlYCBzZWVtcyBvcHRpbWFsIGJlY2F1c2UgaXQncyB3aXRoaW4gdGhlIHJlbGV2YW50IGV4ZWN1dGlvbiBwYXRoLlxuXG5Ob3csIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBgemRfdXNiLmNgIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHByb2JlYCwganVzdCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDQzNiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMFQwNzo1MDoxNy4yNjk3NTM1OThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODgwNjczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6ZF8uKlxcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTYzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yMjQ9c3RhdGljIGludCBoYW5kbGVfdmVyc2lvbl9taXNtYXRjaChzdHJ1Y3QgemRfdXNiICp1c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjYte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjIyNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0yMjgtXFx0Y29uc3Qgc3RydWN0IGZpcm13YXJlICp1cl9mdyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0yNTc9c3RhdGljIGludCB1cGxvYWRfZmlybXdhcmUoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMjYxLVxcdHUxNiBiY2REZXZpY2U7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MjYyOlxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTI2My1cXHRjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKnViX2Z3ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTMyMD1NT0RVTEVfRklSTVdBUkUoRldfWkQxMjExX1BSRUZJWCBcXFwidXBoclxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzIzLSAqIG5vdCByZXF1aXJlIGZpcm13YXJlIHRvIGJlIGxvYWRlZC4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzozMjQ6aW50IHpkX3VzYl9yZWFkX2Z3KHN0cnVjdCB6ZF91c2IgKnVzYiwgemRfYWRkcl90IGFkZHIsIHU4ICpkYXRhLCB1MTYgbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTMyNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMzI2LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjMyNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0zMjgtXFx0dTggKmJ1ZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTM3Mj1zdGF0aWMgaW5saW5lIHZvaWQgaGFuZGxlX3JlZ3NfaW50KHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTM4My1cXHRpZiAoaW50X251bSA9PSAodTE2KUNSX0lOVEVSUlVQVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjM4NDpcXHRcXHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF9od19tYWMoemRfdXNiX3RvX2h3KHVyYi1cXHUwMDNlY29udGV4dCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTM4NS1cXHRcXHRzcGluX2xvY2soXFx1MDAyNm1hYy1cXHUwMDNlbG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz00MjQ9c3RhdGljIHZvaWQgaW50X3VyYl9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy00NzAtXFx0Y2FzZSBVU0JfSU5UX0lEX1JFVFJZX0ZBSUxFRDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo0NzE6XFx0XFx0emRfbWFjX3R4X2ZhaWxlZCh1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTQ3Mi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTUwMj1zdGF0aWMgaW5saW5lIGludCB1c2JfaW50X2VuYWJsZWQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNDppbnQgemRfdXNiX2VuYWJsZV9pbnQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTUxNS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTE2LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUxNzpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MTgtXFx0c3RydWN0IHpkX3VzYl9pbnRlcnJ1cHQgKmludHIgPSBcXHUwMDI2dXNiLVxcdTAwM2VpbnRyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTIwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjUyMTpcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcXFwiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01MjItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NDItXFx0aWYgKCFpbnRyLVxcdTAwM2VidWZmZXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1NDM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NDQtXFx0XFx0XFx0XFxcImNvdWxkbid0IGFsbG9jYXRlIHRyYW5zZmVyX2J1ZmZlclxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NTU1OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJzdWJtaXQgdXJiICVwXFxcXG5cXFwiLCBpbnRyLVxcdTAwM2V1cmIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU1Ni1cXHRyID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTctXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1NTg6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NTktXFx0XFx0XFx0IFxcXCJDb3VsZG4ndCBzdWJtaXQgdXJiLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjU3Nzp2b2lkIHpkX3VzYl9kaXNhYmxlX2ludChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy01NzktXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1ODA6XFx0c3RydWN0IHVzYl9kZXZpY2UgKnVkZXYgPSB6ZF91c2JfdG9fdXNiZGV2KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNTgxLVxcdHN0cnVjdCB6ZF91c2JfaW50ZXJydXB0ICppbnRyID0gXFx1MDAyNnVzYi1cXHUwMDNlaW50cjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTU5OC1cXHR1c2Jfa2lsbF91cmIodXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo1OTk6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInVyYiAlcCBraWxsZWRcXFxcblxcXCIsIHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjAwLVxcdHVzYl9mcmVlX3VyYih1cmIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9NjA1PXN0YXRpYyB2b2lkIGhhbmRsZV9yeF9wYWNrZXQoc3RydWN0IHpkX3VzYiAqdXNiLCBjb25zdCB1OCAqYnVmZmVyLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjEyLVxcdFxcdC8qIEl0J3Mgbm90IGEgY29tcGxldGUgcGFja2V0IGFueWhvdy4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2MTM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImludmFsaWQsIHNtYWxsIFJYIHBhY2tldCA6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTYxNC1cXHRcXHRcXHRcXHRcXHQgICBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjM3LVxcdFxcdFxcdFxcdHJldHVybjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2Mzg6XFx0XFx0XFx0emRfbWFjX3J4KHpkX3VzYl90b19odyh1c2IpLCBidWZmZXIrbCwgayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjM5LVxcdFxcdFxcdGlmIChpIFxcdTAwM2U9IDIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy02NDMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo2NDQ6XFx0XFx0emRfbWFjX3J4KHpkX3VzYl90b19odyh1c2IpLCBidWZmZXIsIGxlbmd0aCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtNjQ1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTcxMz1zdGF0aWMgc3RydWN0IHVyYiAqYWxsb2NfcnhfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03MTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjcxNTpcXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHpkX3VzYl90b191c2JkZXYodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03MTYtXFx0c3RydWN0IHVyYiAqdXJiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9NzM3PXN0YXRpYyB2b2lkIGZyZWVfcnhfdXJiKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3NDY6c3RhdGljIGludCBfX3pkX3VzYl9lbmFibGVfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc0Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy03NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6NzUyOlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc1My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTc5OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo3OTk6aW50IHpkX3VzYl9lbmFibGVfcngoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04MDQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cngtXFx1MDAzZXNldHVwX211dGV4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MDU6XFx0ciA9IF9femRfdXNiX2VuYWJsZV9yeCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwNi1cXHRtdXRleF91bmxvY2soXFx1MDAyNnJ4LVxcdTAwM2VzZXR1cF9tdXRleCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjgwODpcXHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4MTM6c3RhdGljIHZvaWQgX196ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODE0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTgzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NDA6dm9pZCB6ZF91c2JfZGlzYWJsZV9yeChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg0NC1cXHRtdXRleF9sb2NrKFxcdTAwMjZyeC1cXHUwMDNlc2V0dXBfbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg0NTpcXHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODQ2LVxcdG11dGV4X3VubG9jayhcXHUwMDI2cngtXFx1MDAzZXNldHVwX211dGV4KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo4NTI6c3RhdGljIHZvaWQgemRfdXNiX3Jlc2V0X3J4KHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtODY0LVxcdGlmIChkb19yZXNldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg2NTpcXHRcXHRfX3pkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODY2OlxcdFxcdF9femRfdXNiX2VuYWJsZV9yeCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg2Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04NzEtXFx0aWYgKGRvX3Jlc2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg3MjpcXHRcXHR6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg3My19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04ODAtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6ODgxOnZvaWQgemRfdXNiX2Rpc2FibGVfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTg4Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTctXFx0LyogVGhlIHN0b3BwZWQgc3RhdGUgaXMgaWdub3JlZCwgcmVseWluZyBvbiBpZWVlODAyMTFfd2FrZV9xdWV1ZXMoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjg5ODpcXHQgKiBpbiBhIHBvdGVudGlvbmFsbHkgZm9sbG93aW5nIHpkX3VzYl9lbmFibGVfdHgoKS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy04OTktXFx0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MDgtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6OTA5OnZvaWQgemRfdXNiX2VuYWJsZV90eChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxNi1cXHR0eC1cXHUwMDNlc3VibWl0dGVkX3VyYnMgPSAwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjkxNzpcXHRpZWVlODAyMTFfd2FrZV9xdWV1ZXMoemRfdXNiX3RvX2h3KHVzYikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkxOC1cXHR0eC1cXHUwMDNlc3RvcHBlZCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz05MjI9c3RhdGljIHZvaWQgdHhfZGVjX3N1Ym1pdHRlZF91cmJzKHN0cnVjdCB6ZF91c2IgKnVzYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTkyOS1cXHRpZiAodHgtXFx1MDAzZXN0b3BwZWQgXFx1MDAyNlxcdTAwMjYgdHgtXFx1MDAzZXN1Ym1pdHRlZF91cmJzIFxcdTAwM2M9IFpEX1VTQl9UWF9MT1cpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5MzA6XFx0XFx0aWVlZTgwMjExX3dha2VfcXVldWVzKHpkX3VzYl90b19odyh1c2IpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05MzEtXFx0XFx0dHgtXFx1MDAzZXN0b3BwZWQgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9OTM2PXN0YXRpYyB2b2lkIHR4X2luY19zdWJtaXR0ZWRfdXJicyhzdHJ1Y3QgemRfdXNiICp1c2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05NDMtXFx0aWYgKCF0eC1cXHUwMDNlc3RvcHBlZCBcXHUwMDI2XFx1MDAyNiB0eC1cXHUwMDNlc3VibWl0dGVkX3VyYnMgXFx1MDAzZSBaRF9VU0JfVFhfSElHSCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjk0NDpcXHRcXHRpZWVlODAyMTFfc3RvcF9xdWV1ZXMoemRfdXNiX3RvX2h3KHVzYikpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk0NS1cXHRcXHR0eC1cXHUwMDNlc3RvcHBlZCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz05NTc9c3RhdGljIHZvaWQgdHhfdXJiX2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTk3MC1cXHQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5NzE6XFx0dXNiID0gXFx1MDAyNnpkX2h3X21hYyhpbmZvLVxcdTAwM2VyYXRlX2RyaXZlcl9kYXRhWzBdKS1cXHUwMDNlY2hpcC51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtOTcyLVxcdHR4ID0gXFx1MDAyNnVzYi1cXHUwMDNldHg7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05OTAtXFx0c2tiX3VubGluayhza2IsIFxcdTAwMjZ1c2ItXFx1MDAzZXR4LnN1Ym1pdHRlZF9za2JzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzo5OTE6XFx0emRfbWFjX3R4X3RvX2Rldihza2IsIHVyYi1cXHUwMDNlc3RhdHVzKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy05OTItXFx0dXNiX2ZyZWVfdXJiKHVyYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDE2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwMTc6aW50IHpkX3VzYl90eChzdHJ1Y3QgemRfdXNiICp1c2IsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTAxOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDIwLVxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDIxOlxcdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwMjItXFx0c3RydWN0IHVyYiAqdXJiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA0NC1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNDU6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yIHN1Ym1pdCB1cmIgJXAgJWRcXFxcblxcXCIsIHVyYiwgcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA0Ni1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwNTg6c3RhdGljIGJvb2wgemRfdHhfdGltZW91dChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwODI6c3RhdGljIHZvaWQgemRfdHhfd2F0Y2hkb2dfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA4My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMDg5LVxcdFxcdGdvdG8gb3V0O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEwOTA6XFx0aWYgKCF6ZF90eF90aW1lb3V0KHVzYikpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEwOTMtXFx0LyogVFggaGFsdGVkLCB0cnkgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMDk0OlxcdGRldl93YXJuKHpkX3VzYl9kZXYodXNiKSwgXFxcIlRYLXN0YWxsIGRldGVjdGVkLCByZXNldHRpbmcgZGV2aWNlLi4uXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTEwNTp2b2lkIHpkX3R4X3dhdGNoZG9nX2VuYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEwNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTA5LVxcdGlmICghdHgtXFx1MDAzZXdhdGNoZG9nX2VuYWJsZWQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTEwOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMTEtXFx0XFx0cXVldWVfZGVsYXllZF93b3JrKHpkX3dvcmtxdWV1ZSwgXFx1MDAyNnR4LVxcdTAwM2V3YXRjaGRvZ193b3JrLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTExNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTE3OnZvaWQgemRfdHhfd2F0Y2hkb2dfZGlzYWJsZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTExOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTIxLVxcdGlmICh0eC1cXHUwMDNld2F0Y2hkb2dfZW5hYmxlZCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjI6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEyMy1cXHRcXHR0eC1cXHUwMDNld2F0Y2hkb2dfZW5hYmxlZCA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExMjg6c3RhdGljIHZvaWQgemRfcnhfaWRsZV90aW1lcl9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzEtXFx0XFx0Y29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB6ZF91c2IsIHJ4LmlkbGVfd29yay53b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTMyOlxcdHN0cnVjdCB6ZF9tYWMgKm1hYyA9IHpkX3VzYl90b19tYWModXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMTM3OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTExMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTEzOS1cXHQvKiAzMCBzZWNvbmRzIHNpbmNlIGxhc3QgcngsIHJlc2V0IHJ4ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0MDpcXHR6ZF91c2JfcmVzZXRfcngodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDM6c3RhdGljIHZvaWQgemRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXJfdGFza2xldChzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE0NC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE0NTpcXHRzdHJ1Y3QgemRfdXNiICp1c2IgPSBmcm9tX3Rhc2tsZXQodXNiLCB0LCByeC5yZXNldF90aW1lcl90YXNrbGV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNDc6XFx0emRfdXNiX3Jlc2V0X3J4X2lkbGVfdGltZXIodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTQ5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjExNTA6dm9pZCB6ZF91c2JfcmVzZXRfcnhfaWRsZV90aW1lcihzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xMTU3PXN0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3VzYl9pbnRlcnJ1cHQoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE2MS1cXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2aW50ci1cXHUwMDNlbG9jayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTE2MjpcXHRpbnRyLVxcdTAwM2VpbnRlcnZhbCA9IGludF91cmJfaW50ZXJ2YWwoemRfdXNiX3RvX3VzYmRldih1c2IpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMTYzLVxcdGluaXRfY29tcGxldGlvbihcXHUwMDI2aW50ci1cXHUwMDNlcmVhZF9yZWdzLmNvbXBsZXRpb24pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTE4Nj1zdGF0aWMgaW5saW5lIHZvaWQgaW5pdF91c2JfdHgoc3RydWN0IHpkX3VzYiAqdXNiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTE5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjAwOnZvaWQgemRfdXNiX2luaXQoc3RydWN0IHpkX3VzYiAqdXNiLCBzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjAxLVxcdCAgICAgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTIxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMjEyOnZvaWQgemRfdXNiX2NsZWFyKHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEyMzQ9c3RhdGljIGludCBzY25wcmludF9pZChzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiwgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEyNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTI0MzppbnQgemRfdXNiX3NjbnByaW50X2lkKHN0cnVjdCB6ZF91c2IgKnVzYiwgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMjQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTEyNjI9c3RhdGljIGludCBlamVjdF9pbnN0YWxsZXIoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMTc6aW50IHpkX3VzYl9pbml0X2h3KHN0cnVjdCB6ZF91c2IgKnVzYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzE5LVxcdGludCByO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjA6XFx0c3RydWN0IHpkX21hYyAqbWFjID0gemRfdXNiX3RvX21hYyh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTMyMjpcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLCBcXFwiXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMyNS1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMjY6XFx0XFx0ZGV2X2Vycih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMyNy1cXHRcXHQgICAgICAgXFxcImNvdWxkbid0IGxvYWQgZmlybXdhcmUuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzMwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzE6XFx0ciA9IHVzYl9yZXNldF9jb25maWd1cmF0aW9uKHpkX3VzYl90b191c2JkZXYodXNiKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzMi1cXHRpZiAocikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzMzM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzM0LVxcdFxcdFxcdFxcXCJjb3VsZG4ndCByZXNldCBjb25maWd1cmF0aW9uLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTMzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzM4OlxcdHIgPSB6ZF9tYWNfaW5pdF9odyhtYWMtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzM5LVxcdGlmIChyKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTM0MDpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTEzNDEtXFx0XFx0ICAgICAgICAgXFxcImNvdWxkbid0IGluaXRpYWxpemUgbWFjLiBFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTM0OT1zdGF0aWMgaW50IHByb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBjb25zdCBzdHJ1Y3QgdXNiX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjEzODc6XFx0aHcgPSB6ZF9tYWNfYWxsb2NfaHcoaW50Zik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM4OC1cXHRpZiAoaHcgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzkzOlxcdHVzYiA9IFxcdTAwMjZ6ZF9od19tYWMoaHcpLVxcdTAwM2VjaGlwLnVzYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xMzk0LVxcdHVzYi1cXHUwMDNlaXNfemQxMjExYiA9IChpZC1cXHUwMDNlZHJpdmVyX2luZm8gPT0gREVWSUNFX1pEMTIxMUIpICE9IDA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxMzk2OlxcdHIgPSB6ZF9tYWNfcHJlaW5pdF9odyhodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTM5Ny1cXHRpZiAocikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQxNS1cXHRpZiAoaHcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDE2OlxcdFxcdHpkX21hY19jbGVhcih6ZF9od19tYWMoaHcpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDE3LVxcdFxcdGllZWU4MDIxMV9mcmVlX2h3KGh3KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE0MjI9c3RhdGljIHZvaWQgZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDIzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDI0OlxcdHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gemRfaW50Zl90b19odyhpbnRmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDI1LVxcdHN0cnVjdCB6ZF9tYWMgKm1hYztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQzMzpcXHRtYWMgPSB6ZF9od19tYWMoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzQtXFx0dXNiID0gXFx1MDAyNm1hYy1cXHUwMDNlY2hpcC51c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDM2OlxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0MzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDQwLVxcdC8qIEp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGdvbmUgd3JvbmchICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ0MTpcXHR6ZF91c2JfZGlzYWJsZV90eCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NDI6XFx0emRfdXNiX2Rpc2FibGVfcngodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDQzOlxcdHpkX3VzYl9kaXNhYmxlX2ludCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NDQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NTI6XFx0emRfbWFjX2NsZWFyKG1hYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1My1cXHRpZWVlODAyMTFfZnJlZV9odyhodyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NTc6c3RhdGljIHZvaWQgemRfdXNiX3Jlc3VtZShzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ1OC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ1OTpcXHRzdHJ1Y3QgemRfbWFjICptYWMgPSB6ZF91c2JfdG9fbWFjKHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2MC1cXHRpbnQgcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDYxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0NjI6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY0OlxcdHIgPSB6ZF9vcF9zdGFydCh6ZF91c2JfdG9faHcodXNiKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ2NS1cXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDY2OlxcdFxcdGRldl93YXJuKHpkX3VzYl9kZXYodXNiKSwgXFxcIkRldmljZSByZXN1bWUgZmFpbGVkIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDY3LVxcdFxcdFxcdCBcXFwid2l0aCBlcnJvciBjb2RlICVkLiBSZXRyeWluZy4uLlxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDc0LVxcdGlmIChtYWMtXFx1MDAzZXR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfVU5TUEVDSUZJRUQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDc1OlxcdFxcdHIgPSB6ZF9yZXN0b3JlX3NldHRpbmdzKG1hYyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ3Ni1cXHRcXHRpZiAociBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDc3OlxcdFxcdFxcdGRldl9kYmcoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0NzgtXFx0XFx0XFx0XFx0XFxcImZhaWxlZCB0byByZXN0b3JlIHNldHRpbmdzLCAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0ODQ6c3RhdGljIHZvaWQgemRfdXNiX3N0b3Aoc3RydWN0IHpkX3VzYiAqdXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE0ODUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0ODY6XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcIlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTQ4Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDg4OlxcdHpkX29wX3N0b3AoemRfdXNiX3RvX2h3KHVzYiksIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDg5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE0OTA6XFx0emRfdXNiX2Rpc2FibGVfdHgodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNDkxOlxcdHpkX3VzYl9kaXNhYmxlX3J4KHVzYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTQ5MjpcXHR6ZF91c2JfZGlzYWJsZV9pbnQodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTQ5Nz1zdGF0aWMgaW50IHByZV9yZXNldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTUwNjpcXHRtYWMgPSB6ZF9od19tYWMoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1MDctXFx0dXNiID0gXFx1MDAyNm1hYy1cXHUwMDNlY2hpcC51c2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MTE6XFx0emRfdXNiX3N0b3AodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTEyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTUxNz1zdGF0aWMgaW50IHBvc3RfcmVzZXQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE1MjY6XFx0bWFjID0gemRfaHdfbWFjKGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTI3LVxcdHVzYiA9IFxcdTAwMjZtYWMtXFx1MDAzZWNoaXAudXNiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTUzMS1cXHRpZiAodXNiLVxcdTAwM2V3YXNfcnVubmluZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTMyOlxcdFxcdHpkX3VzYl9yZXN1bWUodXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTMzLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTU0OD1zdGF0aWMgaW50IF9faW5pdCB1c2JfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTU0OlxcdHpkX3dvcmtxdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKGRyaXZlci5uYW1lKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNTU1LVxcdGlmICh6ZF93b3JrcXVldWUgPT0gTlVMTCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM9MTU4MD1tb2R1bGVfZXhpdCh1c2JfZXhpdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTU4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNTgyOnN0YXRpYyBpbnQgemRfZXBfcmVnc19vdXRfbXNnKHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2LCB2b2lkICpkYXRhLCBpbnQgbGVuLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE1ODMtXFx0XFx0XFx0ICAgICAgaW50ICphY3R1YWxfbGVuZ3RoLCBpbnQgdGltZW91dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE2MzA9c3RhdGljIGJvb2wgY2hlY2tfcmVhZF9yZWdzKHN0cnVjdCB6ZF91c2IgKnVzYiwgc3RydWN0IHVzYl9yZXFfcmVhZF9yZWdzICpyZXEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjQxLVxcdGlmIChyci1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgc3RydWN0X3NpemUocmVncywgcmVncywgY291bnQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTY0MjpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2NDMtXFx0XFx0XFx0IFxcXCJlcnJvcjogYWN0dWFsIGxlbmd0aCAlZCBsZXNzIHRoYW4gZXhwZWN0ZWQgJXp1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY0OC1cXHRpZiAocnItXFx1MDAzZWxlbmd0aCBcXHUwMDNlIHNpemVvZihyci1cXHUwMDNlYnVmZmVyKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2NDk6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjUwLVxcdFxcdFxcdCBcXFwiZXJyb3I6IGFjdHVhbCBsZW5ndGggJWQgZXhjZWVkcyBidWZmZXIgc2l6ZSAlenVcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNjU3LVxcdFxcdGlmIChyZC1cXHUwMDNlYWRkciAhPSByZXEtXFx1MDAzZWFkZHJbaV0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNjU4OlxcdFxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY1OS1cXHRcXHRcXHRcXHQgXFxcInJkWyVkXSBhZGRyICUjMDZoeCBleHBlY3RlZCAlIzA2aHhcXFxcblxcXCIsIGksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYz0xNjY5PXN0YXRpYyBpbnQgZ2V0X3Jlc3VsdHMoc3RydWN0IHpkX3VzYiAqdXNiLCB1MTYgKnZhbHVlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE2ODgtXFx0aWYgKCFjaGVja19yZWFkX3JlZ3ModXNiLCByZXEsIGNvdW50KSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE2ODk6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yOiBpbnZhbGlkIHJlYWQgcmVnc1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTY5MC1cXHRcXHRnb3RvIGVycm9yX3VubG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcwNDppbnQgemRfdXNiX2lvcmVhZDE2dihzdHJ1Y3QgemRfdXNiICp1c2IsIHUxNiAqdmFsdWVzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MDUtXFx0ICAgICAgICAgICAgIGNvbnN0IHpkX2FkZHJfdCAqYWRkcmVzc2VzLCB1bnNpZ25lZCBpbnQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzEzLVxcdGlmIChjb3VudCBcXHUwMDNjIDEpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzE0OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJlcnJvcjogY291bnQgaXMgemVyb1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcxNS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MTctXFx0aWYgKGNvdW50IFxcdTAwM2UgVVNCX01BWF9JT1JFQUQxNl9DT1VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3MTg6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzE5LVxcdFxcdFxcdCBcXFwiZXJyb3I6IGNvdW50ICV1IGV4Y2VlZHMgcG9zc2libGUgbWF4ICV1XFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyMy1cXHRpZiAoIXVzYl9pbnRfZW5hYmxlZCh1c2IpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTcyNDpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3MjUtXFx0XFx0XFx0ICBcXFwiZXJyb3I6IHVzYiBpbnRlcnJ1cHQgbm90IGVuYWJsZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTcyOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzI5OlxcdFpEX0FTU0VSVChtdXRleF9pc19sb2NrZWQoXFx1MDAyNnpkX3VzYl90b19jaGlwKHVzYiktXFx1MDAzZW11dGV4KSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTczMC1cXHRCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB1c2JfcmVxX3JlYWRfcmVncykgKyBVU0JfTUFYX0lPUkVBRDE2X0NPVU5UICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDMtXFx0dHJ5X2NvdW50Kys7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0NDpcXHR1ZGV2ID0gemRfdXNiX3RvX3VzYmRldih1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDUtXFx0cHJlcGFyZV9yZWFkX3JlZ3NfaW50KHVzYiwgcmVxLCBjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0NjpcXHRyID0gemRfZXBfcmVnc19vdXRfbXNnKHVkZXYsIHJlcSwgcmVxX2xlbiwgXFx1MDAyNmFjdHVhbF9yZXFfbGVuLCA1MCAvKm1zKi8pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NDctXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzQ4OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTc0OTpcXHRcXHRcXHRcXFwiZXJyb3IgaW4gemRfZXBfcmVnc19vdXRfbXNnKCkuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1MC1cXHRcXHRnb3RvIGVycm9yO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1Mi1cXHRpZiAocmVxX2xlbiAhPSBhY3R1YWxfcmVxX2xlbikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NTM6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcImVycm9yIGluIHpkX2VwX3JlZ3Nfb3V0X21zZygpXFxcXG5cXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc1NC1cXHRcXHRcXHRcXFwiIHJlcV9sZW4gJWQgIT0gYWN0dWFsX3JlcV9sZW4gJWRcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzYzLVxcdFxcdGRpc2FibGVfcmVhZF9yZWdzX2ludCh1c2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE3NjQ6XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInJlYWQgdGltZWQgb3V0XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xNzY1LVxcdFxcdHIgPSAtRVRJTUVET1VUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc3MC1cXHRpZiAocmV0cnkgXFx1MDAyNlxcdTAwMjYgdHJ5X2NvdW50IFxcdTAwM2MgMjApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzcxOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksIFxcXCJyZWFkIHJldHJ5LCB0cmllcyBzbyBmYXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3NzItXFx0XFx0XFx0XFx0dHJ5X2NvdW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jPTE3Nzk9c3RhdGljIHZvaWQgaW93cml0ZTE2dl91cmJfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTc5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxNzkxOnN0YXRpYyBpbnQgemRfc3VibWl0X3dhaXRpbmdfdXJiKHN0cnVjdCB6ZF91c2IgKnVzYiwgYm9vbCBsYXN0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE3OTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgwNy1cXHRcXHR1c2JfdW5hbmNob3JfdXJiKHVyYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgwODpcXHRcXHRkZXZfZGJnX2YoemRfdXNiX2Rldih1c2IpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MDktXFx0XFx0XFx0XFxcImVycm9yIGluIHVzYl9zdWJtaXRfdXJiKCkuIEVycm9yIG51bWJlciAlZFxcXFxuXFxcIiwgcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODE4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4MTk6dm9pZCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19zdGFydChzdHJ1Y3QgemRfdXNiICp1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4MjU6XFx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2emRfdXNiX3RvX2NoaXAodXNiKS1cXHUwMDNlbXV0ZXgpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODMyOmludCB6ZF91c2JfaW93cml0ZTE2dl9hc3luY19lbmQoc3RydWN0IHpkX3VzYiAqdXNiLCB1bnNpZ25lZCBpbnQgdGltZW91dClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODMzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTgzNjpcXHRaRF9BU1NFUlQobXV0ZXhfaXNfbG9ja2VkKFxcdTAwMjZ6ZF91c2JfdG9fY2hpcCh1c2IpLVxcdTAwM2VtdXRleCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4MzctXFx0WkRfQVNTRVJUKHVzYi1cXHUwMDNlaW5fYXN5bmMpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTgzOS1cXHQvKiBTdWJtaXQgbGFzdCBpb3dyaXRlMTZ2IFVSQiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4NDA6XFx0ciA9IHpkX3N1Ym1pdF93YWl0aW5nX3VyYih1c2IsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NDEtXFx0aWYgKHIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODQyOlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmM6MTg0MzpcXHRcXHRcXHRcXFwiZXJyb3IgaW4gemRfc3VibWl0X3dhaXRpbmdfdXNiKCkuIFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODQ0LVxcdFxcdFxcdFxcXCJFcnJvciBudW1iZXIgJWRcXFxcblxcXCIsIHIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg1NS1cXHRcXHRpZiAodXNiLVxcdTAwM2VjbWRfZXJyb3IgPT0gLUVOT0VOVCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4NTY6XFx0XFx0XFx0ZGV2X2RiZ19mKHpkX3VzYl9kZXYodXNiKSwgXFxcInRpbWVkIG91dFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4NTctXFx0XFx0XFx0ciA9IC1FVElNRURPVVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4Njg6aW50IHpkX3VzYl9pb3dyaXRlMTZ2X2FzeW5jKHN0cnVjdCB6ZF91c2IgKnVzYiwgY29uc3Qgc3RydWN0IHpkX2lvcmVxMTYgKmlvcmVxcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODY5LVxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jOjE4Nzg6XFx0WkRfQVNTRVJUKG11dGV4X2lzX2xvY2tlZChcXHUwMDI2emRfdXNiX3RvX2NoaXAodXNiKS1cXHUwMDNlbXV0ZXgpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYy0xODc5LVxcdFpEX0FTU0VSVCh1c2ItXFx1MDAzZWluX2FzeW5jKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzL3pkMTIxMXJ3L3pkX3VzYi5jLTE4ODMtXFx0aWYgKGNvdW50IFxcdTAwM2UgVVNCX01BWF9JT1dSSVRFMTZfQ09VTlQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy96eWRhcy96ZDEyMTFydy96ZF91c2IuYzoxODg0OlxcdFxcdGRldl9kYmdfZih6ZF91c2JfZGV2KHVzYiksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMvemQxMjExcncvemRfdXNiLmMtMTg4NS1cXHRcXHRcXHRcXFwiZXJyb3I6IGNvdW50ICV1IGV4Y2VlZHMgcG9zc2libGUgbWF4ICV1XFxcXG5cXFwiLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjE3LjYwODU2NjU2M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg0MjA3MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFpEMTIxMVJXIFBhdGNoKipcblxuT2theSwgc28gYHpkX21hY19hbGxvY19od2AgbG9va3Mgc29saWQsIGl0IHNlZW1zIGxpa2Ugd2UgaGF2ZSBhIGdvb2QgZml4IGhlcmUuIEknbSBnb2luZyB0byBnbyBhaGVhZCBhbmQgb3V0cHV0IHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiwgbWFraW5nIHN1cmUgZXZlcnl0aGluZyBpcyBjbGVhciBmb3IgdGhlIG5leHQgc3RlcHMuXG5cbkJhc2VkIG9uIG15IGFuYWx5c2lzLCB0aGlzIHBhdGNoIHdhcnJhbnRzIGZ1enppbmcsIHNvIEknbSBzZXR0aW5nIGBXb3J0aEZ1enppbmdgIHRvIHRydWUuIFRoZSBjcml0aWNhbCBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgemRfbWFjX2FsbG9jX2h3YCwgc28gdGhhdCdzIGluIGBGb2N1c1N5bWJvbHNgLlxuXG5XZSdsbCBiZSBzdXJlIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9uczogYFpEMTIxMVJXYCwgYE1BQzgwMjExYCwgYW5kIGBVU0JgLiBUaGUgcmVhc29uaW5nIGhlcmUgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgY29uZmxpY3QgaXNzdWUgdGhhdCBhcm9zZSB3aXRoIHNlY29uZGFyeSBpbnRlcmZhY2VzIG9uIFpEMTIxMSBkZXZpY2VzLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNoZWNrIGluIHRoZSBwcm9iZSBmdW5jdGlvbiB0byBwcmV2ZW50IHRoZXNlIGNvbmZsaWN0cyBieSByZWplY3Rpbmcgc2Vjb25kYXJ5IGludGVyZmFjZXMuIFNpbmNlIGl0J3MgY2hhbmdpbmcgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiwgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaW50ZXJmYWNlIHByb2JpbmcsIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIFVTQiBmdXp6aW5nLiBXZSBjYW4gYW5kIHNob3VsZCB0cnkgdG8gZmluZCBhbnkgcmVncmVzc2lvbnMgd2l0aCB0aGVzZSBzZXR0aW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwMTAsIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMwVDA3OjUwOjIyLjk5Mjc3NjgxOVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNzQ2Nzk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWkQxMjExUldcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZF9tYWNfYWxsb2NfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcywgcHJldmVudGluZyBjb25mbGljdHMgYW5kIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLiBUaGlzIG1vZGlmaWVzIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgKGUuZy4sIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWkQxMjExUldcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJVU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ6ZF9tYWNfYWxsb2NfaHdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2hlY2sgaW4gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIHRvIHJlamVjdCBzZWNvbmRhcnkgaW50ZXJmYWNlcyBvbiBaRDEyMTEgZGV2aWNlcywgcHJldmVudGluZyBjb25mbGljdHMgYW5kIHJlY3Vyc2l2ZSBsb2NraW5nIHdhcm5pbmdzLiBUaGlzIG1vZGlmaWVzIHRoZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gbG9naWMgYW5kIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGZ1enppbmcgKGUuZy4sIGR1bW15X2hjZCkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[1] Phase: Succeeded StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 07:50:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 07:50:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2] Phase: Succeeded StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 07:50:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-30 07:50:33 +0000 UTC FinishedAt: 2026-07-30 07:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowcm2ft/series-workflowcm2ft-convert-artifact-1633279408/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-30 07:50:44 +0000 UTC FinishedAt: 2026-07-30 08:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-30 07:50:44 +0000 UTC FinishedAt: 2026-07-30 08:12:50 +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:*575a4432-317e-4df9-a47b-955fc783f433,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-workflowcm2ft/series-workflowcm2ft-convert-artifact-1633279408/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": "42e041e0-36ce-4dc8-9cb1-6ee2c6b16a54", "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-workflowcm2ft/series-workflowcm2ft-build-action-4057582262/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-30 07:50:44 +0000 UTC FinishedAt: 2026-07-30 08:12:40 +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:*575a4432-317e-4df9-a47b-955fc783f433,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-workflowcm2ft/series-workflowcm2ft-convert-artifact-1633279408/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": "42e041e0-36ce-4dc8-9cb1-6ee2c6b16a54", "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-workflowcm2ft/series-workflowcm2ft-build-action-4057582262/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-30 08:12:50 +0000 UTC FinishedAt: 2026-07-30 08:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-30 08:12:50 +0000 UTC FinishedAt: 2026-07-30 08:12:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-30 08:12:50 +0000 UTC FinishedAt: 2026-07-30 08:13:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-30 08:12:50 +0000 UTC FinishedAt: 2026-07-30 08:12:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowcm2ft/series-workflowcm2ft-convert-artifact-484735895/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-30 08:13:00 +0000 UTC FinishedAt: 2026-07-30 08:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-30 08:13:00 +0000 UTC FinishedAt: 2026-07-30 08:15:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42e041e0-36ce-4dc8-9cb1-6ee2c6b16a54,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-workflowcm2ft/series-workflowcm2ft-build-action-4057582262/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-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-30 08:15:16 +0000 UTC FinishedAt: 2026-07-30 08:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-30 08:15:16 +0000 UTC FinishedAt: 2026-07-30 08:15:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-30 08:15:16 +0000 UTC FinishedAt: 2026-07-30 08:34:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-30 08:15:16 +0000 UTC FinishedAt: 2026-07-30 08:34:00 +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:*575a4432-317e-4df9-a47b-955fc783f433,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-workflowcm2ft/series-workflowcm2ft-convert-artifact-484735895/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": "c0ee675f-668a-48b9-9977-18ae60beeaeb", "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-workflowcm2ft/series-workflowcm2ft-build-action-1825550811/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-30 08:15:16 +0000 UTC FinishedAt: 2026-07-30 08:33: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:*575a4432-317e-4df9-a47b-955fc783f433,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-workflowcm2ft/series-workflowcm2ft-convert-artifact-484735895/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": "c0ee675f-668a-48b9-9977-18ae60beeaeb", "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-workflowcm2ft/series-workflowcm2ft-build-action-1825550811/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-30 08:34:00 +0000 UTC FinishedAt: 2026-07-30 08:34:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-30 08:34:00 +0000 UTC FinishedAt: 2026-07-30 08:34:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-30 08:34:00 +0000 UTC FinishedAt: 2026-07-30 08:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-30 08:34:00 +0000 UTC FinishedAt: 2026-07-30 08:36:11 +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:*c0ee675f-668a-48b9-9977-18ae60beeaeb,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-workflowcm2ft/series-workflowcm2ft-build-action-1825550811/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-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +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":["zd_mac_alloc_hw"],"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:*42e041e0-36ce-4dc8-9cb1-6ee2c6b16a54,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0ee675f-668a-48b9-9977-18ae60beeaeb,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-workflowcm2ft/series-workflowcm2ft-build-action-4057582262/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-workflowcm2ft/series-workflowcm2ft-build-action-1825550811/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:36:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:36:39 +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":["zd_mac_alloc_hw"],"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-workflowcm2ft/series-workflowcm2ft-convert-artifact-3143577936/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-30 08:36:20 +0000 UTC FinishedAt: 2026-07-30 08:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-30 08:36:47 +0000 UTC FinishedAt: 2026-07-30 08:39:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcm2ft[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["zd_mac_alloc_hw"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZD1211RW","MAC80211","USB"],"series_id":"9b94bd4a-bcde-4e2d-80ff-1f2f332416a6","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-30 08:36:47 +0000 UTC FinishedAt: 2026-07-30 08:38:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*42e041e0-36ce-4dc8-9cb1-6ee2c6b16a54,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0ee675f-668a-48b9-9977-18ae60beeaeb,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-workflowcm2ft/series-workflowcm2ft-build-action-4057582262/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-workflowcm2ft/series-workflowcm2ft-build-action-1825550811/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-workflowcm2ft/series-workflowcm2ft-convert-artifact-3143577936/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}