Name: series-workflowfz7q6 Phase: Succeeded StartedAt: 2026-06-27 00:36:57 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[0] Phase: Succeeded StartedAt: 2026-06-27 00:36:57 +0000 UTC FinishedAt: 2026-06-27 00:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 00:36:57 +0000 UTC FinishedAt: 2026-06-27 00:54:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NGBE", "NGBEVF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NGBE", "NGBEVF" ], "series_id": "cb8b24f5-4d4e-4835-a46a-548414af15de" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "wx_set_vmdq_queues", "wx_write_qde", "wx_get_vf_queues" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05HQkUmIzM0OywKICAgICYjMzQ7TkdCRVZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssCiAgICAmIzM0O3d4X3dyaXRlX3FkZSYjMzQ7LAogICAgJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc2YzI5MjM2MWIwOTJiZWJmN2RjNWQxZmM4MjM1ZTc4ZWFhNWQ3MzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMDo0NjoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggZDA0MjU2N2I4MTI4NGIuLjgxNGQ4OGQyYWVlNDg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuQEAgLTE4MDIsNiAmIzQzOzE4MDIsNyBAQCBzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0XHRyc3NfaSA9IDQ7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4mIzQzO1x0XHR2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7XG4gXHRcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXG4gXHRcdHZtZHFfaSA9IG1pbl90KHUxNiwgOCwgdm1kcV9pKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCBjN2JlZmU0Y2RmZTkwOC4uNjVlM2U1NWRiMWNmZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbkBAIC00ODYsNiAmIzQzOzQ4Niw3IEBAIGVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xuIFxuICNkZWZpbmUgV1hfVk1EUV80UV9NQVNLICAgICAgICAgICAgICAweDdDXG4gI2RlZmluZSBXWF9WTURRXzJRX01BU0sgICAgICAgICAgICAgIDB4N0VcbiYjNDM7I2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcbiBcbiAvKioqKioqKioqKioqKioqKioqIE1hbmFnZWFibGlsaXR5IEhvc3QgSW50ZXJmYWNlIGRlZmluZXMgKioqKioqKioqKioqKioqKioqKiovXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOR0JFJiMzNDssCiAgICAmIzM0O05HQkVWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDt3eF93cml0ZV9xZGUmIzM0OywKICAgICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc2YzI5MjM2MWIwOTJiZWJmN2RjNWQxZmM4MjM1ZTc4ZWFhNWQ3MzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyNyAwMDo0NjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IGQwNDI1NjdiODEyODRiLi44MTRkODhkMmFlZTQ4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgc3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpCiAJCQlyc3NfaSA9IDQ7CiAJCX0KIAl9IGVsc2UgewomIzQzOwkJdm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLOwogCQkvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqLwogCQl2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKaW5kZXggYzdiZWZlNGNkZmU5MDguLjY1ZTNlNTVkYjFjZmZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaApAQCAtNDg2LDYgJiM0Mzs0ODYsNyBAQCBlbnVtIFdYX01TQ0FfQ01EX3ZhbHVlIHsKIAogI2RlZmluZSBXWF9WTURRXzRRX01BU0sgICAgICAgICAgICAgIDB4N0MKICNkZWZpbmUgV1hfVk1EUV8yUV9NQVNLICAgICAgICAgICAgICAweDdFCiYjNDM7I2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0YKIAogLyoqKioqKioqKioqKioqKioqKiBNYW5hZ2VhYmxpbGl0eSBIb3N0IEludGVyZmFjZSBkZWZpbmVzICoqKioqKioqKioqKioqKioqKioqLwogI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXYW5neHVuIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgbWFraW5nIGEgY2hhbmdlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYHZtZHFfbSA9IFdYX1ZNRFFfMVFfTUFTSztgIHdpdGhpbiBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXYW5neHVuLi4ucmlnaHQsIHRoYXQmIzM5O3MgYSBoYXJkd2FyZSBldGhlcm5ldCBkcml2ZXIuIEVtdWxhdGlvbj8gUHJvYmFibHkgbm90IHN0cmFpZ2h0Zm9yd2FyZCB1bmxlc3MgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBBbmQsIHRoZSBmdW4gYmVnaW5zLCBjYW4gaXQgYmUgZnV6emVkIHZpYSBQQ0kgZnV6emluZywgbGlrZSBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmc/CgpBaCwgcmlnaHQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZy4gR29vZC4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgdHlwaWNhbCBnb3RjaGEsIGhhcmR3YXJlIGRyaXZlcnMgYXJlbiYjMzk7dCB1c3VhbGx5IGVhc3kgdGFyZ2V0cyBmb3IgZnV6emluZyB1bmxlc3MgdGhleSYjMzk7cmUgVVNCIG9yIGhhdmUgc3BlY2lmaWMgZnV6emluZyBzdXBwb3J0LiBTdGlsbCwgU3l6a2FsbGVyIGRvZXMgb2ZmZXIgUENJIGZ1enppbmcuIFNvLCBsZXQmIzM5O3Mgbm90IGRpc21pc3MgdGhpcyBvdXQgb2YgaGFuZC4KClRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIGRldGVybWluZSBpZiBgd3hfc2V0X3ZtZHFfcXVldWVzYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKi4gTGV0JiMzOTtzIHJ1biBhIGBncmVwYCBmb3IgdGhhdCBmdW5jdGlvbiBuYW1lIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYW5hbHl6ZSB0aGUgY2FsbCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzI9RVhQT1JUX1NZTUJPTCh3eF9uYXBpX2Rpc2FibGVfYWxsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc3NDpzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xODc4PXN0YXRpYyB2b2lkIHd4X3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODg1Olx0aWYgKHd4X3NldF92bWRxX3F1ZXVlcyh3eCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4ODYtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBgd3hfc2V0X251bV9xdWV1ZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgd3hfc2V0X251bV9xdWV1ZXNgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBmdW5jdGlvbj8gSXMgaXQgYWJvdXQgbWFuYWdpbmcgaGFyZHdhcmUgcXVldWVzLCBzb2Z0d2FyZSBxdWV1ZXMsIG9yIGJvdGg/IFdoYXQmIzM5O3MgdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXQgaW50ZXJhY3RzIHdpdGg/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIG9mdGVuPwoKSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLiBXaGF0IGtpbmQgb2YgYXJndW1lbnQgZG9lcyBpdCB0YWtlIC0gbnVtYmVyIG9mIHF1ZXVlcywgcXVldWUgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZXMsIHNvbWV0aGluZyBlbHNlPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgd2hhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgKnJhbmdlKiBvZiB0aGVzZSB2YWx1ZXM/IEtub3dpbmcgdGhlIHZhbGlkIGlucHV0IHJhbmdlIGlzIGNyaXRpY2FsIGluIGVzdGFibGlzaGluZyB3aGF0IHRoZSBjb2RlIGlzIGV4cGVjdGluZywgYW5kIHdoZXJlIGl0IG1heSBlcnJvci4KCk5vdyBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBleGVjdXRpb24gZmxvdy4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHR5cGljYWwgcGF0dGVybnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZD8gQXJlIHRoZXJlIGFueSBsb2NrcyBpbnZvbHZlZD8gQW55IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzPyBEb2VzIGl0IG1ha2UgYW55IGNhbGxzIGludG8gbG93ZXIgbGF5ZXJzLCBwZXJoYXBzIHRoZSBuZXR3b3JrIHN0YWNrLCBvciBzb21lIGhhcmR3YXJlIGludGVyZmFjZT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjb250ZW50aW9uLCBlc3BlY2lhbGx5IGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCByZXNvdXJjZS4KCk5leHQsIGV4Y2VwdGlvbiBoYW5kbGluZyBpcyBrZXkuIElmIHRoZSBzeXN0ZW0gaXMgdW5hYmxlIHRvIGZ1bGZpbCB0aGUgcmVxdWVzdCwgYXJlIHRoZXJlIGFueSBlcnJvciBjb2RlcyB0aGF0IHdvdWxkIGJlIHJldHVybmVkPyBXaGF0JiMzOTtzIHRoZSBiZWhhdmlvciBpbiBkaWZmZXJlbnQgZXJyb3IgY29uZGl0aW9ucywgaXMgdGhlcmUgYSBzeXN0ZW0gcmVzZXQ/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBlcnJub2Agb3Igc2ltaWxhciBtZWNoYW5pc21zLgoKVGhlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBhcmUgaW1wb3J0YW50LCB0b28uIERvZXMgdGhpcyBmdW5jdGlvbiBwb3RlbnRpYWxseSBpbnZvbHZlIHJlY29uZmlndXJpbmcgb3IgcmUtYWxsb2NhdGluZyByZXNvdXJjZXM/IElzIGl0IGEgcXVpY2sgb3BlcmF0aW9uIG9yIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJsb2NrPyBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBsb2NraW5nIGJlaGF2aW9yIHRoYXQgY291bGQgaGF2ZSBhIG5lZ2F0aXZlIGVmZmVjdC4KCkkgd2lsbCBhbHNvIHF1aWNrbHkgY29uc2lkZXIgYW55IGV4dGVybmFsIGZhY3RvcnMgdGhhdCBtYXkgaW1wYWN0IGl0LiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucz8gVGhpcyBmdW5jdGlvbiBtaWdodCBhY3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLgoKRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaXRzIG92ZXJhbGwgcHVycG9zZS4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIHNvZnR3YXJlIG1vZHVsZSBvciBjb21wb25lbnQgdGhhdCBpdCBiZWxvbmdzIHRvPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgY29udGV4dCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlIGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF9zZXRfbnVtX3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4NDI9c3RhdGljIHZvaWQgd3hfc2V0X3Jzc19xdWV1ZXMoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4Nzg6c3RhdGljIHZvaWQgd3hfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xOTY0PXN0YXRpYyBpbnQgd3hfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxOTgyOlx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTgzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxNj1pbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzI0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjMyNTpcdFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzI2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLiBJbnRlcnJ1cHRzIGFyZSB0aGUgbGlmZWJsb29kIG9mIHJlYWwtdGltZSBzeXN0ZW1zLCBhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGludGVycnVwdCBzY2hlbWUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwbGF0Zm9ybSBoYW5kbGVzIGV2ZW50cyBhbmQgY29uY3VycmVuY3kuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbnMsIHBlcmhhcHMgZGVhbGluZyB3aXRoIGludGVycnVwdCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24sIHZlY3RvciB0YWJsZSBzZXR1cCwgYW5kIHRoZSBlbmFibGluZyBvZiBzcGVjaWZpYyBpbnRlcnJ1cHQgc291cmNlcy4gSSYjMzk7bGwgYmUgd2F0Y2hpbmcgZm9yIGhvdyB0aGlzIHNjaGVtZSBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHd4V2lkZ2V0cyBmcmFtZXdvcmssIHNpbmNlIHByZXN1bWFibHkgdGhpcyBpcyB0eWluZyBpbnRvIHRoZSBHVUkgZXZlbnQgbG9vcC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLCB0aGUgaW1wb3J0YW5jZSBvZiBhdG9taWMgb3BlcmF0aW9ucyBoZXJlOyBhbnkgaW5pdGlhbGl6YXRpb24gaW52b2x2aW5nIHNoYXJlZCByZXNvdXJjZXMgbXVzdCBiZSBjYXJlZnVsbHkgY29uc3RydWN0ZWQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MsIGFuZCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X2luaXRfaW50ZXJydXB0X3NjaGVtZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIzMTQ9RVhQT1JUX1NZTUJPTCh3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjMxNjppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzNDk6RVhQT1JUX1NZTUJPTCh3eF9pbml0X2ludGVycnVwdF9zY2hlbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmg9MTg9dm9pZCB3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaDoxOTppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaC0yMC1pcnFyZXR1cm5fdCB3eF9tc2l4X2NsZWFuX3JpbmdzKGludCBfX2Fsd2F5c191bnVzZWQgaXJxLCB2b2lkICpkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTMzPWludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTM4LVx0cGNpX3NldF9tYXN0ZXIocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jOjM5Olx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtNDAtXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHd4LVx1MDAzZW5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTU4Mz1pbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjYwMTpcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02Mzg9c3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODAxOlx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04MDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz04Nzk9c3RhdGljIGludCBuZ2JlX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk3LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODk4Olx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04OTktXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyhuZXRkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMtMjA0LVx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoyMDU6XHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTU2Nz1pbnQgdHhnYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNTg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NTg3Olx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02ODE9c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy04MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo4MTk6XHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtODIwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTkzPXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjY5LVx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jOjI3MDpcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjcxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzYxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUENJIERldmljZSBGdXp6aW5nIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjYWxscyDigJMgc3BlY2lmaWNhbGx5IHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIGBuZ2JlYCwgYG5nYmV2ZmAsIGB0eGdiZWAsIGFuZCBgdHhnYmV2ZmAuIFRoZXNlIGFyZSBhbGwgUENJIGRldmljZXMsIGFuZCBteSBndXQgY2hlY2sgdGVsbHMgbWUgdGhhdCBTeXprYWxsZXIgc3VwcG9ydHMgUENJIGZ1enppbmcuIE5vdywgaXMgUENJIGZ1enppbmcgc29tZXRoaW5nIFN5emthbGxlciBkb2VzIGJ5IGRlZmF1bHQ/IExldCBtZSBqdXN0IHRoaW5rLi4uIHllcywgdGhlcmUmIzM5O3MgYHN5el9wY2lfZGV2aWNlX2FkZGAsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IGluIHRoZSBtaXguIFRoZSBrZXkgaXMsIGFyZSB0aGUgYE5HQkVgIGFuZCBgVFhHQkVgIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IG9yIEkgbWlnaHQgaGF2ZSB0byBlbmFibGUgdGhlbSBleHBsaWNpdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkdCRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI4OmNvbmZpZyBOR0JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjg1OmNvbmZpZyBOR0JFVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04Ni1cdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQ3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQW5vdGhlciBQZXJzcGVjdGl2ZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgYmVlbiBkZWVwIGRpdmluZyBpbnRvIGBbdG9waWMvc3BlY2lmaWMgYXJlYSBmcm9tIHRoZSB0ZXh0XWAsIGFuZCBJJiMzOTttIGZlZWxpbmcgcHJldHR5IGNvbmZpZGVudCBhYm91dCB0aGUgY3VycmVudCBhbmFseXNpcy4gSG93ZXZlciwgaXQgYWx3YXlzIHBheXMgdG8gYmUgdGhvcm91Z2gsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBraW5kIG9mIGRhdGEvc3lzdGVtLiBCZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBpdCBvY2N1cnMgdG8gbWUgdGhhdCB3ZSBzaG91bGQgbG9vcCBiYWNrIGFuZCB0YWtlIGEgbG9vayBhdCBgVFhHQkVgIGFzIHdlbGwuIEV2ZW4gaWYgaXQgc2VlbXMgbGVzcyBkaXJlY3RseSByZWxldmFudCBvbiB0aGUgc3VyZmFjZSwgaXRzIGluY2x1c2lvbiBvciBsYWNrIHRoZXJlb2YgY291bGQgaGF2ZSBzdWJ0bGUsIHlldCBjcml0aWNhbCwgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBDaGVja2luZyBgVFhHQkVgIHdpbGwgaGVscCBtZSBlbnN1cmUgdGhhdCBJJiMzOTt2ZSBjb25zaWRlcmVkIGFsbCByZWxhdGVkIGZhY3RvcnMuIFRoaXMgZG91YmxlLWNoZWNrIGlzIHdvcnRoIHRoZSB0aW1lLCBhbmQgbWlnaHQgaGVscCBtZSBhdm9pZCBwb3RlbnRpYWxseSBvdmVybG9va2luZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFhHQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjQzOmNvbmZpZyBUWEdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBOR0JFYCwgYE5HQkVWRmAsIGBUWEdCRWAsIGFuZCBgVFhHQkVWRmAuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG1vZGlmeWluZyBgd3hfc2V0X3ZtZHFfcXVldWVzYCB3aXRoaW4gdGhlIGBsaWJ3eGAgbGlicmFyeS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgpUaGUga2V5IHF1ZXN0aW9uIGlzOiBDYW4gd2UgdHJpZ2dlciB0aGlzIGNvZGUgdGhyb3VnaCBQQ0kgZnV6emluZz8gQWhhLCB5ZXMhIFBDSSBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgdGVsbHMgdXMgdGhlcmUmIzM5O3MgYW4gZW50cnkgcG9pbnQgdG8gdGhlIGFmZmVjdGVkIGNvZGUuCgpOb3cgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgdm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO2Agd2l0aGluIGFuIGBlbHNlYCBicmFuY2guIFRoaXMgc3VnZ2VzdHMgYSBjb25kaXRpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBWaXJ0dWFsIE1hY2hpbmUgRGV2aWNlIFF1ZXVlIChWTURRKSBpcyBjb25maWd1cmVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoYXQgYGVsc2VgIHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBMZXQgbWUgcHVsbCB1cCBgd3hfc2V0X3ZtZHFfcXVldWVzYCBhbmQgc2VlIHdoYXQgaXQgaXMgcmVhbGx5IGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzc0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NzQ6XHRzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbjE3NzU6XHR7XG4xNzc2Olx0XHR1MTYgdm1kcV9pID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcbjE3Nzc6XHRcdHUxNiByc3NfaSA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbjE3Nzg6XHRcdHUxNiByc3NfbSA9IFdYX1JTU19ESVNBQkxFRF9NQVNLO1xuMTc3OTpcdFx0dTE2IHZtZHFfbSA9IDA7XG4xNzgwOlx0XG4xNzgxOlx0XHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXG4xNzgyOlx0XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG4xNzgzOlx0XHRcdHJldHVybiBmYWxzZTtcbjE3ODQ6XHRcdC8qIEFkZCBzdGFydGluZyBvZmZzZXQgdG8gdG90YWwgcG9vbCBjb3VudCAqL1xuMTc4NTpcdFx0dm1kcV9pICYjNDM7PSB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbjE3ODY6XHRcbjE3ODc6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuMTc4ODpcdFx0XHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xuMTc4OTpcdFx0XHR2bWRxX2kgPSBtaW5fdCh1MTYsIDY0LCB2bWRxX2kpO1xuMTc5MDpcdFxuMTc5MTpcdFx0XHQvKiA2NCBwb29sIG1vZGUgd2l0aCAyIHF1ZXVlcyBwZXIgcG9vbCwgb3JcbjE3OTI6XHRcdFx0ICogMTYvMzIvNjQgcG9vbCBtb2RlIHdpdGggMSBxdWV1ZSBwZXIgcG9vbFxuMTc5MzpcdFx0XHQgKi9cbjE3OTQ6XHRcdFx0aWYgKHZtZHFfaSBcdTAwM2UgMzIgfHwgcnNzX2kgXHUwMDNjIDQpIHtcbjE3OTU6XHRcdFx0XHR2bWRxX20gPSBXWF9WTURRXzJRX01BU0s7XG4xNzk2Olx0XHRcdFx0cnNzX20gPSBXWF9SU1NfMlFfTUFTSztcbjE3OTc6XHRcdFx0XHRyc3NfaSA9IG1pbl90KHUxNiwgcnNzX2ksIDIpO1xuMTc5ODpcdFx0XHQvKiAzMiBwb29sIG1vZGUgd2l0aCA0IHF1ZXVlcyBwZXIgcG9vbCAqL1xuMTc5OTpcdFx0XHR9IGVsc2Uge1xuMTgwMDpcdFx0XHRcdHZtZHFfbSA9IFdYX1ZNRFFfNFFfTUFTSztcbjE4MDE6XHRcdFx0XHRyc3NfbSA9IFdYX1JTU180UV9NQVNLO1xuMTgwMjpcdFx0XHRcdHJzc19pID0gNDtcbjE4MDM6XHRcdFx0fVxuMTgwNDpcdFx0fSBlbHNlIHtcbjE4MDU6XHRcdFx0dm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO1xuMTgwNjpcdFx0XHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xuMTgwNzpcdFx0XHR2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7XG4xODA4Olx0XG4xODA5Olx0XHRcdC8qIHdoZW4gVk1EUSBvbiwgZGlzYWJsZSBSU1MgKi9cbjE4MTA6XHRcdFx0cnNzX2kgPSAxO1xuMTgxMTpcdFx0fVxuMTgxMjpcdFxuMTgxMzpcdFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuMTgxNDpcdFx0dm1kcV9pIC09IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xuMTgxNTpcdFxuMTgxNjpcdFx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXG4xODE3Olx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG4xODE4Olx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG4xODE5Olx0XG4xODIwOlx0XHQvKiBsaW1pdCBSU1MgYmFzZWQgb24gdXNlciBpbnB1dCBhbmQgc2F2ZSBmb3IgbGF0ZXIgdXNlICovXG4xODIxOlx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10uaW5kaWNlcyA9IHJzc19pO1xuMTgyMjpcdFx0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLm1hc2sgPSByc3NfbTtcbjE4MjM6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYGVsc2VgIGJyYW5jaCwgc2V0dGluZyBgdm1kcV9tYCB0byBgV1hfVk1EUV8xUV9NQVNLYC4gUHJldmlvdXNseSwgaXQgd2FzIHplcm8sIGFuZCBub3cgaXQmIzM5O3MgMHg3Ri4gVGhpcyB2YWx1ZSBpcyB0aGVuIHdyaXR0ZW4gaW50byBgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGhhcmR3YXJlIGRyaXZlciBjaGFuZ2UuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgUENJIGRldmljZSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhhdCwgcmlnaHQ/IFllcywgaXQmIzM5O3MgUENJLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHN5emthbGxlci1mcmllbmRseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlncyBhcmUgZW5hYmxlZCDigJMgbGV0IG1lIHNlZSwgaXQgbG9va3MgbGlrZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGFyZSB0aGUgcmVsZXZhbnQgb25lcy4KCkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4gSXMgYFdYX0ZMQUdfVk1EUV9FTkFCTEVEYCBhY3R1YWxseSBldmVyIHNldD8gVGhhdCB3b3VsZCBtYWtlIGEgZGlmZmVyZW5jZS4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIHRoYXQgZmxhZyBpcyBiZWluZyBzZXQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXWF9GTEFHX1ZNRFFfRU5BQkxFRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTM2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNTM3Olx0XHRpZiAodGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE1MzgtXHRcdFx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5pbmRpY2VzID09IDQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTE2MTA9c3RhdGljIHZvaWQgd3hfdmxhbl9wcm9taXNjX2VuYWJsZShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE0LVx0dmxuY3RybCA9IHJkMzIod3gsIFdYX1BTUl9WTEFOX0NUTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTYxNTpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTYxNi1cdFx0Lyogd2UgbmVlZCB0byBrZWVwIHRoZSBWTEFOIGZpbHRlciBvbiBpbiBTUklPViAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjg3PXZvaWQgd3hfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTcxOS1cdFx0dm1vbHIgfD0gV1hfUFNSX1ZNX0wyQ1RMX01QRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNzIwOlx0XHRpZiAodGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNzIxLVx0XHQgICAgdGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4MS1cdC8qIG9ubHkgcHJvY2VlZCBpZiBWTURxIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4MjpcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4My1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTk2ND1zdGF0aWMgaW50IHd4X3NldF9pbnRlcnJ1cHRfY2FwYWJpbGl0eShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk3NS1cdGRldl93YXJuKFx1MDAyNnd4LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtEaXNhYmxpbmcgVk1RUSBzdXBwb3J0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTk3NjpcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTEtXHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02OS1cdGlmICh3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID09IDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NzA6XHRcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NzM9c3RhdGljIGludCBfX3d4X2VuYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4LCB1OCBudW1fdmZzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NC1cdC8qIEVuYWJsZSBWTURxIGZsYWcgc28gZGV2aWNlIHdpbGwgYmUgc2V0IGluIFZNIG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NTpcdHNldF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04Ni1cdGlmICghd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMjU3PWVudW0gd3hfcGZfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXHRXWF9GTEFHX1NXRldfUklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjEyNjA6XHRXWF9GTEFHX1ZNRFFfRU5BQkxFRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNjEtXHRXWF9GTEFHX1ZMQU5fUFJPTUlTQyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMDkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTUklPViBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGlzIGNsZWFybHkgcmVsYXRlZCB0byBgX193eF9lbmFibGVfc3Jpb3ZgLiBSaWdodCwgdGhlIGZhY3QgdGhhdCB3ZSYjMzk7cmUgaGVyZSBpbXBsaWVzIHRoYXQgU1JJT1YgKnNob3VsZCogYmUgZW5hYmxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgaWYgdGhhdCYjMzk7cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhZmZhaXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIFNSSU9WIGlzIGFjdHVhbGx5IHR1cm5lZCBvbi4gV2hlcmUgaXMgdGhpcyBjYWxsIGNvbWluZyBmcm9tPyBBaCwgSSBzZWUsIGBfX3d4X2VuYWJsZV9zcmlvdmAgaXMgaW52b2tlZCBmcm9tIGB3eF9wY2lfc3Jpb3ZfY29uZmlndXJlYC4gVGhhdCBnaXZlcyBtZSBhIGJpdCBtb3JlIGNvbnRleHQuIE5vdywgd2hhdCYjMzk7cyBgd3hfcGNpX3NyaW92X2NvbmZpZ3VyZWAgYWN0dWFsbHkgZG9pbmc/IEkgbmVlZCB0byB0cmFjayB0aGlzIGRvd24gdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fd3hfZW5hYmxlX3NyaW92JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz00OT1zdGF0aWMgdm9pZCB3eF9zcmlvdl9jbGVhcl9kYXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjczOnN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy03NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE0OT1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjE2MTpcdGVyciA9IF9fd3hfZW5hYmxlX3NyaW92KHd4LCBudW1fdmZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNjItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU2MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUklPViBDb25maWd1cmF0aW9uIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIGB3eF9wY2lfc3Jpb3ZfZW5hYmxlYCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpdHNlbGYgaXMgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgYXMgYC5zcmlvdl9jb25maWd1cmVgLiBUaGF0JiMzOTtzIGltcG9ydGFudCwgYW5kIHRoZSBmYWN0IHRoYXQgU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIFNSSU9WIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgc3lzZnMgYHNyaW92X251bXZmc2AgZmlsZSBtZWFucyB0aGlzIGVudGlyZSBmbG93IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBrZWVwIGluIG1pbmQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LiBJdCBzZWVtcyBpdCYjMzk7cyBvbmx5IHNldCB3aXRoaW4gYF9fd3hfZW5hYmxlX3NyaW92YC4gU28sIHdoZW4gU1JJT1YgaXMgZW5hYmxlZCwgdGhhdCBmbGFnICpzaG91bGQqIGJlIHNldC4gSWYgdGhhdCBmbGFnIGlzIHNldCwgdGhlbiBgd3hfc2V0X3ZtZHFfcXVldWVzYCBpcyBjYWxsZWQuLi4gYnV0IHdhaXQsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGl0c2VsZiBjYWxsZWQgZnJvbSBgd3hfc2V0X251bV9xdWV1ZXNgLCB3aGljaCBpcyBwYXJ0IG9mIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLgoKVGhpcyBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgc2V2ZXJhbCBrZXkgZXZlbnRzOiBwcm9iZSwgcmVzdW1lLCBhbmQsIGNydWNpYWxseSwgYHNldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgYmVjYXVzZSB0aGVzZSBhcmUgY29tbW9uIG9wZXJhdGlvbnMuIEJ1dCBkb2VzIGVuYWJsaW5nIFNSSU9WIGFuZCBzZXR0aW5nIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYWN0dWFsbHkgKnRyaWdnZXIqIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgPyBUaGF04oCZcyB0aGUgY3JpdGljYWwgbGluay4gTGV0JiMzOTtzIGRpZyBiYWNrIGludG8gYF9fd3hfZW5hYmxlX3NyaW92YCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEl0IHNlZW1zIHRoZSBrZXkgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYW5kIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzM6XHRzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXG4gIDc0Olx0e1xuICA3NTpcdFx0aW50IGksIHJldCA9IDA7XG4gIDc2Olx0XHR1MzIgdmFsdWUgPSAwO1xuICA3NzpcdFxuICA3ODpcdFx0c2V0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbiAgNzk6XHRcdGRldl9pbmZvKFx1MDAyNnd4LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtTUi1JT1YgZW5hYmxlZCB3aXRoICVkIFZGc1xcblwmIzM0OywgbnVtX3Zmcyk7XG4gIDgwOlx0XG4gIDgxOlx0XHRpZiAobnVtX3ZmcyA9PSA3IFx1MDAyNlx1MDAyNiB3eC1cdTAwM2VtYWMudHlwZSA9PSB3eF9tYWNfZW0pXG4gIDgyOlx0XHRcdHNldF9iaXQoV1hfRkxBR19JUlFfVkVDVE9SX1NIQVJFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuICA4MzpcdFxuICA4NDpcdFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xuICA4NTpcdFx0c2V0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuICA4NjpcdFx0aWYgKCF3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxuICA4NzpcdFx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID0gMTtcbiAgODg6XHRcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gbnVtX3ZmcztcbiAgODk6XHRcbiAgOTA6XHRcdHd4LVx1MDAzZXZmaW5mbyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlLCBudW1fdmZzKTtcbiAgOTE6XHRcdGlmICghd3gtXHUwMDNldmZpbmZvKVxuICA5MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgOTM6XHRcbiAgOTQ6XHRcdHJldCA9IHd4X2FsbG9jX3ZmX21hY3ZsYW5zKHd4LCBudW1fdmZzKTtcbiAgOTU6XHRcdGlmIChyZXQpXG4gIDk2Olx0XHRcdHJldHVybiByZXQ7XG4gIDk3Olx0XG4gIDk4Olx0XHQvKiBJbml0aWFsaXplIGRlZmF1bHQgc3dpdGNoaW5nIG1vZGUgVkVCICovXG4gIDk5Olx0XHR3cjMybSh3eCwgV1hfUFNSX0NUTCwgV1hfUFNSX0NUTF9TV19FTiwgV1hfUFNSX0NUTF9TV19FTik7XG4gMTAwOlx0XG4gMTAxOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmZzOyBpJiM0MzsmIzQzOykge1xuIDEwMjpcdFx0XHQvKiBlbmFibGUgc3Bvb2YgY2hlY2tpbmcgZm9yIGFsbCBWRnMgKi9cbiAxMDM6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnNwb29mY2hrX2VuYWJsZWQgPSB0cnVlO1xuIDEwNDpcdFx0XHR3eC1cdTAwM2V2ZmluZm9baV0ubGlua19lbmFibGUgPSB0cnVlO1xuIDEwNTpcdFx0XHQvKiB1bnRydXN0IGFsbCBWRnMgKi9cbiAxMDY6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiAxMDc6XHRcdFx0Lyogc2V0IHRoZSBkZWZhdWx0IHhjYXN0IG1vZGUgKi9cbiAxMDg6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnhjYXN0X21vZGUgPSBXWFZGX1hDQVNUX01PREVfTk9ORTtcbiAxMDk6XHRcdH1cbiAxMTA6XHRcbiAxMTE6XHRcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbiAxMTI6XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzg7XG4gMTEzOlx0XHR9IGVsc2Uge1xuIDExNDpcdFx0XHRpZiAobnVtX3ZmcyBcdTAwM2MgMzIpXG4gMTE1Olx0XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzMyO1xuIDExNjpcdFx0XHRlbHNlXG4gMTE3Olx0XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzY0O1xuIDExODpcdFx0fVxuIDExOTpcdFx0d3IzMm0od3gsIFdYX0NGR19QT1JUX0NUTCxcbiAxMjA6XHRcdCAgICAgIFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfTUFTSyxcbiAxMjE6XHRcdCAgICAgIHZhbHVlKTtcbiAxMjI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNzYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlNSLUlPViBJbnRlcnJ1cHQgSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKioKCkhtbSwgc28gYHd4X3BjaV9zcmlvdl9lbmFibGVgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiBTUi1JT1YgZW5hYmxpbmcgZm9yIGEgc3BlY2lmaWMgUENJIGRldmljZSwgaW4gdGhpcyBjb250ZXh0LiBBbmQgaXQmIzM5O3MgY2FsbGluZyBgX193eF9lbmFibGVfc3Jpb3ZgLiBPa2F5LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBoZWxwZXIuIE5vdywgdGhlIGtleSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYF9fd3hfZW5hYmxlX3NyaW92YCAqcmUtaW5pdGlhbGl6ZXMqIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGZvciB0aGUgZGV2aWNlLiBJcyBpdCBqdXN0IGVuYWJsaW5nIHRoZSBTUi1JT1YgZnVuY3Rpb25hbGl0eSwgb3IgaXMgaXQgYWxzbyBwb3RlbnRpYWxseSBzdGVwcGluZyBvbiB0aGUgZXhpc3RpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24/IERvZXMgaXQgcG90ZW50aWFsbHkgcmUtcHJvZ3JhbSB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGludGVycnVwdCBhZmZpbml0eSwgaW50ZXJydXB0IGNvYWxlc2NpbmcsIE1TSSBzZXR0aW5ncywgb3IgTVNJLVggc2V0dGluZ3M/IFRoYXQmIzM5O3MgYSBjcnVjaWFsIGNvbnNpZGVyYXRpb24uIElmIGl0IGRvZXMgcmUtaW5pdGlhbGl6ZSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBhbnkgZXhpc3RpbmcgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gV2hhdCBoYXBwZW5zIGlmIFNSLUlPViBpcyBlbmFibGVkLCB0aGVuIGRpc2FibGVkLCB0aGVuIHJlLWVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgaXNzdWVzIHRoZXJlIHdpdGggaW50ZXJydXB0IHN0YXRlIHByZXNlcnZhdGlvbiBvciByZXN0b3JhdGlvbj8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgX193eF9lbmFibGVfc3Jpb3ZgIHRvIHNlZSBleGFjdGx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHdpdGggdGhlIGludGVycnVwdCBjb250cm9sbGVyIGFuZCBpbnRlcnJ1cHQgdmVjdG9ycy4gVGhpcyByZS1pbml0aWFsaXphdGlvbiBwb3NzaWJpbGl0eSBjb3VsZCBiZSBhIG1ham9yIGdvdGNoYSBpZiBoYW5kbGVkIGluY29ycmVjdGx5LiBMZXQgbWUgYW5hbHl6ZSB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0OTpcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqZGV2LFxuIDE1MDpcdFx0XHRcdCAgICAgICBpbnQgbnVtX3ZmcylcbiAxNTE6XHR7XG4gMTUyOlx0XHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKGRldik7XG4gMTUzOlx0XHRpbnQgZXJyID0gMCwgaTtcbiAxNTQ6XHRcbiAxNTU6XHRcdGlmIChuZXRpZl9pc19yeGZoX2NvbmZpZ3VyZWQod3gtXHUwMDNlbmV0ZGV2KSkge1xuIDE1NjpcdFx0XHR3eF9lcnIod3gsIFwmIzM0O0Nhbm5vdCBlbmFibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcblwmIzM0Oyk7XG4gMTU3Olx0XHRcdHd4X2Vycih3eCwgXCYjMzQ7UnVuICYjMzk7ZXRodG9vbCAtWCBcdTAwM2NpZlx1MDAzZSBkZWZhdWx0JiMzOTsgdG8gcmVzZXQgUlNTIHRhYmxlXFxuXCYjMzQ7KTtcbiAxNTg6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdGVyciA9IF9fd3hfZW5hYmxlX3NyaW92KHd4LCBudW1fdmZzKTtcbiAxNjI6XHRcdGlmIChlcnIpXG4gMTYzOlx0XHRcdHJldHVybiBlcnI7XG4gMTY0Olx0XG4gMTY1Olx0XHR3eC1cdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcbiAxNjY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV92ZnM7IGkmIzQzOyYjNDM7KVxuIDE2NzpcdFx0XHR3eF92Zl9jb25maWd1cmF0aW9uKGRldiwgKGkgfCBXWF9WRl9FTkFCTEUpKTtcbiAxNjg6XHRcbiAxNjk6XHRcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xuIDE3MDpcdFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcbiAxNzE6XHRcbiAxNzI6XHRcdGVyciA9IHBjaV9lbmFibGVfc3Jpb3YoZGV2LCBudW1fdmZzKTtcbiAxNzM6XHRcdGlmIChlcnIpIHtcbiAxNzQ6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIFBDSSBzcmlvdjogJWRcXG5cJiMzNDssIGVycik7XG4gMTc1Olx0XHRcdGdvdG8gZXJyX291dDtcbiAxNzY6XHRcdH1cbiAxNzc6XHRcbiAxNzg6XHRcdHJldHVybiBudW1fdmZzO1xuIDE3OTpcdGVycl9vdXQ6XG4gMTgwOlx0XHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcbiAxODE6XHRcdHJldHVybiBlcnI7XG4gMTgyOlx0fVxuIDE4MzpcdFxuIDE4NDpcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKmRldilcbiAxODU6XHR7XG4gMTg2Olx0XHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKGRldik7XG4gMTg3Olx0XG4gMTg4Olx0XHRpZiAobmV0aWZfaXNfcnhmaF9jb25maWd1cmVkKHd4LVx1MDAzZW5ldGRldikpIHtcbiAxODk6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtDYW5ub3QgZGlzYWJsZSBTUi1JT1Ygd2hpbGUgUlhGSCBpcyBjb25maWd1cmVkXFxuXCYjMzQ7KTtcbiAxOTA6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtSdW4gJiMzOTtldGh0b29sIC1YIFx1MDAzY2lmXHUwMDNlIGRlZmF1bHQmIzM5OyB0byByZXNldCBSU1MgdGFibGVcXG5cJiMzNDspO1xuIDE5MTpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuIDE5MjpcdFx0fVxuIDE5MzpcdFxuIDE5NDpcdFx0d3hfZGlzYWJsZV9zcmlvdih3eCk7XG4gMTk1Olx0XHR3eF9zcmlvdl9yZWluaXQod3gpO1xuIDE5NjpcdFxuIDE5NzpcdFx0cmV0dXJuIDA7XG4gMTk4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM3MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHd4X3NyaW92X3JlaW5pdCoqCgpPa2F5LCBzbyBgd3hfc3Jpb3ZfcmVpbml0YCBoYXMgYmVlbiBjYWxsZWQuIFRoYXQmIzM5O3MgbXkgY3VlIHRvIHJlYWxseSBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoaXMgcm91dGluZS4gTGV0IG1lIHN0YXJ0IGJ5IHRyYWNpbmcgaXRzIGV4ZWN1dGlvbiBwYXRoLCBkaXNzZWN0aW5nIGVhY2ggbGluZSBvZiBjb2RlLCBhbmQgZXhhbWluaW5nIGFueSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBpdCBpbnRlcmFjdHMgd2l0aC4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgY29udGV4dHMgaW4gd2hpY2ggaXQmIzM5O3MgaW52b2tlZCDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG9yIGVycm9yIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhpcyByZWluaXRpYWxpemF0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgcmUtaW5pdD8gRG9lcyBpdCBwb3RlbnRpYWxseSBjYXVzZSBhbnkgc2VydmljZSBpbnRlcnJ1cHRpb25zPyBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIHByaW9yIGJ1ZyByZXBvcnRzIHRvIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGEgc291cmNlIG9mIHByb2JsZW1zIGluIHRoZSBwYXN0IG9yIG1heSBiZSBhIHNvdXJjZSBvZiBmdXR1cmUgcHJvYmxlbXMuIEluIHRoZSBlbmQsIEkgbmVlZCBhIHJvY2stc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NyaW92X3JlaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NzM9c3RhdGljIGludCBfX3d4X2VuYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4LCB1OCBudW1fdmZzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6MTMwOnN0YXRpYyB2b2lkIHd4X3NyaW92X3JlaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTEzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE0OT1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTY5LVx0LyogcmVzZXQgYmVmb3JlIGVuYWJsaW5nIFNSSU9WIHRvIGF2b2lkIG1haWxib3ggaXNzdWVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6MTcwOlx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE4ND1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9kaXNhYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTE5NC1cdHd4X2Rpc2FibGVfc3Jpb3Yod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjE5NTpcdHd4X3NyaW92X3JlaW5pdCh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA4NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYHd4X3NyaW92X3JlaW5pdGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGlzIGB3eF9zcmlvdl9yZWluaXRgIGZ1bmN0aW9uLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHdoYXQgSSBleHBlY3QgdG8gc2VlIOKAkyBsaWtlbHkgc29tZSBjbGVhbnVwLCByZWNvbmZpZ3VyYXRpb24sIGFuZCBtYXliZSByZXNvdXJjZSByZXNldHRpbmcgcmVsYXRlZCB0byBTaW5nbGUgUm9vdCBJL08gVmlydHVhbGl6YXRpb24gKFNSLUlPVikgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgV1ggKHByZXN1bWFibHksIFdpbmRvd3MgZVh0ZW5zaWJsZSkgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc2VxdWVuY2luZyBvZiBvcGVyYXRpb25zIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyAoVkZzKSwgYW5kIHRoZSBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGlzIGNydWNpYWwgaGVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IHNoYXJlZCBzdGF0ZS4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgYSBjbGFzc2ljIHByb2JsZW0gd2hlbiByZWluaXRpYWxpemluZyBzdWNoIGEgY29tcGxleCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBlYXN5IHRvIGZvbGxvdy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgYSBzcGFnaGV0dGkgbWVzcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdHN0YXRpYyB2b2lkIHd4X3NyaW92X3JlaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuIDEzMTpcdHtcbiAxMzI6XHRcdHJ0bmxfbG9jaygpO1xuIDEzMzpcdFx0d3gtXHUwMDNlc2V0dXBfdGMod3gtXHUwMDNlbmV0ZGV2LCBuZXRkZXZfZ2V0X251bV90Yyh3eC1cdTAwM2VuZXRkZXYpKTtcbiAxMzQ6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gMTM1Olx0fVxuIDEzNjpcdFxuIDEzNzpcdHZvaWQgd3hfZGlzYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4KVxuIDEzODpcdHtcbiAxMzk6XHRcdGlmICghcGNpX3Zmc19hc3NpZ25lZCh3eC1cdTAwM2VwZGV2KSlcbiAxNDA6XHRcdFx0cGNpX2Rpc2FibGVfc3Jpb3Yod3gtXHUwMDNlcGRldik7XG4gMTQxOlx0XHRlbHNlXG4gMTQyOlx0XHRcdHd4X2Vycih3eCwgXCYjMzQ7VW5sb2FkaW5nIGRyaXZlciB3aGlsZSBWRnMgYXJlIGFzc2lnbmVkLlxcblwmIzM0Oyk7XG4gMTQzOlx0XG4gMTQ0Olx0XHQvKiBjbGVhciBmbGFncyBhbmQgZnJlZSBhbGxsb2NlZCBkYXRhICovXG4gMTQ1Olx0XHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcbiAxNDY6XHR9XG4gMTQ3Olx0RVhQT1JUX1NZTUJPTCh3eF9kaXNhYmxlX3NyaW92KTtcbiAxNDg6XHRcbiAxNDk6XHRzdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3MTYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVHJhbnNtaXNzaW9uIENvbnRyb2wgU2V0dXAqKgoKT2theSwgc28gSSBzZWUgYSBjYWxsIHRvIGB3eC0mZ3Q7c2V0dXBfdGNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCBmb3IgaW52ZXN0aWdhdGlvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgbGlrZWx5IGludm9sdmVzIGNvbmZpZ3VyaW5nIHRoZSB0cmFuc21pc3Npb24gY29udHJvbCBhc3BlY3RzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGxvb2sgYXQgYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgZmlyc3QuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXR1cF90Y2AgYmVjYXVzZSBvZiBob3cgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGlzIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJiMzOTtkIGV4cGVjdCB0aGVzZSB0byBiZSB0aGUgcG9pbnRzIG9mIGVudHJ5IGFuZCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aG9zZSBmaWxlcyBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF90YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQwMSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTMwMT1uZG9fY2hhbmdlX3J4X2ZsYWdzOlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zMDQtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6MzA1Om5kb19zZXR1cF90YzpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zMDYtXHRMb2NraW5nIGRlcGVuZHMgb24gYGB0Y19zZXR1cF90eXBlYGAuIEZvciBtb3N0IHR5cGVzIHRoZSBjYWxsYmFja1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTEwMD1oYXJkd2FyZSBvZmZsb2FkIGZlYXR1cmUgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdXNpbmcgdGhlIHRjLWV0ZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTAxOmNvbW1hbmQgdG8gY2FsbCB0aGUgZHJpdmVyJiMzOTtzIG5kb19zZXR1cF90YygpIGNhbGxiYWNrLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTAyLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTExNT10aW1lIGhhcmR3YXJlIG9mZmxvYWQgZmVhdHVyZSBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSB1c2luZyB0aGVcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjExNjp0Yy1ldGYgY29tbWFuZCB0byBjYWxsIHRoZSBkcml2ZXImIzM5O3MgbmRvX3NldHVwX3RjKCkgY2FsbGJhY2suIFdoZW4gZW50ZXJpbmdcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTExNy1UU04gbW9kZSwgdGhlIGlnYyBkcml2ZXIgd2lsbCByZXNldCB0aGUgZGV2aWNlIGFuZCBjcmVhdGUgYSBkZWZhdWx0IFFidlxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYz0xMDk9RVhQT1JUX1NZTUJPTCh0Y21faXRjbV9wcmVzZW50KTtcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xMTAtXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTExOnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9iYW5rKHU4IHR5cGUsIHU4IGJhbmssIHU4IGJhbmtzLFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTExMi1cdFx0XHRcdCAgdTMyICpvZmZzZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4NS0gKiB1bmRlZmluZWQgZXJyb3Igd2hlbiByZWFkaW5nIHRoZSBUQ00gcmVnaW9uIHJlZ2lzdGVyIGluIHRoZVxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjE4NjogKiBzZXR1cF90Y21fYmFuayBmdW5jdGlvbiAoYWJvdmUpLlxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4Ny0gKlxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYz0yNTY9dm9pZCBfX2luaXQgdGNtX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzAyLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkdGNtX2JhbmtzOyBpJiM0MzsmIzQzOykge1xuYXJjaC9hcm0va2VybmVsL3RjbS5jOjMwMzpcdFx0XHRyZXQgPSBzZXR1cF90Y21fYmFuaygwLCBpLCBkdGNtX2JhbmtzLCBcdTAwMjZkdGNtX2VuZCk7XG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzA0LVx0XHRcdGlmIChyZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTM0MC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaXRjbV9iYW5rczsgaSYjNDM7JiM0MzspIHtcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozNDE6XHRcdFx0cmV0ID0gc2V0dXBfdGNtX2JhbmsoMSwgaSwgaXRjbV9iYW5rcywgXHUwMDI2aXRjbV9lbmQpO1xuYXJjaC9hcm0va2VybmVsL3RjbS5jLTM0Mi1cdFx0XHRpZiAocmV0KVxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zODMtICovXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6Mzg0OnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9wb29sKHZvaWQpXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzg1LXtcbi0tXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtNDM0LVxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjQzNTpjb3JlX2luaXRjYWxsKHNldHVwX3RjbV9wb29sKTtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz03Nz1zdHJ1Y3QgaW14X2dwdF9kYXRhIHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy04MC1cdGludCByZWdfdGNtcDtcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjgxOlx0dm9pZCAoKmdwdF9zZXR1cF90Y3RsKShzdHJ1Y3QgaW14X3RpbWVyICppbXh0bSk7XG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy04Mi1cdHZvaWQgKCpncHRfaXJxX2VuYWJsZSkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTI3MT1zdGF0aWMgaW50IF9faW5pdCBteGNfY2xvY2tldmVudF9pbml0KHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTI5MC1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjI5MTpzdGF0aWMgdm9pZCBpbXgxX2dwdF9zZXR1cF90Y3RsKHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMjkyLXtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0yOTgtXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzoyOTk6c3RhdGljIHZvaWQgaW14MzFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMDAte1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjMxMjpzdGF0aWMgdm9pZCBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMTMte1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTMyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgxX2dwdF9kYXRhID0ge1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNS1cdC5ncHRfaXJxX2Fja25vd2xlZGdlID0gaW14MV9ncHRfaXJxX2Fja25vd2xlZGdlLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MzM2Olx0LmdwdF9zZXR1cF90Y3RsID0gaW14MV9ncHRfc2V0dXBfdGN0bCxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNy1cdC5zZXRfbmV4dF9ldmVudCA9IG14MV8yX3NldF9uZXh0X2V2ZW50LFxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgyMV9ncHRfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNDYtXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDIxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozNDc6XHQuZ3B0X3NldHVwX3RjdGwgPSBpbXgxX2dwdF9zZXR1cF90Y3RsLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzQ4LVx0LnNldF9uZXh0X2V2ZW50ID0gbXgxXzJfc2V0X25leHRfZXZlbnQsXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14X2dwdF9kYXRhIGlteDMxX2dwdF9kYXRhID0ge1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1Ny1cdC5ncHRfaXJxX2Fja25vd2xlZGdlID0gaW14MzFfZ3B0X2lycV9hY2tub3dsZWRnZSxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM1ODpcdC5ncHRfc2V0dXBfdGN0bCA9IGlteDMxX2dwdF9zZXR1cF90Y3RsLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzU5LVx0LnNldF9uZXh0X2V2ZW50ID0gdjJfc2V0X25leHRfZXZlbnQsXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14X2dwdF9kYXRhIGlteDZkbF9ncHRfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNjgtXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDMxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozNjk6XHQuZ3B0X3NldHVwX3RjdGwgPSBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNzAtXHQuc2V0X25leHRfZXZlbnQgPSB2Ml9zZXRfbmV4dF9ldmVudCxcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zNzM9c3RhdGljIGludCBfX2luaXQgX214Y190aW1lcl9pbml0KHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMC1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjQxMTpcdGlteHRtLVx1MDAzZWdwdC1cdTAwM2VncHRfc2V0dXBfdGN0bChpbXh0bSk7XG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy00MTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYz0xNTQ2PXN0YXRpYyB2b2lkIGdmeF92Nl8wX3NldHVwX3NwaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzQtLyoqXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE1NzU6ICogZ2Z4X3Y2XzBfc2V0dXBfdGNjKCkgLSBzZXR1cCB3aGljaCBUQ0NzIGFyZSB1c2VkXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzYtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1OTYtICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE1OTc6c3RhdGljIHZvaWQgZ2Z4X3Y2XzBfc2V0dXBfdGNjKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jPTE2NDQ9c3RhdGljIHZvaWQgZ2Z4X3Y2XzBfY29uc3RhbnRzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNzk2LVx0Z2Z4X3Y2XzBfc2V0dXBfcmIoYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE3OTc6XHRnZnhfdjZfMF9zZXR1cF90Y2MoYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE3OTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTAwNj1zdGF0aWMgdm9pZCBoZWxsY3JlZWtfc2V0dXBfY3B1X2FuZF90dW5uZWxfcG9ydChzdHJ1Y3QgaGVsbGNyZWVrICpoZWxsY3JlZWspXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyNy1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjEwMjg6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3NldHVwX3RjX2lkZW50aXR5X21hcHBpbmcoc3RydWN0IGhlbGxjcmVlayAqaGVsbGNyZWVrKVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTM4MT1zdGF0aWMgaW50IGhlbGxjcmVla19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQxOC1cdC8qIENvbmZpZ3VyZSBQQ1AgXHUwMDNjLVx1MDAzZSBUQyBtYXBwaW5nICovXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDE5Olx0aGVsbGNyZWVrX3NldHVwX3RjX2lkZW50aXR5X21hcHBpbmcoaGVsbGNyZWVrKTtcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0MjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTg1Nz1zdGF0aWMgaW50IGhlbGxjcmVla190Y19xdWVyeV9jYXBzKHN0cnVjdCB0Y19xdWVyeV9jYXBzX2Jhc2UgKmJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3MS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE4NzI6c3RhdGljIGludCBoZWxsY3JlZWtfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3My1cdFx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkyMC1cdC5wb3J0X3J4dHN0YW1wXHQgICAgICAgPSBoZWxsY3JlZWtfcG9ydF9yeHRzdGFtcCxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE5MjE6XHQucG9ydF9zZXR1cF90Y1x0ICAgICAgID0gaGVsbGNyZWVrX3BvcnRfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTIyLVx0LnBvcnRfc3RwX3N0YXRlX3NldCAgICA9IGhlbGxjcmVla19wb3J0X3N0cF9zdGF0ZV9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjUyNj1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6ODQ2M19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1NjItXHQucG9ydF9yeHRzdGFtcFx0XHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2MzpcdC5wb3J0X3NldHVwX3RjXHRcdD0ga3N6X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU2NC1cdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cdD0ga3N6X3BvcnRfZ2V0X2RlZmF1bHRfcHJpbyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNTczPWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o4N3h4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxMi1cdC5wb3J0X3J4dHN0YW1wXHRcdD0ga3N6X3BvcnRfcnh0c3RhbXAsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjEzOlx0LnBvcnRfc2V0dXBfdGNcdFx0PSBrc3pfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjE0LVx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1x0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI2MjM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzejg4eHhfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjY1LVx0LnBvcnRfcnh0c3RhbXBcdFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjY6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IGtzel9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NjctXHQucG9ydF9nZXRfZGVmYXVsdF9wcmlvXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjA2NT1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6OTQ3N19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTIxMTItXHQuY2xzX2Zsb3dlcl9kZWxcdFx0PSBrc3o5NDc3X2Nsc19mbG93ZXJfZGVsLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjExMzpcdC5wb3J0X3NldHVwX3RjXHRcdD0ga3N6X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjExNC1cdC5zdXBwb3J0X2VlZVx0XHQ9IGtzejk0Nzdfc3VwcG9ydF9lZWUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzI3OD1zdGF0aWMgaW50IGNpbmNfY2FsKHMzMiBpZGxlX3Nsb3BlLCBzMzIgc2VuZF9zbG9wZSwgdTMyICpidylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzA4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzMwOTpzdGF0aWMgaW50IGtzel9zZXR1cF90Y19tb2RlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1OCBzY2hlZHVsZXIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzEwLVx0XHRcdCAgICAgdTggc2hhcGVyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzE3OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMxOC1cdFx0XHQgICAgc3RydWN0IHRjX2Nic19xb3B0X29mZmxvYWQgKnFvcHQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNS1cdGlmICghcW9wdC1cdTAwM2VlbmFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzM2Olx0XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfV1JSLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNy1cdFx0XHRcdFx0IE1USV9TSEFQSU5HX09GRik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzM2MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMzNjI6XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzYzLVx0XHRcdFx0IE1USV9TSEFQSU5HX1NSUCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzQ5MT1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfc3RyaWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQ5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM0OTk6XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTAwLVx0XHRcdFx0IE1USV9TSEFQSU5HX09GRik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzUwMz1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfd3JyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzUxMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM1MTI6XHRyZXQgPSBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9XUlIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTEzLVx0XHRcdFx0TVRJX1NIQVBJTkdfT0ZGKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zNjE5PXN0YXRpYyBpbnQga3N6X3RjX3NldHVwX3FkaXNjX2V0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozNjU3OmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTgtXHRcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NjEtXHRjYXNlIFRDX1NFVFVQX1FESVNDX0NCUzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NjI6XHRcdHJldHVybiBrc3pfc2V0dXBfdGNfY2JzKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzY2My1cdGNhc2UgVENfU0VUVVBfUURJU0NfRVRTOlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQ0OD1pbnQga3N6X3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDUwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDUxOmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQ1Mi1cdFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9OTUzPWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45Mzd4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy05OTMtXHQucG9ydF9yeHRzdGFtcFx0XHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo5OTQ6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IGtzel9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTk1LVx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1x0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMjc1PXN0YXRpYyBpbnQgbXQ3NTN4X3RjX3NldHVwX3FkaXNjX3RiZihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMTE6c3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEyLVx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4My1cdC5jb25kdWl0X3N0YXRlX2NoYW5nZVx0PSBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2UsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM4NDpcdC5wb3J0X3NldHVwX3RjXHRcdD0gbXQ3NTN4X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzODUtXHQucG9ydF9oc3Jfam9pblx0XHQ9IGRzYV9wb3J0X3NpbXBsZV9oc3Jfam9pbixcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjAzMz1zdGF0aWMgdm9pZCBmZWxpeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjA0MC1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQxOnN0YXRpYyBpbnQgZmVsaXhfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIwNDItXHRcdFx0ICAgICAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQ3LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIwNDg6XHRpZiAoZmVsaXgtXHUwMDNlaW5mby1cdTAwM2Vwb3J0X3NldHVwX3RjKVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIwNDk6XHRcdHJldHVybiBmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZXBvcnRfc2V0dXBfdGMoZHMsIHBvcnQsIHR5cGUsIHR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjA1MC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGZlbGl4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjEtXHQuY2xzX2Zsb3dlcl9zdGF0c1x0XHQ9IGZlbGl4X2Nsc19mbG93ZXJfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjM2MjpcdC5wb3J0X3NldHVwX3RjXHRcdFx0PSBmZWxpeF9wb3J0X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjMtXHQuZGV2bGlua19zYl9wb29sX2dldFx0XHQ9IGZlbGl4X3NiX3Bvb2xfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaD0yMj1zdHJ1Y3QgZmVsaXhfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oLTU3LVx0dm9pZFx0KCptZGlvX2J1c19mcmVlKShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oOjU4Olx0aW50XHQoKnBvcnRfc2V0dXBfdGMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmgtNTktXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9MTY2Mj1zdGF0aWMgaW50IHZzYzk5NTlfcW9zX3BvcnRfbXFwcmlvKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3My1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjE2NzQ6c3RhdGljIGludCB2c2M5OTU5X3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTE2NzUtXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9MjY1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gZmVsaXhfaW5mb192c2M5OTU5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTlfcG9ydF9tb2RlcyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjI2Nzk6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IHZzYzk5NTlfcG9ydF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2ODAtXHQucG9ydF9zY2hlZF9zcGVlZF9zZXRcdD0gdnNjOTk1OV9zY2hlZF9zcGVlZF9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYz0zMD1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXBfYmNhc3RfcG9saWNlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAxLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxMDI6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAzLVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jPTE3ND1zdGF0aWMgaW50IHNqYTExMDVfZmxvd2VyX3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYy0xODUtXHRjYXNlIFNKQTExMDVfS0VZX1RDOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxODY6XHRcdHJldHVybiBzamExMTA1X3NldHVwX3RjX3BvbGljZXIocHJpdiwgZXh0YWNrLCBjb29raWUsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jLTE4Ny1cdFx0XHRcdFx0XHRrZXktXHUwMDNldGMucGNwLCByYXRlX2J5dGVzX3Blcl9zZWMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MjE1MT1zdGF0aWMgaW50IHNqYTExMDVfZGVsZXRlX2Nic19zaGFwZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjE2OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjIxNjk6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjE3MC1cdFx0XHRcdHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTI3NTE9c3RhdGljIGludCBzamExMTA1X2dldF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjI3NTY6c3RhdGljIGludCBzamExMTA1X3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTI3NTctXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2MS1cdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2MjpcdFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2My1cdGNhc2UgVENfU0VUVVBfUURJU0NfQ0JTOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2NDpcdFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfY2JzKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2NS1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzE0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHNqYTExMDVfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMTczLVx0LnBvcnRfdHh0c3RhbXBcdFx0PSBzamExMTA1X3BvcnRfdHh0c3RhbXAsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMTc0Olx0LnBvcnRfc2V0dXBfdGNcdFx0PSBzamExMTA1X3BvcnRfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMTc1LVx0LnBvcnRfbWlycm9yX2FkZFx0PSBzamExMTA1X21pcnJvcl9hZGQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuYz00NjY9Ym9vbCBzamExMTA1X2dhdGluZ19jaGVja19jb25mbGljdHMoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuYy01MDgtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5jOjUwOTppbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTEwLVx0XHRcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaD00MT1zdHJ1Y3Qgc2phMTEwNV90YXNfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaC01Mi1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg6NTM6aW50IHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTU0LVx0XHRcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg9NzI9c3RydWN0IHNqYTExMDVfdGFzX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmgtNzUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oOjc2OnN0YXRpYyBpbmxpbmUgaW50IHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc3LVx0XHRcdFx0XHQgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1pbilcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQwMz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQwNDp5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGNfdGJmX3BvcnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDA1LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgdGNfdGJmX3FvcHRfb2ZmbG9hZCAqcW9wdClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQ1NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQ1Njp5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDU3LVx0XHRcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDYyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE0NjM6XHRcdHJldHVybiB5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGNfdGJmX3BvcnQoZHMsIHBvcnQsIHFvcHQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE0NjQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ1NDQ9c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cF9kc2Eoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NjE3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2MTg6c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cF90YyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ3MDE9c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3MTQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDcxNTpcdHJlcyA9IHl0OTIxeF9jaGlwX3NldHVwX3RjKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3MTYtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00Nzk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgeXQ5MjF4X2RzYV9zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE2LVx0LnBvcnRfcG9saWNlcl9hZGRcdD0geXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfYWRkLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MTc6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IHl0OTIxeF9kc2FfcG9ydF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE4LVx0LyogYWNsICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0yOTE4PXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19tYXRjaGFsbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk1NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NTUtXHRcdFx0XHRcdHZvaWQgKnR5cGVfZGF0YSwgdm9pZCAqY2JfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjUtXHRjYXNlIFRDX1NFVFVQX0NMU0ZMT1dFUjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk2NjpcdFx0cmV0dXJuIGFpcm9oYV9wcGVfc2V0dXBfdGNfYmxvY2tfY2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjctXHRjYXNlIFRDX1NFVFVQX0NMU01BVENIQUxMOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3NS1cdFx0XHRcdCAgICAgc3RydWN0IGZsb3dfYmxvY2tfb2ZmbG9hZCAqZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5Nzc6XHRmbG93X3NldHVwX2NiX3QgKmNiID0gYWlyb2hhX2Rldl9zZXR1cF90Y19ibG9ja19jYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3OC1cdHN0YXRpYyBMSVNUX0hFQUQoYmxvY2tfY2JfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTAwPXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEwOS1cdGNhc2UgVENfU0VUVVBfRlQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMTA6XHRcdHJldHVybiBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrKGRldiwgdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExMS1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI0LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gYWlyb2hhX2Rldl9zZXRfbWFjYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEyNTpcdC5uZG9fc2V0dXBfdGNcdFx0PSBhaXJvaGFfZGV2X3RjX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI2LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02ODE9dm9pZCBhaXJvaGFfcHBlX2NoZWNrX3NrYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjgyLVx0XHRcdCAgdTE2IGhhc2gsIGJvb2wgcnhfd2xhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oOjY4MzppbnQgYWlyb2hhX3BwZV9zZXR1cF90Y19ibG9ja19jYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgdm9pZCAqdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjg0LWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNDA2PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDQ2OmludCBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKHN0cnVjdCBhaXJvaGFfcHBlX2RldiAqZGV2LCB2b2lkICp0eXBlX2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTU2NT1pbnQgYWlyb2hhX3BwZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNTc1Olx0cHBlLVx1MDAzZWRldi5vcHMuc2V0dXBfdGNfYmxvY2tfY2IgPSBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNTc2LVx0cHBlLVx1MDAzZWRldi5vcHMuY2hlY2tfc2tiID0gYWlyb2hhX3BwZV9jaGVja19za2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xODkwPXN0YXRpYyB2b2lkIHhnYmVfcG9sbF9jb250cm9sbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxOTEzOnN0YXRpYyBpbnQgeGdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMTkxNC1cdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTEtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTI6XHQubmRvX3NldHVwX3RjXHRcdD0geGdiZV9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1My1cdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHhnYmVfZml4X2ZlYXR1cmVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz0zNDI9c3RhdGljIGludCBhcV92YWxpZGF0ZV9tcXByaW9fb3B0KHN0cnVjdCBhcV9uaWNfcyAqc2VsZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtMzY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM2OTpzdGF0aWMgaW50IGFxX25kb19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zNzAtXHRcdFx0ICAgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zOTMtXHRcdFx0ZG9fZGl2KG1heF9yYXRlLCBBUV9NQlBTX0RJVklTT1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM5NDpcdFx0XHRhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoYXFfbmljLCBpLCAodTMyKW1heF9yYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zOTUtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDAwLVx0XHRcdGRvX2RpdihtaW5fcmF0ZSwgQVFfTUJQU19ESVZJU09SKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDE6XHRcdFx0YXFfbmljX3NldHVwX3RjX21pbl9yYXRlKGFxX25pYywgaSwgKHUzMiltaW5fcmF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDAyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDU6XHRyZXR1cm4gYXFfbmljX3NldHVwX3RjX21xcHJpbyhhcV9uaWMsIG1xcHJpby1cdTAwM2Vxb3B0Lm51bV90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDYtXHRcdFx0XHQgICAgICBtcXByaW8tXHUwMDNlcW9wdC5wcmlvX3RjX21hcCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFxX25kZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NjktXHQubmRvX3ZsYW5fcnhfa2lsbF92aWQgPSBhcV9uZG9fdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0NzA6XHQubmRvX3NldHVwX3RjID0gYXFfbmRvX3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3MS1cdC5uZG9fYnBmID0gYXFfeGRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jPTE2MTc9aW50IGFxX25pY19zZXRfbWVkaWFfZGV0ZWN0KHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmM6MTY0MjppbnQgYXFfbmljX3NldHVwX3RjX21xcHJpbyhzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIHUzMiB0Y3MsIHU4ICpwcmlvX3RjX21hcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE2NDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE2OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNjkyOmludCBhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkzLVx0XHRcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE3MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNzEyOmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNzEzLVx0XHRcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oPTIxND12b2lkIGFxX25pY19yZWxlYXNlX2ZpbHRlcihzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGVudW0gYXFfcnhfZmlsdGVyX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oLTIxNS1cdFx0XHQgICB1MzIgbG9jYXRpb24pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmg6MjE2OmludCBhcV9uaWNfc2V0dXBfdGNfbXFwcmlvKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgdTMyIHRjcywgdTggKnByaW9fdGNfbWFwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxNzppbnQgYXFfbmljX3NldHVwX3RjX21heF9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjE4LVx0XHRcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxOTppbnQgYXFfbmljX3NldHVwX3RjX21pbl9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjIwLVx0XHRcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0xOTU0PXZvaWQgYm54Mnhfc2V0X251bV9xdWV1ZXMoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTg5LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoxOTkwOiAqIGJueDJ4X3NldHVwX3RjKCkgdGFrZXMgY2FyZSBvZiB0aGUgcHJvcGVyIFRDIG1hcHBpbmdzIHNvIHRoYXQgX19za2JfdHhfaGFzaCgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTkxLSAqIHdpbGwgcmV0dXJuIGEgcHJvcGVyIFR4IGluZGV4IGlmIFRDIGlzIGVuYWJsZWQgKG5ldGRldi1cdTAwM2VudW1fdGMgXHUwMDNlIDApLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTI2MjY9aW50IGJueDJ4X25pY19sb2FkKHN0cnVjdCBibngyeCAqYnAsIGludCBsb2FkX21vZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjcxMi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjcxMzpcdGJueDJ4X3NldHVwX3RjKGJwLVx1MDAzZWRldiwgYnAtXHUwMDNlbWF4X2Nvcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yNzE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTQyMTE9dm9pZCBibngyeF9nZXRfYzJzX21hcHBpbmcoc3RydWN0IGJueDJ4ICpicCwgdTggKmMyc19tYXAsIHU4ICpjMnNfZGVmYXVsdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI0NzogKiBibngyeF9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpIHRjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1MjogKiBjYWxsYmFjayBjb25uZWN0ZWQgdG8gdGhlIG5kb19zZXR1cF90YyBmdW5jdGlvbiBwb2ludGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjUzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1NDppbnQgYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggbnVtX3RjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjQzMTc6aW50IF9fYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzE4LVx0XHQgICAgIHZvaWQgKnR5cGVfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDMyNzpcdHJldHVybiBibngyeF9zZXR1cF90YyhkZXYsIG1xcHJpby1cdTAwM2VudW1fdGMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9NDg3PW5ldGRldl90eF90IGJueDJ4X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo0ODk6Lyogc2V0dXBfdGMgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MDppbnQgYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggbnVtX3RjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MTppbnQgX19ibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTQ5Mi1cdFx0ICAgICB2b2lkICp0eXBlX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIzNj1zdGF0aWMgdm9pZCBibngyeF9zcF9ydG5sX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDMwMi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5YMlhfU1BfUlROTF9TRVRVUF9UQywgXHUwMDI2YnAtXHUwMDNlc3BfcnRubF9zdGF0ZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAzMDM6XHRcdGJueDJ4X3NldHVwX3RjKGJwLVx1MDAzZWRldiwgYnAtXHUwMDNlZGNieF9wb3J0X3BhcmFtcy5ldHMubnVtX29mX2Nvcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAzMDQtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJOWDJYX1NQX1JUTkxfQUZFWF9GX1VQREFURSwgXHUwMDI2YnAtXHUwMDNlc3BfcnRubF9zdGF0ZSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMwMjEtXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcdD0gYm54Mnhfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzAyMjpcdC5uZG9fc2V0dXBfdGNcdFx0PSBfX2JueDJ4X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDIzLSNpZmRlZiBDT05GSUdfQk5YMlhfU1JJT1Zcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTYyND1pbnQgYm54dF9zZXR1cF9tcV90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTY2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1NjY5OnN0YXRpYyBpbnQgYm54dF9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NzAtXHRcdFx0XHQgIHZvaWQgKmNiX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU2ODY9TElTVF9IRUFEKGJueHRfYmxvY2tfY2JfbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTY4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODgyMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gVHJhZmZpYyBDbGFzcyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBjb25maWd1cmluZyBUcmFmZmljIENsYXNzZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBkcml2ZXJzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBiZSBhd2FyZSBvZiBoZXJlIGFyZSBgbmdiZV9zZXR1cF90Y2AgYW5kIGB0eGdiZV9zZXR1cF90Y2AuIEltbWVkaWF0ZWx5LCBteSBtZW50YWwgbWFwIHN0YXJ0cyB0byBvcmdhbml6ZS4gSSBrbm93IHRoZXNlIGFyZSBsaWtlbHkgc3BlY2lmaWMgdG8gY2VydGFpbiBJbnRlbCBOSUNzLCBwb3NzaWJseSBnZW5lcmF0aW9uLXNwZWNpZmljLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5nYmVfc2V0dXBfdGNgIGZpcnN0LiBUaGF04oCZcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gRXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSBjb3JlIGxvZ2ljIHVzZWQgdG8gaGFuZGxlIHRyYWZmaWMgY2xhc3MgY29uZmlndXJhdGlvbiBmb3Igd2hhdGV2ZXIgc3BlY2lmaWMgSW50ZWwgTklDIGZhbWlseSBgbmdiZWAgcmVmZXJzIHRvLCBhbmQgY291bGQgaW5mb3JtIGhvdyB0aGF0IHRyYW5zbGF0ZXMgb3IgZGlmZmVycyBmb3Igb3RoZXIgTklDcy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZ2JlX3NldHVwX3RjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz04OT1zdGF0aWMgaW50IG5nYmVfc3dfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy0xMzQtXHR3eC1cdTAwM2VtYnguc2l6ZSA9IFdYX1ZYTUFJTEJPWF9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjEzNTpcdHd4LVx1MDAzZXNldHVwX3RjID0gbmdiZV9zZXR1cF90YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy0xMzYtXHRzZXRfYml0KDAsIFx1MDAyNnd4LVx1MDAzZWZ3ZF9iaXRtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9NTYxPXN0YXRpYyB2b2lkIG5nYmVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTU3Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1Nzc6ICogbmdiZV9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpcGxlIHRyYWZmaWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01NzgtICogY2xhc3Nlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjU4MzppbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0YylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01ODQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX3R5cGUuaD0xMjY9dm9pZCBuZ2JlX3VwKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfdHlwZS5oOjEyNzppbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmgtMTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNSSU9WIFJlaW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhpcyBgd3hgIGRyaXZlciYjMzk7cyBTUklPViByZWluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIGB3eC0mZ3Q7c2V0dXBfdGNgIGlzIHBvaW50aW5nIHRvIGBuZ2JlX3NldHVwX3RjYC4gV2hlbiBgd3hfc3Jpb3ZfcmVpbml0YCBnZXRzIGNhbGxlZCwgaXQgY2FsbHMgYHd4LSZndDtzZXR1cF90Y2AsIHdoaWNoIHdlIGtub3cgaXMgYG5nYmVfc2V0dXBfdGNgLiBUaGVuLCBgbmdiZV9zZXR1cF90Y2AgZGl2ZXMgZGVlcGVyIGFuZCBjYWxscyBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYC4gRnJvbSB0aGVyZSwgaXQgbW92ZXMgaW50byBgd3hfc2V0X251bV9xdWV1ZXNgLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBgd3hfc2V0X3ZtZHFfcXVldWVzYCBnZXRzIGludm9rZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gYHd4X3NldF92bWRxX3F1ZXVlc2Agbm93LiBJIHNlZSB0aGF0IGl0IGNoZWNrcyBpZiBgV1hfRkxBR19WTURRX0VOQUJMRURgIGlzIHNldCwgYW5kIHNpbmNlIGBfX3d4X2VuYWJsZV9zcmlvdmAgc2V0cyB0aGlzIGZsYWcsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHNob3VsZCBwcm9jZWVkIHdpdGhvdXQgaXNzdWUgaW4gdGhhdCBjYXNlLiBOb3csIEkgc2VlIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBzb21ldGhpbmcgaW4gdGhlIGBlbHNlYCBicmFuY2ggb2YgYGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LSZndDtmbGFncykpYC4gVGltZSB0byBjaGVjayBpZiB0aGUgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AgZmxhZyBpcyBzZXQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIG1heSBiZSBjaGFuZ2luZyBhbiBlZGdlIGNhc2UgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V1hfRkxBR19NVUxUSV82NF9GVU5DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jPTQ5OT1zdGF0aWMgdW5zaWduZWQgaW50IHd4X21heF9jaGFubmVscyhzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTUwNy1cdFx0Lyogc3VwcG9ydCB1cCB0byBtYXggYWxsb3dlZCBxdWV1ZXMgd2l0aCBSU1MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jOjUwODpcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA5LVx0XHRcdG1heF9jb21iaW5lZCA9IDYzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xMDk9c3RhdGljIHZvaWQgd3hfaW50cl9kaXNhYmxlKHN0cnVjdCB3eCAqd3gsIHU2NCBxbWFzaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjExNzpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTExOC1cdFx0bWFzayA9IChxbWFzayBcdTAwM2VcdTAwM2UgMzIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xMjQ9dm9pZCB3eF9pbnRyX2VuYWJsZShzdHJ1Y3Qgd3ggKnd4LCB1NjQgcW1hc2spXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxMzc6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xMzgtXHRcdG1hc2sgPSAocW1hc2sgXHUwMDNlXHUwMDNlIDMyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9NzU2PXN0YXRpYyBpbnQgd3hfc2V0X3JhcihzdHJ1Y3Qgd3ggKnd4LCB1MzIgaW5kZXgsIHU4ICphZGRyLCB1NjQgcG9vbHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzo3NzQ6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtNzc1LVx0XHR3cjMyKHd4LCBXWF9QU1JfTUFDX1NXQ19WTV9ILCBwb29scyBcdTAwM2VcdTAwM2UgMzIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz04OTI9dm9pZCB3eF9pbml0X3J4X2FkZHJzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzo5MTM6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxNC1cdFx0XHQvKiBjbGVhciBWTURxIHBvb2wvcXVldWUgc2VsZWN0aW9uIGZvciBSQVIgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNDg0PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV92aXJ0dWFsaXphdGlvbihzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MDE6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUwMi1cdFx0dmZfc2hpZnQgPSBCSVQoVk1EUV9QKDApKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MzI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzMy1cdFx0dmFsdWUgPSAod3gtXHUwMDNlbnVtX3ZmcyA9PSAwKSA/XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIwNTQ9dm9pZCB3eF9zdG9yZV9yZXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwNjctXHRcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIwNjg6XHRcdFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwNjktXHRcdFx0XHR3cjMyKHd4LCBXWF9SREJfVk1SU1NUQkwoaSBcdTAwM2VcdTAwM2UgMiwgd3gtXHUwMDNlbnVtX3ZmcyksIHJldGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMDc3PXZvaWQgd3hfc3RvcmVfcnNza2V5KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODItXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjA4MzpcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODQtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGtleV9zaXplOyBpJiM0MzsmIzQzOylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA5Mz1zdGF0aWMgdm9pZCB3eF9zZXR1cF9yZXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxMDYtXHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMDc6XHRcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxMDgtXHRcdFx0XHRyc3NfaSA9IHJzc19pIFx1MDAzYyAyID8gMiA6IHJzc19pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTI0PXZvaWQgd3hfY29uZmlnX3Jzc19maWVsZChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTI4LVx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMjk6XHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTMwLVx0XHRyc3NfZmllbGQgPSByZDMyKHd4LCBXWF9SREJfUExfQ0ZHKHd4LVx1MDAzZW51bV92ZnMpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjE0OT12b2lkIHd4X2VuYWJsZV9yc3Moc3RydWN0IHd4ICp3eCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTEtXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjE1MjpcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTMtXHRcdGlmIChlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIxNzA9c3RhdGljIHZvaWQgd3hfc2V0dXBfcHNydHlwZShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxODI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjE4My1cdFx0Zm9yX2VhY2hfc2V0X2JpdChwb29sLCBcdTAwMjZ3eC1cdTAwM2Vmd2RfYml0bWFzaywgOClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzQ9c3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzg3Olx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODgtXHRcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xODQyPXN0YXRpYyB2b2lkIHd4X3NldF9yc3NfcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODQ3LVx0ZiA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTg0ODpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg0OS1cdFx0Zi1cdTAwM2VtYXNrID0gV1hfUlNTXzY0UV9NQVNLO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTU6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxNi1cdFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjUxOD12b2lkIHd4X2NvbmZpZ3VyZV92ZWN0b3JzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yNTI1LVx0XHQvKiBQb3B1bGF0ZSBNU0lYIHRvIEVJVFIgU2VsZWN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjI1MjY6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yNTI3LVx0XHRcdGlmICh3eC1cdTAwM2VudW1fdmZzIFx1MDAzZT0gMzIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3Zmcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjExMTpcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTItXHRcdHZhbHVlID0gV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF84O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz01ODE9c3RhdGljIGludCB3eF9zZXRfdmZfdmxhbl9tc2coc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjE5LVx0XHRcdGJpdHMgXHUwMDI2PSB+QklUKFZNRFFfUCgwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIwOlx0XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjEtXHRcdFx0XHRiaXRzIHw9IHJkMzIod3gsIFdYX1BTUl9WTEFOX1NXQ19WTV9IKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjItXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIzOlx0XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjQtXHRcdFx0XHRiaXRzID0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz04NjU9dm9pZCB3eF9kaXNhYmxlX3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg2OC1cdHdyMzIod3gsIFdYX1JETV9WRlJFX0NMUigwKSwgVTMyX01BWCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY5Olx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODcwLVx0XHR3cjMyKHd4LCBXWF9URE1fVkZURV9DTFIoMSksIFUzMl9NQVgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oPTEyNTc9ZW51bSB3eF9wZl9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDoxMjU4Olx0V1hfRkxBR19NVUxUSV82NF9GVU5DLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTI1OS1cdFdYX0ZMQUdfU1dGV19SSU5HLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTM1Mj1zdGF0aWMgaW50IHR4Z2JlX3N3X2luaXQoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTItXHRzZXRfYml0KFdYX0ZMQUdfUlNDX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjM5MzpcdHNldF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDcyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRGVsdmluZyBpbnRvIERyaXZlciBJbml0aWFsaXphdGlvbiBEaWZmZXJlbmNlcyoqCgpSaWdodCwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIGNydWNpYWwgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgYHR4Z2JlYCBhbmQgYG5nYmVgIGRyaXZlcnMuIEkgc2VlIHRoYXQgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gYHR4Z2JlX3N3X2luaXRgLCBidXQgbm90IGluIGBuZ2JlX3N3X2luaXRgLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGZsYWdnZWQgYXMgYSBwb3RlbnRpYWwgc291cmNlIG9mIGRpZmZlcmVudCBiZWhhdmlvciBiZXR3ZWVuIHRoZSB0d28sIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGltbWVkaWF0ZSBpbnZlc3RpZ2F0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmdiZV9zd19pbml0YCBmdW5jdGlvbiBzcGVjaWZpY2FsbHksIGFuZCB1bmRlcnN0YW5kIHByZWNpc2VseSAqd2h5KiB0aGF0IGZsYWcgaXNuJiMzOTt0IGJlaW5nIHNldCB0aGVyZS4gSXQgY291bGQgYmUgaW50ZW50aW9uYWwsIG9yIGl0IGNvdWxkIGJlIGEgc3VidGxlIG9taXNzaW9uIHRoYXQmIzM5O3MgY2F1c2luZyBhIHByb2JsZW0gZG93biB0aGUgbGluZS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiAqdGhhdCogaW5pdGlhbGl6YXRpb24gcm91dGluZSBhbmQgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBpdHMgY2hvaWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmdiZV9zd19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz01Mz1zdGF0aWMgdm9pZCBuZ2JlX2luaXRfdHlwZV9jb2RlKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTg1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjg2OiAqIG5nYmVfc3dfaW5pdCAtIEluaXRpYWxpemUgZ2VuZXJhbCBzb2Z0d2FyZSBzdHJ1Y3R1cmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODctICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjg5OnN0YXRpYyBpbnQgbmdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02Mzg9c3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy03MjUtXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo3MjY6XHRlcnIgPSBuZ2JlX3N3X2luaXQod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTcyNy1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzI1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBpbiBgbmdiZWAgYW5kIGl0cyBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGVsc2VgIGJyYW5jaCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AsIGFuZCBJIGtub3cgdGhhdCBgbmdiZWAgZG9lc24mIzM5O3Qgc2V0IGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgLiBUaGF0IG1lYW5zIHRoZSBgdGVzdF9iaXRgIGNoZWNrIGZvciBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCB3aWxsIGFsd2F5cyBiZSBmYWxzZSBpbiBgbmdiZWAsIG1ha2luZyB0aGF0IGBlbHNlYCBicmFuY2ggcmVhY2hhYmxlLCBhc3N1bWluZyBWTURRIGlzIGVuYWJsZWQuIFJpZ2h0LCBWTURRIGlzIGVuYWJsZWQgd2hlbiBTUklPViBpcyBlbmFibGVkLiBBbmQgaG93IGRvIHdlIGVuYWJsZSBTUklPVj8gVGhyb3VnaCBgc3Jpb3ZfbnVtdmZzYCBzeXNmcyBlbnRyaWVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGZ1enogYHNyaW92X251bXZmc2A/IFllcywgaXQgZG9lcyBoYXZlIHN5c2ZzIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBPa2F5LCB0aGF0JiMzOTtzIGNydWNpYWwuIEkgYWxzbyBrbm93IHRoYXQgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIGJ1dCBvbmx5IGlmIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LCBhbmQgdGhhdCBvbmx5IGhhcHBlbnMgZHVyaW5nIFNSSU9WIGVuYWJsZW1lbnQuCgpMZXQmIzM5O3MgdHJhY2UgdGhlIGNhbGwgcGF0aDogYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgY2FsbGVkIGZyb20gYHd4X3NldF9udW1fcXVldWVzYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgZnJvbSBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYC4gV2hlbiBgc3Jpb3ZfbnVtdmZzYCBpcyB3cml0dGVuLCBgd3hfcGNpX3NyaW92X2VuYWJsZWAgaXMgY2FsbGVkLCB3aGljaCB0aGVuIGludm9rZXMgYF9fd3hfZW5hYmxlX3NyaW92YC4gVGhpcyBmdW5jdGlvbiBzZXRzIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAuIFRoZW4sIGB3eF9zcmlvdl9yZWluaXRgIGlzIGNhbGxlZCwgd2hpY2ggY2FsbHMgYHd4LSZndDtzZXR1cF90Y2AsIGxlYWRpbmcgdG8gYG5nYmVfc2V0dXBfdGNgLiBUaGlzIHVsdGltYXRlbHkgY2FsbHMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgLSZndDsgYHd4X3NldF9udW1fcXVldWVzYCAtJmd0OyBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gU28sIHllcywgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhhdCBgZWxzZWAgYnJhbmNoICppcyogcmVhY2hhYmxlIGluIGBuZ2JlYC4KClNvLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBgdm1kcV9tYCBpcyBiZWluZyBleHBsaWNpdGx5IHNldCB0byBgV1hfVk1EUV8xUV9NQVNLYCBpbnN0ZWFkIG9mIHN0YXlpbmcgYXQgemVyby4gVGhpcyBtYXNrIGlzIHRoZW4gc2F2ZWQgdG8gYHd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgLiBUaGUgbWFzayBpdHNlbGYgaXMgdGhlIGNydWNpYWwgcGllY2UgaGVyZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgYHd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgIGlzIGFjdHVhbGx5IGJlaW5nIHVzZWQuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiByaW5nIGNvbmZpZ3VyYXRpb24sIHNvIEkgc2hvdWxkIGxvb2sgYXQgYHd4X2NvbmZpZ3VyZV9yeF9yaW5nYCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB0byBzZWUgaG93IHRoZSBtYXNrIGlzIGJlaW5nIHVzZWQgZHVyaW5nIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBvciBxdWV1ZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UklOR19GX1ZNRFEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaD0xNDg9ZW51bSBpeGdiZV90eF9mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzUtI2RlZmluZSBJWEdCRV9NQVhfUEZfTUFDVkxBTlMgICAgICAgICAgIDE1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oOjE3NjojZGVmaW5lIFZNRFFfUChwKSAgICgocCkgJiM0MzsgYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmgtMTc3LSNkZWZpbmUgSVhHQkVfODI1OTlfVkZfREVWSUNFX0lEICAgICAgICAweDEwRURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTQwOT1lbnVtIGl4Z2JlX3JpbmdfZl9lbnVtIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmgtNDEwLVx0UklOR19GX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDo0MTE6XHRSSU5HX0ZfVk1EUSwgIC8qIFNSLUlPViB1c2VzIHRoZSBzYW1lIHJpbmcgZmVhdHVyZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTItXHRSSU5HX0ZfUlNTLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIxLSNlbmRpZiAvKiBJWEdCRV9GQ09FICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMjpcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMy1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE4OC0jZW5kaWYgLyogSVhHQkVfRkNPRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MTg5Olx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE5MC1cdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnJzcyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTMyNj1zdGF0aWMgYm9vbCBpeGdiZV9zZXRfZGNiX3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMjgtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjMyOTpcdHUxNiB2bWRxX2kgPSBhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMzAtXHR1MTYgdm1kcV9tID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNDctXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM0ODpcdHZtZHFfaSAmIzQzOz0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNjUtXHQvKiByZW1vdmUgdGhlIHN0YXJ0aW5nIG9mZnNldCBmcm9tIHRoZSBwb29sIGNvdW50ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNjY6XHR2bWRxX2kgLT0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2OC1cdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzY5Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNzA6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9IHZtZHFfbTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz01MDA9c3RhdGljIGJvb2wgaXhnYmVfc2V0X3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTUwMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MDI6XHR1MTYgdm1kcV9pID0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTAzLVx0dTE2IHZtZHFfbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTE3LVx0LyogQWRkIHN0YXJ0aW5nIG9mZnNldCB0byB0b3RhbCBwb29sIGNvdW50ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MTg6XHR2bWRxX2kgJiM0Mzs9IGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQxLVx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTQyOlx0dm1kcV9pIC09IGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDQtXHQvKiBzYXZlIGZlYXR1cmVzIGZvciBsYXRlciB1c2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0NTpcdGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5pbmRpY2VzID0gdm1kcV9pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTQ2Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTM5OTQ9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfbXRxYyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDAxNC1cdFx0XHRtdHFjIHw9IElYR0JFX01UUUNfUlRfRU5BIHwgSVhHQkVfTVRRQ180VENfNFRRO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQwMTU6XHRcdGVsc2UgaWYgKGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDAxNi1cdFx0XHQgSVhHQkVfODI1OTlfVk1EUV80UV9NQVNLKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00MzY3PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX21ycWMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQzODgtXHRcdFx0XHRtcnFjID0gSVhHQkVfTVJRQ19WTURRUlQ0VENFTjtcdC8qIDQgVENzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NDM4OTpcdFx0XHRlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9PVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQzOTAtXHRcdFx0XHQgSVhHQkVfODI1OTlfVk1EUV80UV9NQVNLKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00NjI0PXN0YXRpYyB2b2lkIGl4Z2JlX2NvbmZpZ3VyZV92aXJ0dWFsaXphdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY2OS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQ2NzA6XHRzd2l0Y2ggKGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY3MS1cdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz02MTI4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX2dwaWUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NjE2ODpcdFx0c3dpdGNoIChhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzaykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjktXHRcdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz02ODc1PXN0YXRpYyBpbnQgaXhnYmVfc3dfaW5pdChzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNjkwNS1cdGFkYXB0ZXItXHUwMDNlZmRpcl9wYmFsbG9jID0gSVhHQkVfRkRJUl9QQkFMTE9DXzY0SztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2OTA2Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02OTA3LSNpZmRlZiBDT05GSUdfSVhHQkVfRENBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTgyMzY9c3RhdGljIGJvb2wgaXhnYmVfdmZfdHhfcGVuZGluZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtODIzOC1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyMzk6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyNDAtXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTAwODk9c3RhdGljIGludCBoYW5kbGVfcmVkaXJlY3RfYWN0aW9uKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgaWZpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAwOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwMDkyOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDA5My1cdHVuc2lnbmVkIGludCBudW1fdmZzID0gYWRhcHRlci1cdTAwM2VudW1fdmZzLCB2Zjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTA1MTk9c3RhdGljIHZvaWQgaXhnYmVfcmVzZXRfbDJmd19vZmZsb2FkKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDUyNC1cdC8qIGdvIGJhY2sgdG8gZnVsbCBSU1MgaWYgd2UmIzM5O3JlIG5vdCBydW5uaW5nIFNSLUlPViAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwNTI1Olx0aWYgKCFhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI2LVx0XHRhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNj0gfihJWEdCRV9GTEFHX1ZNRFFfRU5BQkxFRCB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI5LVx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA1MzA6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMDc0MD1zdGF0aWMgdm9pZCAqaXhnYmVfZndkX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqcGRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwODA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwODA2Olx0XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgJiM0Mzs9IHJlc2VydmVkX3Bvb2xzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwODA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9NTE9c3RhdGljIGludCBfX2l4Z2JlX2VuYWJsZV9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTczLVx0aXhnYmVfYWxsb2NfdmZfbWFjdmxhbnMoYWRhcHRlciwgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjc0Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldCA9IG51bV92ZnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9MjA1PWludCBpeGdiZV9kaXNhYmxlX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoyNjY6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY3LVx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz02OTk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCB1MzIgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy03MDEtXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6NzAyOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVx0c3RydWN0IHZmX2RhdGFfc3RvcmFnZSAqdmZpbmZvID0gXHUwMDI2YWRhcHRlci1cdTAwM2V2ZmluZm9bdmZdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTgxMi1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4MTM6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTQtXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODM6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODQtXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2Vodztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTEwNjI9c3RhdGljIGludCBpeGdiZV9nZXRfdmZfcXVldWVzKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTA2NS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBhZGFwdGVyLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA2NjpcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwNjctXHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTE2OTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxNzAwOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTcwMS1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTc3ND1zdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE3NzY6XHR1MTYgdm1kcV9pID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3Ny1cdHUxNiByc3NfaSA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODQtXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4NTpcdHZtZHFfaSAmIzQzOz0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODEzLVx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE0Olx0dm1kcV9pIC09IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE2LVx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4MTc6XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4MTg6XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yMDA0PXN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAwNjpcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA3LVx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqcnNzID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz00OT1zdGF0aWMgdm9pZCB3eF9zcmlvdl9jbGVhcl9kYXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTYzLVx0d3IzMm0od3gsIFdYX1BTUl9WTV9DVEwsIFdYX1BTUl9WTV9DVExfUE9PTF9NQVNLLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2NDpcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjgtXHQvKiBEaXNhYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gTk0gbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjY5Olx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy03MC1cdFx0Y2xlYXJfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3Zmcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODUtXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY6XHRpZiAoIXd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODc6XHRcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjg4Olx0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0yNzg9c3RhdGljIHZvaWQgd3hfd3JpdGVfcWRlKHN0cnVjdCB3eCAqd3gsIHUzMiB2ZiwgdTMyIHFkZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjI4MDpcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI4MS1cdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDE6XHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDItXHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MzkzPWVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTU1Ny0jZGVmaW5lIFdYX01BWF9KVU1CT19GUkFNRV9TSVpFICAgICAgOTQzMiAvKiBtYXggcGF5bG9hZCA5NDE0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDo1NTg6I2RlZmluZSBWTURRX1AocCkgICAgICAgKChwKSAmIzQzOyB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTU1OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMTM5PWVudW0gd3hfcmluZ19mX2VudW0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTE0MC1cdFJJTkdfRl9OT05FID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjExNDE6XHRSSU5HX0ZfVk1EUSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTExNDItXHRSSU5HX0ZfUlNTLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc2OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBRdWV1ZSBNYW5hZ2VtZW50IGluIFd4V2lkZ2V0cyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyByZWZlcmVuY2UgdG8gYHd4X3dyaXRlX3FkZWAgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IGludm9sdmVkIGluIHF1ZXVlIG1hbmFnZW1lbnQsIGxpa2VseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgV3hXaWRnZXRzLiBUaGUgZmFjdCB0aGF0IGB3eF93cml0ZV9xZGVgIGlzIG1lbnRpb25lZCBmaXJzdCBzdWdnZXN0cyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IHRoZSBtb3JlIGltcG9ydGFudCBvZiB0aGUgdHdvIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCAtIG9mdGVuLCB3cml0ZXMgYXJlIG1vcmUgY3JpdGljYWwgdGhhbiByZWFkcyB3aGVuIGNvbnNpZGVyaW5nIHJlc291cmNlIGNvbnRlbnRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4KCk15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBgd3hfd3JpdGVfcWRlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHF1ZXVlIGRhdGEgc3RydWN0dXJlcywgd2hhdCBwcm90ZWN0aW9ucyBpdCBoYXMgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIChtdXRleGVzLCBzZW1hcGhvcmVzLCBldGMuKSwgYW5kIHdoYXQgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBhcmUuIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnM6IElzIHRoaXMgYSBibG9ja2luZyB3cml0ZT8gV2hhdCBoYXBwZW5zIG9uIHF1ZXVlIG92ZXJmbG93PyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBmb3IgdGhyZWFkIHN5bmNocm9uaXphdGlvbj8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd3JpdGVzIGFyZSBwZXJtaXR0ZWQsIGlmIGFueS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBkYXRhIGlzIG1hcnNoYWxsZWQgYW5kIGVuc3VyZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBsb2NrcyBhcmUgaW4gcGxhY2Ugd2hlbiB0aGUgcXVldWUgaXMgcG9wdWxhdGVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiB2ZXJ5IGNhcmVmdWxseSB0byBiZSBzdXJlIGl0JiMzOTtzIHRocmVhZC1zYWZlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2sgYWxsIHRoZSBvdGhlciBwbGFjZXMgd2hlcmUgdGhlIHF1ZXVlIGlzIHRvdWNoZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLCB0b28uIEtub3dpbmcgdGhlIHdyaXRlIGJlaGF2aW9yIHdpbGwgaGVscCBtZSBhbnRpY2lwYXRlIHJlYWQtc2lkZSBpc3N1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF93cml0ZV9xZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI2NT1zdGF0aWMgdm9pZCB3eF9zZXRfdmxhbl9hbnRpX3Nwb29maW5nKHN0cnVjdCB3eCAqd3gsIGJvb2wgZW5hYmxlLCBpbnQgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyNzg6c3RhdGljIHZvaWQgd3hfd3JpdGVfcWRlKHN0cnVjdCB3eCAqd3gsIHUzMiB2ZiwgdTMyIHFkZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zOTI9c3RhdGljIHZvaWQgd3hfdmZfcmVzZXRfbXNnKHN0cnVjdCB3eCAqd3gsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDExLVx0LyogZm9yY2UgZHJvcCBlbmFibGUgZm9yIGFsbCBWRiBSeCBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo0MTI6XHR3eF93cml0ZV9xZGUod3gsIHZmLCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy00MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTA5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVmlydHVhbCBGdW5jdGlvbiBRdWV1ZSBSZXRyaWV2YWwqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgcmV0cmlldmluZyBhbmQgbWFuYWdpbmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gcXVldWVzIHJlc2lkZXMsIGFuZCBpcyB0aGUgbGlrZWx5IGVwaWNlbnRlciBvZiBhbnkgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbCBpc3N1ZXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgcGFyYW1ldGVycyBpdCBhY2NlcHRzIGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBNeSBmaXJzdCBwcmlvcml0eSB3aWxsIGJlIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgZnVuY3Rpb24gaGFuZGxlcyByZXNvdXJjZSBjb250ZW50aW9uIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlIHJldHVybmVkIHN0cnVjdHVyZXMgYXJlIHRocmVhZC1zYWZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJiMzOTtyZSBzZWVpbmcgYW55IHVuZXhwZWN0ZWQgcmV0dXJuIGNvZGVzIG9yIHJhY2UgY29uZGl0aW9ucyBhcm91bmQgcXVldWUgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIGFueSBwZXJmb3JtYW5jZSBtZXRyaWNzLCBsaWtlIGxhdGVuY3kgb3IgdGhyb3VnaHB1dCwgd2l0aCB0aGUgYWN0aW9ucyB0YWtlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGxpa2UgZXhjZXNzaXZlIGxvY2tpbmcgb3IgaW5lZmZpY2llbnQgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucy4gRmluYWxseSwgSSYjMzk7bGwgcmV2aWV3IGFueSByZWxhdGVkIGVycm9yIGhhbmRsaW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHdlJiMzOTtyZSBwcm9wZXJseSBsb2dnaW5nIGZhaWx1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMTI9c3RhdGljIHZvaWQgd3hfc2V0X3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gsIGludCB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjMzOTpzdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03NTU9c3RhdGljIHZvaWQgd3hfcmN2X21zZ19mcm9tX3ZmKHN0cnVjdCB3eCAqd3gsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODA2LVx0Y2FzZSBXWF9WRl9HRVRfUVVFVUVTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjgwNzpcdFx0cmV0dmFsID0gd3hfZ2V0X3ZmX3F1ZXVlcyh3eCwgbXNnYnVmLCB2Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODA4LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMDUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFZNRFEgTWFzayBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHd4X2dldF92Zl9xdWV1ZXNgIGlzIHRyaWdnZXJlZCB3aGVuIGEgVkYgc2VuZHMgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIFBGLiBUaGVuLCBgd3hfd3JpdGVfcWRlYCBjb21lcyBpbnRvIHBsYXkgZHVyaW5nIGEgVkYgcmVzZXQuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2luZyBgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyB0aGlzIG1hc2sgZnJvbSB6ZXJvIHRvIGBXWF9WTURRXzFRX01BU0tgICh3aGljaCBpcyAweDdGKSBmb3IgdGhlIGBuZ2JlYCBkcml2ZXIgd2hlbiBWTURRIGlzIGVuYWJsZWQuIFRoYXQgYWxvbmUgdGVsbHMgbWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IGltcGFjdGluZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCwgY29uc2VxdWVudGx5LCBWRiBjb21tdW5pY2F0aW9uLgoKTm93LCBob3cgZG9lcyB0aGlzIGJlY29tZSByZWxldmFudCBmb3IgZnV6emluZz8gV2VsbCwgd2l0aCBTUklPViBlbmFibGVkLCBmdXp6aW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBWRiAtLSBoYXZpbmcgaXQgc2VuZCBtZXNzYWdlcyBvciBwZXJmb3JtIGEgcmVzZXQg4oCTIHNob3VsZCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IHdvdWxkIGJlIHVuZGVyIHRoZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBUWEdCRWAgZHJpdmVyIHNldHMgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcuIFRoaXMgbWVhbnMgaXQgdGFrZXMgdGhlIGBpZmAgYnJhbmNoIGFuZCBub3QgdGhlIGBlbHNlYCBicmFuY2ggb2YgdGhlIGNvZGUuIFRoZSBwYXRjaCwgaG93ZXZlciwgaXMgbW9kaWZ5aW5nIHRoZSBgZWxzZWAgYnJhbmNoLiBTbywgYFRYR0JFYCBhbmQgYFRYR0JFVkZgIGFyZSBub3QgZGlyZWN0bHkgaW52b2x2ZWQgaGVyZS4gVGh1cywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBOR0JFYCBhbmQgYE5HQkVWRmAuCgpMZXQgbWUgY29uZmlybSB0aGF0OiBgTkdCRWAgYW5kIGBOR0JFVkZgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhpcyBjaGFuZ2UuIE15IGF0dGVudGlvbiBpcyBub3cgb24gdGhlc2UgZnVuY3Rpb25zOiBgd3hfc2V0X3ZtZHFfcXVldWVzYCwgYHd4X2dldF92Zl9xdWV1ZXNgLCBhbmQgYHd4X3dyaXRlX3FkZWAuIEFoLCBjb3JyZWN0aW9uLCB0aGUgZnVuY3Rpb24gYmVpbmcgbW9kaWZpZWQgaXMgYHd4X3NldF92bWRxX3F1ZXVlc2AuIFNvLCBJIHJlYWxseSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgd3hfZ2V0X3ZmX3F1ZXVlc2AgYW5kIGB3eF93cml0ZV9xZGVgIHRvIHNvbGlkaWZ5IHRoZW0gYXMgcmVsZXZhbnQgZm9jdXMgc3ltYm9scyBmb3IgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3ODpcdHN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXG4gMjc5Olx0e1xuIDI4MDpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG4gMjgxOlx0XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbiAyODI6XHRcdHUzMiByZWcgPSAwLCBuID0gdmYgKiBxX3Blcl9wb29sIC8gMzI7XG4gMjgzOlx0XHR1MzIgaSA9IHZmICogcV9wZXJfcG9vbDtcbiAyODQ6XHRcbiAyODU6XHRcdHJlZyA9IHJkMzIod3gsIFdYX1JETV9QRl9RREUobikpO1xuIDI4NjpcdFx0Zm9yIChpID0gKHZmICogcV9wZXJfcG9vbCAtIG4gKiAzMik7XG4gMjg3Olx0XHQgICAgIGkgXHUwMDNjICgodmYgJiM0MzsgMSkgKiBxX3Blcl9wb29sIC0gbiAqIDMyKTtcbiAyODg6XHRcdCAgICAgaSYjNDM7JiM0MzspIHtcbiAyODk6XHRcdFx0aWYgKHFkZSA9PSAxKVxuIDI5MDpcdFx0XHRcdHJlZyB8PSBxZGUgXHUwMDNjXHUwMDNjIGk7XG4gMjkxOlx0XHRcdGVsc2VcbiAyOTI6XHRcdFx0XHRyZWcgXHUwMDI2PSBxZGUgXHUwMDNjXHUwMDNjIGk7XG4gMjkzOlx0XHR9XG4gMjk0Olx0XG4gMjk1Olx0XHR3cjMyKHd4LCBXWF9SRE1fUEZfUURFKG4pLCByZWcpO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNjIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFF1ZXVlIEFzc2lnbm1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gdHJhY2luZyB3aGF0IGhhcHBlbnMgd2hlbiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVyby4gVGhlIGNvZGUgdXNlcyBgX19BTElHTl9NQVNLKDEsIH52bWRxLSZndDttYXNrKWAuICBJZiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVybywgdGhlbiBpdHMgYml0d2lzZSBpbnZlcnNlLCBgfnZtZHEtJmd0O21hc2tgLCBiZWNvbWVzIGAweEZGRkZGRkZGYC4gQXBwbHlpbmcgYF9fQUxJR05fTUFTSygxLCAweEZGRkZGRkZGKWAgeWllbGRzIGAoMSAmIzQzOyAweEZGRkZGRkZGKSAmYW1wOyB+MHhGRkZGRkZGRmAsIHdoaWNoIHNpbXBsaWZpZXMgdG8gYDAgJmFtcDsgMGAsIHVsdGltYXRlbHkgcmVzdWx0aW5nIGluIHplcm8uIFRoYXQmIzM5O3MgY29uZmlybWVkLgoKUmlnaHQsIGBfX0FMSUdOX01BU0soeCwgbWFzaylgIGV4cGFuZHMgdG8gYCgoKHgpICYjNDM7IChtYXNrKSkgJmFtcDsgfihtYXNrKSlgLiAgU28sIGluIHRoZSBvcmlnaW5hbCBjYXNlIHdoZXJlIGB2bWRxLSZndDttYXNrYCBpcyAwLCAgdGhlIGNhbGN1bGF0aW9uIGV2YWx1YXRlcyBhcyBkZXNjcmliZWQuIFRoaXMgbWVhbnMgdGhhdCBgcV9wZXJfcG9vbGAgZW5kcyB1cCBhcyB6ZXJvLiBDb25zZXF1ZW50bHksICBgbmAgYmVjb21lcyBgdmYgKiAwIC8gMzJgIHdoaWNoIGlzIGFsc28gemVyby4gQW5kIHNpbmNlIHRoZSBgZm9yYCBsb29wIGNvbmRpdGlvbiBpcyBgaSAmbHQ7IDBgLCB0aGUgbG9vcCBuZXZlciBleGVjdXRlcy4gIEVmZmVjdGl2ZWx5LCBgd3hfd3JpdGVfcWRlYCBkb2VzIG5vdGhpbmcgd2hlbiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVyby4gVGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBwYXRjaGVkIHNjZW5hcmlvLiAgVGhlIHBhdGNoIHNldHMgYHZtZHEtJmd0O21hc2tgIHRvIGBXWF9WTURRXzFRX01BU0tgLCBvciBgMHg3RmAuIFRoZSBiaXR3aXNlIGludmVyc2UsIGB+MHg3RmAsIGlzIGAweEZGRkZGRjgwYC4gVXNpbmcgdGhlIHNhbWUgbG9naWMsIGBfX0FMSUdOX01BU0soMSwgMHhGRkZGRkY4MClgIGlzIG5vdyBgKDEgJiM0MzsgMHhGRkZGRkY4MCkgJmFtcDsgfigweEZGRkZGRjgwKWAsIHdoaWNoIHNpbXBsaWZpZXMgdG8gYDB4RkZGRkZGODEgJmFtcDsgMHg3RmAuIFRoZSByZXN1bHQgb2YgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gaXMgMS4KClNvLCBgX19BTElHTl9NQVNLKHgsIG1hc2spYCBpcyBjb25maXJtZWQgYXMgYCgoKHgpICYjNDM7IChtYXNrKSkgJmFtcDsgfihtYXNrKSlgLCBhbmQgd2l0aCB0aGUgcGF0Y2gsIHRoZSBjb2RlIHdpbGwgbm93IG9wZXJhdGUgb24gb25lIHF1ZXVlIGlmIGJpdCAwIGlzIHNldC4gSSB0aGluayB0aGlzIGFsaWducyB3aXRoIHRoZSBpbnRlbnQgb2YgdGhlIHBhdGNoLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCB0aGUgbG9naWMgc2VlbXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBfX0FMSUdOX01BU0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS92ZHNvL2FsaWduLmgtOS0jZGVmaW5lIEFMSUdOX0RPV04oeCwgYSlcdF9fQUxJR05fS0VSTkVMKCh4KSAtICgoYSkgLSAxKSwgKGEpKVxuaW5jbHVkZS92ZHNvL2FsaWduLmg6MTA6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcdF9fQUxJR05fS0VSTkVMX01BU0soKHgpLCAobWFzaykpXG5pbmNsdWRlL3Zkc28vYWxpZ24uaC0xMS0jZGVmaW5lIFBUUl9BTElHTihwLCBhKVx0XHQoKHR5cGVvZihwKSlBTElHTigodW5zaWduZWQgbG9uZykocCksIChhKSkpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3RyYWNlX2hlbHBlcnMuaC0xOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmg6MTk6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcdCgoKHgpJiM0MzsobWFzaykpXHUwMDI2fihtYXNrKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmgtMjAtI2RlZmluZSBBTElHTih4LCBhKVx0XHRfX0FMSUdOX01BU0soeCwgKHR5cGVvZih4KSkoYSktMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1NDEKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCaXR3aXNlIE1hZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJpdHdpc2Ugb3BlcmF0aW9uOiBgKCgoeCkgJiM0MzsgKG1hc2spKSAmYW1wOyB+KG1hc2spKWAuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpZiBgdm1kcS0mZ3Q7bWFza2AgaXMgMHg3RiwgdGhlbiB0aGUgYG1hc2tgIGJlY29tZXMgaXRzIGJpdHdpc2UgY29tcGxlbWVudCwgYH4weDdGYCwgd2hpY2ggaXMgYDB4RkZGRkZGODBgLiBOb3csIGxldCYjMzk7cyBzYXkgYHhgIGlzIDEuIFdlIGhhdmUgYDEgJiM0MzsgMHhGRkZGRkY4MGAsIHdoaWNoIHlpZWxkcyBgMHhGRkZGRkY4MWAuIFRha2luZyB0aGUgYml0d2lzZSBjb21wbGVtZW50IG9mIGBtYXNrYCwgYH4obWFzaylgLCBnaXZlcyB1cyBgMHg3RmAuIFBlcmZvcm1pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIGAweEZGRkZGRjgxYCB3aXRoIGAweDdGYCByZXN1bHRzIGluIGAweDAxYC4gU28sIGluIHRoaXMgc2NlbmFyaW8sIGBxX3Blcl9wb29sYCB3b3VsZCBiZSAxLgoKTm93LCBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgdm1kcS0mZ3Q7bWFza2AgaXMgMC4gVGhhdCBtYWtlcyBgbWFza2AgZXF1YWwgdG8gYDB4RkZGRkZGRkZgLiBBZGRpbmcgYHhgICh3aGljaCBpcyBzdGlsbCAxKSB0byB0aGlzIGJlY29tZXMgYDBgLiBUYWtpbmcgdGhlIGJpdHdpc2UgY29tcGxlbWVudCBhZ2FpbiBnaXZlcyB1cyBgMGAuIEFuZCBgMCAmYW1wOyAwYCBpcywgb2YgY291cnNlLCBgMGAuIFNvLCBwcmV2aW91c2x5LCBgcV9wZXJfcG9vbGAgd291bGQgaGF2ZSBiZWVuIDAuIFRoYXQmIzM5O3MgYSBodWdlIGNoYW5nZSEKCkhvbGQgb24sIHRoaXMgaXMgc2lnbmlmaWNhbnQuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhpcyBjaGFuZ2UgaXMgZml4aW5nIGEgYnVnLiBCZWZvcmUsIGlmIGBxX3Blcl9wb29sYCB3YXMgMCwgYSBsb29wIG1pZ2h0IGhhdmUgYmVlbiBza2lwcGVkLCBvciB3b3JzZSwgdGhlcmUgbWF5IGhhdmUgYmVlbiBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3I/IE5vLCBubywgaXQmIzM5O3Mgbm90IGEgZGl2aXNpb24gYnkgemVyby4gSWYgYHFfcGVyX3Bvb2xgIHdhcyAwLCB0aGVuIHRoZSBjYWxjdWxhdGlvbiBgdmYgKiBxX3Blcl9wb29sIC8gMzJgIHdvdWxkIGhhdmUgcmV0dXJuZWQgMCwgc28gdGhlIGxvb3Agd291bGQgaGF2ZSBiZWVuIHNraXBwZWQsIGluIGVzc2VuY2UuCgpSaWdodCwgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIG1vcmUgc2NydXRpbnkuIEkgc2hvdWxkIGNoZWNrIGB3eF9nZXRfdmZfcXVldWVzYCB0byBzZWUgd2hlcmUgdGhpcyBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM5Olx0c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG4gMzQwOlx0e1xuIDM0MTpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG4gMzQyOlx0XHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4gMzQzOlx0XG4gMzQ0Olx0XHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbiAzNDU6XHRcdG1zZ2J1ZltXWF9WRl9SWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuIDM0NjpcdFxuIDM0NzpcdFx0aWYgKHd4LVx1MDAzZXZmaW5mb1t2Zl0ucGZfdmxhbiB8fCB3eC1cdTAwM2V2ZmluZm9bdmZdLnBmX3FvcylcbiAzNDg6XHRcdFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMTtcbiAzNDk6XHRcdGVsc2VcbiAzNTA6XHRcdFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMDtcbiAzNTE6XHRcbiAzNTI6XHRcdC8qIG5vdGlmeSBWRiBvZiBkZWZhdWx0IHF1ZXVlICovXG4gMzUzOlx0XHRtc2didWZbV1hfVkZfREVGX1FVRVVFXSA9IGRlZmF1bHRfdGM7XG4gMzU0Olx0XG4gMzU1Olx0XHRyZXR1cm4gMDtcbiAzNTY6XHR9XG4gMzU3Olx0XG4gMzU4Olx0c3RhdGljIHZvaWQgd3hfdmZfcmVzZXRfZXZlbnQoc3RydWN0IHd4ICp3eCwgdTE2IHZmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzY2NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IGBtc2didWZbV1hfVkZfVFhfUVVFVUVTXWAgd2FzIGluaXRpYWxseSB6ZXJvLCBhbmQgbm93IGl0JiMzOTtzIGJlZW4gdXBkYXRlZCB0byBvbmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFByZXZpb3VzbHksIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgd291bGQgaGF2ZSByZWNlaXZlZCB6ZXJvIHF1ZXVlcy4gVGhhdCYjMzk7cyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIg4oCTIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzLCBjcmFzaGVzLCB0aGUgd2hvbGUgbmluZSB5YXJkcy4gTm93LCBpdCYjMzk7cyBnZXR0aW5nIGEgc2luZ2xlIHF1ZXVlLiBUaGlzIGNoYW5nZSBpcyBhIGNsZWFyIGluZGljYXRpb24gb2YgYSBwb3NzaWJsZSB2dWxuZXJhYmlsaXR5LgoKTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2l0dWF0aW9uIGlzIHJpcGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhlIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgd3hfc2V0X3ZtZHFfcXVldWVzYCwgYHd4X3dyaXRlX3FkZWAsIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgZnVuY3Rpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGludGVyYWN0aW5nIGFuZCBpZiB3ZSBjYW4gaW5mbHVlbmNlIHRoZSB2YWx1ZSB0aGF0IGlzIHdyaXR0ZW4gb3IgcmVhZC4KCldoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gY2hlY2sgd2hlcmUgYHZtZHEtJmd0O21hc2tgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIG1hc2sgaXMgZW1wbG95ZWQgYWNyb3NzIHRoZSBzeXN0ZW0gd2lsbCBwcm92aWRlIHVzIHdpdGggbW9yZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtZHEtXHUwMDNlbWFzayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0xNz1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX2RjYl9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNS1cdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2Olx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzctXHRmb3IgKGkgPSAwLCBwb29sID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM4LVx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM5Olx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gdGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00MC1cdFx0XHRwb29sJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQxOlx0XHRcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NDc6XHRyZWdfaWR4ID0gdm1kcS1cdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00OS1cdFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MDpcdFx0aWYgKChyZWdfaWR4IFx1MDAyNiB+dm1kcS1cdTAwM2VtYXNrKSBcdTAwM2U9IHRjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUxOlx0XHRcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01Mi1cdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTY1LVx0aWYgKGZjb2UtXHUwMDNlaW5kaWNlcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NjY6XHRcdHUxNiBxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy02Ny1cdFx0dTggZmNvZV90YyA9IGl4Z2JlX2Zjb2VfZ2V0X3RjKGFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTcwLVx0XHRmb3IgKGkgPSBmY29lLVx1MDAzZW9mZnNldDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NzE6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKSAmIzQzOyBmY29lX3RjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNzItXHRcdFx0YWRhcHRlci1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTc4LVx0XHRmb3IgKGkgPSBmY29lLVx1MDAzZW9mZnNldDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6Nzk6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKSAmIzQzOyBmY29lX3RjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtODAtXHRcdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE5OS1cdHBvb2wgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjAwOlx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDctXHRcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjA4Olx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIwOS1cdFx0XHRwb29sJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIxMDpcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjExLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjIzLSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjI0Olx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjI1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMzItXHRcdGlmICgocmVnX2lkeCBcdTAwMjYgcnNzLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMzM6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIzNC1cdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz04MjM2PXN0YXRpYyBib29sIGl4Z2JlX3ZmX3R4X3BlbmRpbmcoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyMzktXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyNDA6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy04MjQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMDA4OT1zdGF0aWMgaW50IGhhbmRsZV9yZWRpcmVjdF9hY3Rpb24oc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDEwMS1cdFx0aWYgKHVwcGVyLVx1MDAzZWlmaW5kZXggPT0gaWZpbmRleCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwMTAyOlx0XHRcdCpxdWV1ZSA9IHZmICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwMTAzLVx0XHRcdCphY3Rpb24gPSB2ZiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9Njk5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV92Zl9yZXNldF9ldmVudChzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVx0c3RydWN0IHZmX2RhdGFfc3RvcmFnZSAqdmZpbmZvID0gXHUwMDI2YWRhcHRlci1cdTAwM2V2ZmluZm9bdmZdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo3MDQ6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzA1LVx0dTggbnVtX3RjcyA9IGFkYXB0ZXItXHUwMDNlaHdfdGNzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTgxMy1cdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxNDpcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTUtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODg4LVx0dTggKmFkZHIgPSAodTggKikoXHUwMDI2bXNnYnVmWzFdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6ODg5Olx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTg5MC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9MTA2Mj1zdGF0aWMgaW50IGl4Z2JlX2dldF92Zl9xdWV1ZXMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xMDg0LVx0Lyogb25seSBhbGxvdyAxIFR4IHF1ZXVlIGZvciBiYW5kd2lkdGggbGltaXRpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA4NTpcdG1zZ2J1ZltJWEdCRV9WRl9UWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDg2Olx0bXNnYnVmW0lYR0JFX1ZGX1JYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xNzM4LVx0LyogZGV0ZXJtaW5lIGhvdyBtYW55IHF1ZXVlcyBwZXIgcG9vbCBiYXNlZCBvbiBWTURxIG1hc2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTczOTpcdHF1ZXVlc19wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTc0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDE2LVx0XHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTc6XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxOC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTktXHRcdFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjA6XHRcdFx0aWYgKChyZWdfaWR4IFx1MDAyNiB+dm1kcS1cdTAwM2VtYXNrKSBcdTAwM2U9IHJzcy1cdTAwM2VpbmRpY2VzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDIxOlx0XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyMi1cdFx0XHR3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDIzLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjQ6XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyNS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDI3LVx0XHRcdGlmICgocmVnX2lkeCBcdTAwMjYgcnNzLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjg6XHRcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDI5LVx0XHRcdHd4LVx1MDAzZXR4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI3OD1zdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yODAtXHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyODE6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yODItXHR1MzIgcmVnID0gMCwgbiA9IHZmICogcV9wZXJfcG9vbCAvIDMyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDQ6XHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDU6XHRtc2didWZbV1hfVkZfUlhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjQ5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYHd4X2NhY2hlX3Jpbmdfdm1kcWAgQ29udGV4dCoqCgpSaWdodCwgc28gdGhpcyBpcyBhbm90aGVyIGluc3RhbmNlIHdoZXJlIHdlJiMzOTtyZSBsZXZlcmFnaW5nIHRoZSBzYW1lIHByaW5jaXBsZXMgYXMgYHd4X2NhY2hlX3Jpbmdfdm1kcWAuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgY3JvcHBpbmcgdXAgaGVyZSBtZWFucyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93ICp0aGF0KiBzcGVjaWZpYyBjb21wb25lbnQgaXMgZnVuY3Rpb25pbmcsIHRoZSBhc3N1bXB0aW9ucyBpdCBtYWtlcywgYW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgcmUtdXNlLiBHb3R0YSBxdWlja2x5IGFuYWx5emUgYHd4X2NhY2hlX3Jpbmdfdm1kcWAgdG8gZW5zdXJlIHdlJiMzOTtyZSBub3QgaW50cm9kdWNpbmcgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9yIGNvbmZsaWN0cyBpbiB0aGlzIG5ldyBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGltcGxlbWVudGVkIHRoZXJlLCBhbmQgdGhpbmsgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAwNDpcdHN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxuMjAwNTpcdHtcbjIwMDY6XHRcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuMjAwNzpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqcnNzID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuMjAwODpcdFx0dTE2IHJlZ19pZHg7XG4yMDA5Olx0XHRpbnQgaTtcbjIwMTA6XHRcbjIwMTE6XHRcdC8qIG9ubHkgcHJvY2VlZCBpZiBWTURxIGlzIGVuYWJsZWQgKi9cbjIwMTI6XHRcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSlcbjIwMTM6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjAxNDpcdFxuMjAxNTpcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG4yMDE2Olx0XHRcdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cbjIwMTc6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAxODpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbjIwMTk6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwMjA6XHRcdFx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG4yMDIxOlx0XHRcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAyMjpcdFx0XHRcdHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XG4yMDIzOlx0XHRcdH1cbjIwMjQ6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAyNTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbjIwMjY6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwMjc6XHRcdFx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IHJzcy1cdTAwM2VtYXNrKSBcdTAwM2U9IHJzcy1cdTAwM2VpbmRpY2VzKVxuMjAyODpcdFx0XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbjIwMjk6XHRcdFx0XHR3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuMjAzMDpcdFx0XHR9XG4yMDMxOlx0XHR9IGVsc2Uge1xuMjAzMjpcdFx0XHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXG4yMDMzOlx0XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxMDgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYHd4X2NhY2hlX3Jpbmdfdm1kcWAmIzM5O3MgQ29uZGl0aW9uYWwgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB3eF9jYWNoZV9yaW5nX3ZtZHFgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCAqaXNuJiMzOTt0KiBzZXQsIGl0IGdvZXMgc3RyYWlnaHQgdG8gdGhlIGBlbHNlYCBicmFuY2guIFRoYXQgYGVsc2VgIHBhdGggaXMga2V5IGJlY2F1c2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMgY29ycmVjdGx5LCBpdCAqZG9lc24mIzM5O3QqIGFjdHVhbGx5IHRvdWNoIGB2bWRxLSZndDttYXNrYC4gTm93LCB0aGlzIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgY29kZSBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBjb25maXJtIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4gSSYjMzk7bGwgcmVhZCBvbiB0byBlbnN1cmUgdGhpcyBpcyBhcyBJIHVuZGVyc3RhbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMzEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAzMTpcdFx0fSBlbHNlIHtcbjIwMzI6XHRcdFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xuMjAzMzpcdFx0XHRyZWdfaWR4ID0gdm1kcS1cdTAwM2VvZmZzZXQ7XG4yMDM0Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KVxuMjAzNTpcdFx0XHRcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xuMjAzNjpcdFx0XHRcdHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHggJiM0MzsgaTtcbjIwMzc6XHRcbjIwMzg6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0O1xuMjAzOTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOylcbjIwNDA6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwNDE6XHRcdFx0XHR3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4ICYjNDM7IGk7XG4yMDQyOlx0XHR9XG4yMDQzOlx0XG4yMDQ0Olx0XHRyZXR1cm4gdHJ1ZTtcbjIwNDU6XHR9XG4yMDQ2Olx0XG4yMDQ3Olx0LyoqXG4yMDQ4Olx0ICogd3hfY2FjaGVfcmluZ19yc3MgLSBEZXNjcmlwdG9yIHJpbmcgdG8gcmVnaXN0ZXIgbWFwcGluZyBmb3IgUlNTXG4yMDQ5Olx0ICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXG4yMDUwOlx0ICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MzgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRiBRdWV1ZSBCdWcgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYHZtZHEtJmd0O21hc2tgIGlzIGhhbmRsZWQgaW4gYHd4X2NhY2hlX3Jpbmdfdm1kcWAgZm9yIHRoZSBgbmdiZWAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzICpub3QqIHVzZWQgaW4gdGhhdCBmdW5jdGlvbiBiZWNhdXNlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGlzbiYjMzk7dCBzZXQuIEJ1dCwgdGhpcyBgdm1kcS0mZ3Q7bWFza2AgKmlzKiB1c2VkIHdpdGhpbiBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLiBUaGUgcHJvYmxlbSBzdXJmYWNlZCBiZWNhdXNlIGBxX3Blcl9wb29sYCB3YXMgaW5jb3JyZWN0bHkgaW5pdGlhbGl6ZWQgdG8gemVybywgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgcXVldWVzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmdW5jdGlvbmFsIGJ1Zy4KClNpbmNlIHRoaXMgaXMgYSBmaXggdGhhdCBkaXJlY3RseSBpbXByb3ZlcyBWRiBxdWV1ZSBmdW5jdGlvbmFsaXR5IGZvciBgbmdiZWAsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhleSYjMzk7cmUgcmlnaHQgYXQgdGhlIGhlYXJ0IG9mIHdoZXJlIHRoZSBidWcgbWFuaWZlc3RlZC4KCk5vdywgdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGVzdGluZyB0aGUgcmlnaHQgb25lcy4gT2J2aW91c2x5LCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSByZWxldmFudCwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBvdGhlcnMgdG9vLiBIbW1tLCBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgbWlnaHQgYmUgd29ydGggYSBsb29rLCBidXQgZ2l2ZW4gdGhhdCBgVFhHQkVgICpkb2VzKiBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AsIGl0IHRha2VzIGEgZGlmZmVyZW50IGNvZGUgcGF0aCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIEluIHRoYXQgc2NlbmFyaW8sIGB2bWRxX21gIGlzIGFsd2F5cyBzZXQgdG8gZWl0aGVyIGBXWF9WTURRXzJRX01BU0tgIG9yIGBXWF9WTURRXzRRX01BU0tgLCBzbyBpdCBzZWVtcyBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgd2VyZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIGJ1Zy4gVGh1cywgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IHB1bGwgaW4gdGhlIHJlbGV2YW50IGNvZGUuIExvb2tpbmcgaW50byBpdC4uLiBgTElCV1hgIGlzIHNlbGVjdGVkIGJ5IGJvdGggYE5HQkVgIGFuZCBgVFhHQkVgLCBidXQgc2luY2UgYFRYR0JFYCBkb2VzbiYjMzk7dCBleHBlcmllbmNlIHRoZSBidWcsIEkgc2hvdWxkIGJlIHNhZmUgdG8gc3RpY2sgd2l0aCBqdXN0IGBOR0JFYCBhbmQgYE5HQkVWRmAuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBuYW1lcyBJIHNob3VsZCBiZSB1c2luZy4gVGhpcyBpcyBnb2luZyB0byBiZSBhIHRhcmdldGVkIGZ1enppbmcgY2FtcGFpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOR0JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Mjg6Y29uZmlnIE5HQkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODU6Y29uZmlnIE5HQkVWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg2LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTUxCgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkZWZpbmUgdGhlIG1vc3QgcmVsZXZhbnQgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIHBhdGNoLiBJIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYE5HQkVgIGFuZCBgTkdCRVZGYCDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB3aGF0JiMzOTtzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLCByaWdodD8gTWlnaHQgYXMgd2VsbCB0aHJvdyBpbiBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgYXMgcGFydCBvZiB0aGUgZmFtaWx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBidXQgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQmIzM5O3MgKnNwZWNpZmljKiB0byB0aGlzIG1vZGlmaWNhdGlvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgYXNrcyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zLgoKUmlnaHQsIGBOR0JFYCBhbmQgYE5HQkVWRmAgYXJlIHBlcmZlY3QgdGhlbiwgYWNjb3JkaW5nIHRvIHRoYXQgY29uc3RyYWludC4KCk5vdyBmb3IgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBsaXN0IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyB0b3VjaGluZzoKKiAgIGB3eF9zZXRfdm1kcV9xdWV1ZXNgCiogICBgd3hfd3JpdGVfcWRlYAoqICAgYHd4X2dldF92Zl9xdWV1ZXNgCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gTGV0JiMzOTtzIGNoZWNrOiBgd3hfd3JpdGVfcWRlYCBnZXRzIGNhbGxlZCBieSBgd3hfdmZfcmVzZXRfbXNnYCBhbmQgYHd4X3NldF92bGFuX2FudGlfc3Bvb2ZpbmdgLiBgd3hfZ2V0X3ZmX3F1ZXVlc2AgaXMgY2FsbGVkIGZyb20gYHd4X3Jjdl9tc2dfZnJvbV92ZmAuIEFoLCBhbmQgdGhlc2UgYXJlIGFsbCBhY2Nlc3NpYmxlIHdoZW4gZnV6emluZyB0aGUgUENJIGRldmljZSB3aXRoIFNSLUlPViBlbmFibGVkLiBHb29kLgoKT2theSwgYXJlIHRob3NlIGZvY3VzIHN5bWJvbHMgc3RhdGljPyBZZXAuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIHN0YXRpYyBpbiBgd3hfbGliLmNgLCBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgIGFyZSBzdGF0aWMgaW4gYHd4X3NyaW92LmNgLiBUaGlzIGlzIGFsbCBnb29kISBTdGF0aWMgZnVuY3Rpb25zIGFyZSBlYXNpZXIgdG8gdGFyZ2V0LgoKTm93IHRvIGZvcm11bGF0ZSB0aGUgZmluYWwgcmVzcG9uc2UuCgoqKldvcnRoRnV6emluZzogdHJ1ZSoqCgoqKkZvY3VzU3ltYm9sczogWyYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssICYjMzQ7d3hfd3JpdGVfcWRlJiMzNDssICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7XSoqCgoqKkVuYWJsZUNvbmZpZ3M6IFsmIzM0O05HQkUmIzM0OywgJiMzNDtOR0JFVkYmIzM0O10qKgoKKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OyoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOR0JFJiMzNDssCiAgICAmIzM0O05HQkVWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDt3eF93cml0ZV9xZGUmIzM0OywKICAgICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05HQkUmIzM0OywKICAgICYjMzQ7TkdCRVZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssCiAgICAmIzM0O3d4X3dyaXRlX3FkZSYjMzQ7LAogICAgJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjMwLjEwNzMzNzE2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzgzMTU1ODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6MzAuMTA3MzQzMzMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDI5OTc4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NmMyOTIzNjFiMDkyYmViZjdkYzVkMWZjODIzNWU3OGVhYTVkNzMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAwOjQ2OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggZDA0MjU2N2I4MTI4NGIuLjgxNGQ4OGQyYWVlNDg3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuQEAgLTE4MDIsNiArMTgwMiw3IEBAIHN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRcXHRyc3NfaSA9IDQ7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4rXFx0XFx0dm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO1xcbiBcXHRcXHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xcbiBcXHRcXHR2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuaW5kZXggYzdiZWZlNGNkZmU5MDguLjY1ZTNlNTVkYjFjZmZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5AQCAtNDg2LDYgKzQ4Niw3IEBAIGVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xcbiBcXG4gI2RlZmluZSBXWF9WTURRXzRRX01BU0sgICAgICAgICAgICAgIDB4N0NcXG4gI2RlZmluZSBXWF9WTURRXzJRX01BU0sgICAgICAgICAgICAgIDB4N0VcXG4rI2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcXG4gXFxuIC8qKioqKioqKioqKioqKioqKiogTWFuYWdlYWJsaWxpdHkgSG9zdCBJbnRlcmZhY2UgZGVmaW5lcyAqKioqKioqKioqKioqKioqKioqKi9cXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6MzAuNjUwODU1NzI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcyODgwMjk5OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkdCRVwiLFxuICAgIFwiTkdCRVZGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid3hfc2V0X3ZtZHFfcXVldWVzXCIsXG4gICAgXCJ3eF93cml0ZV9xZGVcIixcbiAgICBcInd4X2dldF92Zl9xdWV1ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzZjMjkyMzYxYjA5MmJlYmY3ZGM1ZDFmYzgyMzVlNzhlYWE1ZDczMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAwOjQ2OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGQwNDI1NjdiODEyODRiLi44MTRkODhkMmFlZTQ4NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC0xODAyLDYgKzE4MDIsNyBAQCBzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0XHRyc3NfaSA9IDQ7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4rXHRcdHZtZHFfbSA9IFdYX1ZNRFFfMVFfTUFTSztcbiBcdFx0LyogZG91YmxlIGNoZWNrIHdlIGFyZSBsaW1pdGVkIHRvIG1heGltdW0gcG9vbHMgKi9cbiBcdFx0dm1kcV9pID0gbWluX3QodTE2LCA4LCB2bWRxX2kpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbmluZGV4IGM3YmVmZTRjZGZlOTA4Li42NWUzZTU1ZGIxY2ZmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaFxuQEAgLTQ4Niw2ICs0ODYsNyBAQCBlbnVtIFdYX01TQ0FfQ01EX3ZhbHVlIHtcbiBcbiAjZGVmaW5lIFdYX1ZNRFFfNFFfTUFTSyAgICAgICAgICAgICAgMHg3Q1xuICNkZWZpbmUgV1hfVk1EUV8yUV9NQVNLICAgICAgICAgICAgICAweDdFXG4rI2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcbiBcbiAvKioqKioqKioqKioqKioqKioqIE1hbmFnZWFibGlsaXR5IEhvc3QgSW50ZXJmYWNlIGRlZmluZXMgKioqKioqKioqKioqKioqKioqKiovXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjMwLjY1MDg1NzE5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODIxNzQ4OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBtYWtpbmcgYSBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGB2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7YCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBjb21lcyB0byBtaW5kIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2FuZ3h1bi4uLnJpZ2h0LCB0aGF0J3MgYSBoYXJkd2FyZSBldGhlcm5ldCBkcml2ZXIuIEVtdWxhdGlvbj8gUHJvYmFibHkgbm90IHN0cmFpZ2h0Zm9yd2FyZCB1bmxlc3MgaXQncyBhIFBDSSBkZXZpY2UuIEFuZCwgdGhlIGZ1biBiZWdpbnMsIGNhbiBpdCBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nLCBsaWtlIFN5emthbGxlcidzIFBDSSBmdXp6aW5nP1xuXG5BaCwgcmlnaHQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZy4gR29vZC4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgdHlwaWNhbCBnb3RjaGEsIGhhcmR3YXJlIGRyaXZlcnMgYXJlbid0IHVzdWFsbHkgZWFzeSB0YXJnZXRzIGZvciBmdXp6aW5nIHVubGVzcyB0aGV5J3JlIFVTQiBvciBoYXZlIHNwZWNpZmljIGZ1enppbmcgc3VwcG9ydC4gU3RpbGwsIFN5emthbGxlciBkb2VzIG9mZmVyIFBDSSBmdXp6aW5nLiBTbywgbGV0J3Mgbm90IGRpc21pc3MgdGhpcyBvdXQgb2YgaGFuZC5cblxuVGhlIG5leHQgdGhpbmcgdG8gZG8gaXMgZGV0ZXJtaW5lIGlmIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqLiBMZXQncyBydW4gYSBgZ3JlcGAgZm9yIHRoYXQgZnVuY3Rpb24gbmFtZSBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoYXQgc2hvdWxkIGdpdmUgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGFuYWx5emUgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjQ3LjQ3MjYwODM4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgyNzM5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF92bWRxX3F1ZXVlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzI9RVhQT1JUX1NZTUJPTCh3eF9uYXBpX2Rpc2FibGVfYWxsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzc0OnN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4Nzg9c3RhdGljIHZvaWQgd3hfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4ODU6XFx0aWYgKHd4X3NldF92bWRxX3F1ZXVlcyh3eCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODg2LVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6NTAuMjU1MzUzMTg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYwMDE2MTg1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVHJhY2luZyB0aGUgRnVuY3Rpb24gYHd4X3NldF9udW1fcXVldWVzYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGB3eF9zZXRfbnVtX3F1ZXVlc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFdoYXQncyB0aGUgKndoeSogYmVoaW5kIHRoaXMgZnVuY3Rpb24/IElzIGl0IGFib3V0IG1hbmFnaW5nIGhhcmR3YXJlIHF1ZXVlcywgc29mdHdhcmUgcXVldWVzLCBvciBib3RoPyBXaGF0J3MgdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXQgaW50ZXJhY3RzIHdpdGg/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIG9mdGVuP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGlucHV0IHBhcmFtZXRlcnMuIFdoYXQga2luZCBvZiBhcmd1bWVudCBkb2VzIGl0IHRha2UgLSBudW1iZXIgb2YgcXVldWVzLCBxdWV1ZSBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlcywgc29tZXRoaW5nIGVsc2U/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0J3MgdGhlIGV4cGVjdGVkICpyYW5nZSogb2YgdGhlc2UgdmFsdWVzPyBLbm93aW5nIHRoZSB2YWxpZCBpbnB1dCByYW5nZSBpcyBjcml0aWNhbCBpbiBlc3RhYmxpc2hpbmcgd2hhdCB0aGUgY29kZSBpcyBleHBlY3RpbmcsIGFuZCB3aGVyZSBpdCBtYXkgZXJyb3IuXG5cbk5vdyBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGV4ZWN1dGlvbiBmbG93LiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSB0eXBpY2FsIHBhdHRlcm5zLiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQ/IEFyZSB0aGVyZSBhbnkgbG9ja3MgaW52b2x2ZWQ/IEFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcz8gRG9lcyBpdCBtYWtlIGFueSBjYWxscyBpbnRvIGxvd2VyIGxheWVycywgcGVyaGFwcyB0aGUgbmV0d29yayBzdGFjaywgb3Igc29tZSBoYXJkd2FyZSBpbnRlcmZhY2U/IEknbSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjb250ZW50aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGEgc2hhcmVkIHJlc291cmNlLlxuXG5OZXh0LCBleGNlcHRpb24gaGFuZGxpbmcgaXMga2V5LiBJZiB0aGUgc3lzdGVtIGlzIHVuYWJsZSB0byBmdWxmaWwgdGhlIHJlcXVlc3QsIGFyZSB0aGVyZSBhbnkgZXJyb3IgY29kZXMgdGhhdCB3b3VsZCBiZSByZXR1cm5lZD8gV2hhdCdzIHRoZSBiZWhhdmlvciBpbiBkaWZmZXJlbnQgZXJyb3IgY29uZGl0aW9ucywgaXMgdGhlcmUgYSBzeXN0ZW0gcmVzZXQ/IEknbGwgYmUgbG9va2luZyBmb3IgYGVycm5vYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMuXG5cblRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudCwgdG9vLiBEb2VzIHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW52b2x2ZSByZWNvbmZpZ3VyaW5nIG9yIHJlLWFsbG9jYXRpbmcgcmVzb3VyY2VzPyBJcyBpdCBhIHF1aWNrIG9wZXJhdGlvbiBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBibG9jaz8gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbG9ja2luZyBiZWhhdmlvciB0aGF0IGNvdWxkIGhhdmUgYSBuZWdhdGl2ZSBlZmZlY3QuXG5cbkkgd2lsbCBhbHNvIHF1aWNrbHkgY29uc2lkZXIgYW55IGV4dGVybmFsIGZhY3RvcnMgdGhhdCBtYXkgaW1wYWN0IGl0LiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucz8gVGhpcyBmdW5jdGlvbiBtaWdodCBhY3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGl0cyBvdmVyYWxsIHB1cnBvc2UuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IFdoYXQncyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIHNvZnR3YXJlIG1vZHVsZSBvciBjb21wb25lbnQgdGhhdCBpdCBiZWxvbmdzIHRvPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgY29udGV4dCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjA2LjI1Njk3MzcwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzg1NTU4NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF9udW1fcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTg0Mj1zdGF0aWMgdm9pZCB3eF9zZXRfcnNzX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTg3ODpzdGF0aWMgdm9pZCB3eF9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE5NjQ9c3RhdGljIGludCB3eF9zZXRfaW50ZXJydXB0X2NhcGFiaWxpdHkoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE5ODI6XFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxNj1pbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzMjQtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzMjU6XFx0XFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMyNi1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjA5LjA0MjUzNjg4OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NjYyMjU2ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuIEludGVycnVwdHMgYXJlIHRoZSBsaWZlYmxvb2Qgb2YgcmVhbC10aW1lIHN5c3RlbXMsIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgaW50ZXJydXB0IHNjaGVtZSBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBsYXRmb3JtIGhhbmRsZXMgZXZlbnRzIGFuZCBjb25jdXJyZW5jeS4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zLCBwZXJoYXBzIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb25maWd1cmF0aW9uLCB2ZWN0b3IgdGFibGUgc2V0dXAsIGFuZCB0aGUgZW5hYmxpbmcgb2Ygc3BlY2lmaWMgaW50ZXJydXB0IHNvdXJjZXMuIEknbGwgYmUgd2F0Y2hpbmcgZm9yIGhvdyB0aGlzIHNjaGVtZSBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHd4V2lkZ2V0cyBmcmFtZXdvcmssIHNpbmNlIHByZXN1bWFibHkgdGhpcyBpcyB0eWluZyBpbnRvIHRoZSBHVUkgZXZlbnQgbG9vcC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLCB0aGUgaW1wb3J0YW5jZSBvZiBhdG9taWMgb3BlcmF0aW9ucyBoZXJlOyBhbnkgaW5pdGlhbGl6YXRpb24gaW52b2x2aW5nIHNoYXJlZCByZXNvdXJjZXMgbXVzdCBiZSBjYXJlZnVsbHkgY29uc3RydWN0ZWQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLiBJJ2xsIGV4cGVjdCB0byBzZWUgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcywgYW5kIEknbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjE1LjYwODc2NDk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDA0ODY3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxND1FWFBPUlRfU1lNQk9MKHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzMTY6aW50IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZShzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjM0OTpFWFBPUlRfU1lNQk9MKHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaD0xOD12b2lkIHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUoc3RydWN0IHd4ICp3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaDoxOTppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmgtMjAtaXJxcmV0dXJuX3Qgd3hfbXNpeF9jbGVhbl9yaW5ncyhpbnQgX19hbHdheXNfdW51c2VkIGlycSwgdm9pZCAqZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTMzPWludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMzgtXFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzozOTpcXHR3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtNDAtXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh3eC1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz01ODM9aW50IG5nYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo2MDE6XFx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTYzOD1zdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo4MDE6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9ODc5PXN0YXRpYyBpbnQgbmdiZV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk3LVxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo4OTg6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk5LVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDQtXFx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM6MjA1OlxcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTU2Nz1pbnQgdHhnYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy01ODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NTg3OlxcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy04MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6ODE5OlxcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtODIwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTkzPXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYy0yNjktXFx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNzA6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjcxLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjE3LjkwOTI1ODE4OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTc1NDM0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBEZXZpY2UgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNhbGxzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9ucyBmb3IgYG5nYmVgLCBgbmdiZXZmYCwgYHR4Z2JlYCwgYW5kIGB0eGdiZXZmYC4gVGhlc2UgYXJlIGFsbCBQQ0kgZGV2aWNlcywgYW5kIG15IGd1dCBjaGVjayB0ZWxscyBtZSB0aGF0IFN5emthbGxlciBzdXBwb3J0cyBQQ0kgZnV6emluZy4gTm93LCBpcyBQQ0kgZnV6emluZyBzb21ldGhpbmcgU3l6a2FsbGVyIGRvZXMgYnkgZGVmYXVsdD8gTGV0IG1lIGp1c3QgdGhpbmsuLi4geWVzLCB0aGVyZSdzIGBzeXpfcGNpX2RldmljZV9hZGRgLCB3aGljaCBtZWFucyBpdOKAmXMgZGVmaW5pdGVseSBpbiB0aGUgbWl4LiBUaGUga2V5IGlzLCBhcmUgdGhlIGBOR0JFYCBhbmQgYFRYR0JFYCBjb25maWd1cmF0aW9ucyBlbmFibGVkPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBvciBJIG1pZ2h0IGhhdmUgdG8gZW5hYmxlIHRoZW0gZXhwbGljaXRseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzYxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6MzAuNDg0Njk2OTE3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTYxMTAwNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOR0JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Mjg6Y29uZmlnIE5HQkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODU6Y29uZmlnIE5HQkVWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04Ni1cXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0NzozNC40NDU4MDI0NjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwNjkwODc0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIEFub3RoZXIgUGVyc3BlY3RpdmUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBiZWVuIGRlZXAgZGl2aW5nIGludG8gYFt0b3BpYy9zcGVjaWZpYyBhcmVhIGZyb20gdGhlIHRleHRdYCwgYW5kIEknbSBmZWVsaW5nIHByZXR0eSBjb25maWRlbnQgYWJvdXQgdGhlIGN1cnJlbnQgYW5hbHlzaXMuIEhvd2V2ZXIsIGl0IGFsd2F5cyBwYXlzIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoaXMga2luZCBvZiBkYXRhL3N5c3RlbS4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgaXQgb2NjdXJzIHRvIG1lIHRoYXQgd2Ugc2hvdWxkIGxvb3AgYmFjayBhbmQgdGFrZSBhIGxvb2sgYXQgYFRYR0JFYCBhcyB3ZWxsLiBFdmVuIGlmIGl0IHNlZW1zIGxlc3MgZGlyZWN0bHkgcmVsZXZhbnQgb24gdGhlIHN1cmZhY2UsIGl0cyBpbmNsdXNpb24gb3IgbGFjayB0aGVyZW9mIGNvdWxkIGhhdmUgc3VidGxlLCB5ZXQgY3JpdGljYWwsIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgcGljdHVyZS4gQ2hlY2tpbmcgYFRYR0JFYCB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgSSd2ZSBjb25zaWRlcmVkIGFsbCByZWxhdGVkIGZhY3RvcnMuIFRoaXMgZG91YmxlLWNoZWNrIGlzIHdvcnRoIHRoZSB0aW1lLCBhbmQgbWlnaHQgaGVscCBtZSBhdm9pZCBwb3RlbnRpYWxseSBvdmVybG9va2luZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NDYuNTE0ODkyNzM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI2MzExNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUWEdCRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NDM6Y29uZmlnIFRYR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjQ5LjI0MTIwODkxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTUzNDI4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE5HQkVgLCBgTkdCRVZGYCwgYFRYR0JFYCwgYW5kIGBUWEdCRVZGYC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHdpdGhpbiB0aGUgYGxpYnd4YCBsaWJyYXJ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuVGhlIGtleSBxdWVzdGlvbiBpczogQ2FuIHdlIHRyaWdnZXIgdGhpcyBjb2RlIHRocm91Z2ggUENJIGZ1enppbmc/IEFoYSwgeWVzISBQQ0kgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUsIHdoaWNoIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IHRlbGxzIHVzIHRoZXJlJ3MgYW4gZW50cnkgcG9pbnQgdG8gdGhlIGFmZmVjdGVkIGNvZGUuXG5cbk5vdyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGB2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7YCB3aXRoaW4gYW4gYGVsc2VgIGJyYW5jaC4gVGhpcyBzdWdnZXN0cyBhIGNvbmRpdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIFZpcnR1YWwgTWFjaGluZSBEZXZpY2UgUXVldWUgKFZNRFEpIGlzIGNvbmZpZ3VyZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhhdCBgZWxzZWAgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIExldCBtZSBwdWxsIHVwIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGFuZCBzZWUgd2hhdCBpdCBpcyByZWFsbHkgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NTMuMTk0NjQwNDYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3NzQsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3NzQ6XFx0c3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpXFxuMTc3NTpcXHR7XFxuMTc3NjpcXHRcXHR1MTYgdm1kcV9pID0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQ7XFxuMTc3NzpcXHRcXHR1MTYgcnNzX2kgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xcbjE3Nzg6XFx0XFx0dTE2IHJzc19tID0gV1hfUlNTX0RJU0FCTEVEX01BU0s7XFxuMTc3OTpcXHRcXHR1MTYgdm1kcV9tID0gMDtcXG4xNzgwOlxcdFxcbjE3ODE6XFx0XFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbjE3ODI6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4xNzgzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4xNzg0OlxcdFxcdC8qIEFkZCBzdGFydGluZyBvZmZzZXQgdG8gdG90YWwgcG9vbCBjb3VudCAqL1xcbjE3ODU6XFx0XFx0dm1kcV9pICs9IHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG4xNzg2OlxcdFxcbjE3ODc6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbjE3ODg6XFx0XFx0XFx0LyogZG91YmxlIGNoZWNrIHdlIGFyZSBsaW1pdGVkIHRvIG1heGltdW0gcG9vbHMgKi9cXG4xNzg5OlxcdFxcdFxcdHZtZHFfaSA9IG1pbl90KHUxNiwgNjQsIHZtZHFfaSk7XFxuMTc5MDpcXHRcXG4xNzkxOlxcdFxcdFxcdC8qIDY0IHBvb2wgbW9kZSB3aXRoIDIgcXVldWVzIHBlciBwb29sLCBvclxcbjE3OTI6XFx0XFx0XFx0ICogMTYvMzIvNjQgcG9vbCBtb2RlIHdpdGggMSBxdWV1ZSBwZXIgcG9vbFxcbjE3OTM6XFx0XFx0XFx0ICovXFxuMTc5NDpcXHRcXHRcXHRpZiAodm1kcV9pIFxcdTAwM2UgMzIgfHwgcnNzX2kgXFx1MDAzYyA0KSB7XFxuMTc5NTpcXHRcXHRcXHRcXHR2bWRxX20gPSBXWF9WTURRXzJRX01BU0s7XFxuMTc5NjpcXHRcXHRcXHRcXHRyc3NfbSA9IFdYX1JTU18yUV9NQVNLO1xcbjE3OTc6XFx0XFx0XFx0XFx0cnNzX2kgPSBtaW5fdCh1MTYsIHJzc19pLCAyKTtcXG4xNzk4OlxcdFxcdFxcdC8qIDMyIHBvb2wgbW9kZSB3aXRoIDQgcXVldWVzIHBlciBwb29sICovXFxuMTc5OTpcXHRcXHRcXHR9IGVsc2Uge1xcbjE4MDA6XFx0XFx0XFx0XFx0dm1kcV9tID0gV1hfVk1EUV80UV9NQVNLO1xcbjE4MDE6XFx0XFx0XFx0XFx0cnNzX20gPSBXWF9SU1NfNFFfTUFTSztcXG4xODAyOlxcdFxcdFxcdFxcdHJzc19pID0gNDtcXG4xODAzOlxcdFxcdFxcdH1cXG4xODA0OlxcdFxcdH0gZWxzZSB7XFxuMTgwNTpcXHRcXHRcXHR2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7XFxuMTgwNjpcXHRcXHRcXHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xcbjE4MDc6XFx0XFx0XFx0dm1kcV9pID0gbWluX3QodTE2LCA4LCB2bWRxX2kpO1xcbjE4MDg6XFx0XFxuMTgwOTpcXHRcXHRcXHQvKiB3aGVuIFZNRFEgb24sIGRpc2FibGUgUlNTICovXFxuMTgxMDpcXHRcXHRcXHRyc3NfaSA9IDE7XFxuMTgxMTpcXHRcXHR9XFxuMTgxMjpcXHRcXG4xODEzOlxcdFxcdC8qIHJlbW92ZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IGZyb20gdGhlIHBvb2wgY291bnQgKi9cXG4xODE0OlxcdFxcdHZtZHFfaSAtPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XFxuMTgxNTpcXHRcXG4xODE2OlxcdFxcdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xcbjE4MTc6XFx0XFx0d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0uaW5kaWNlcyA9IHZtZHFfaTtcXG4xODE4OlxcdFxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuMTgxOTpcXHRcXG4xODIwOlxcdFxcdC8qIGxpbWl0IFJTUyBiYXNlZCBvbiB1c2VyIGlucHV0IGFuZCBzYXZlIGZvciBsYXRlciB1c2UgKi9cXG4xODIxOlxcdFxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10uaW5kaWNlcyA9IHJzc19pO1xcbjE4MjI6XFx0XFx0d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5tYXNrID0gcnNzX207XFxuMTgyMzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NTMuMTk0ODY1OTQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjQ2OTk1MzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGBlbHNlYCBicmFuY2gsIHNldHRpbmcgYHZtZHFfbWAgdG8gYFdYX1ZNRFFfMVFfTUFTS2AuIFByZXZpb3VzbHksIGl0IHdhcyB6ZXJvLCBhbmQgbm93IGl0J3MgMHg3Ri4gVGhpcyB2YWx1ZSBpcyB0aGVuIHdyaXR0ZW4gaW50byBgd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUgZHJpdmVyIGNoYW5nZS4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQncyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoYXQsIHJpZ2h0PyBZZXMsIGl0J3MgUENJLCBhbmQgdGhhdCdzIHVzdWFsbHkgc3l6a2FsbGVyLWZyaWVuZGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBlbmFibGVkIOKAkyBsZXQgbWUgc2VlLCBpdCBsb29rcyBsaWtlIGBOR0JFYCwgYE5HQkVWRmAsIGBUWEdCRWAsIGFuZCBgVFhHQkVWRmAgYXJlIHRoZSByZWxldmFudCBvbmVzLlxuXG5IYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2guIElzIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYWN0dWFsbHkgZXZlciBzZXQ/IFRoYXQgd291bGQgbWFrZSBhIGRpZmZlcmVuY2UuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIHRoYXQgZmxhZyBpcyBiZWluZyBzZXQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDg6MDguODQxODYyOTkzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTk2ODI1NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIldYX0ZMQUdfVk1EUV9FTkFCTEVEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNTI4PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzNi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNTM3OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTM4LVxcdFxcdFxcdGlmICh3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmluZGljZXMgPT0gNClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjEwPXN0YXRpYyB2b2lkIHd4X3ZsYW5fcHJvbWlzY19lbmFibGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE0LVxcdHZsbmN0cmwgPSByZDMyKHd4LCBXWF9QU1JfVkxBTl9DVEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNjE1OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE2LVxcdFxcdC8qIHdlIG5lZWQgdG8ga2VlcCB0aGUgVkxBTiBmaWx0ZXIgb24gaW4gU1JJT1YgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjg3PXZvaWQgd3hfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNzE5LVxcdFxcdHZtb2xyIHw9IFdYX1BTUl9WTV9MMkNUTF9NUEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE3MjA6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE3MjEtXFx0XFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTc3ND1zdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4MS1cXHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzgyOlxcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzgzLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTk2ND1zdGF0aWMgaW50IHd4X3NldF9pbnRlcnJ1cHRfY2FwYWJpbGl0eShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTc1LVxcdGRldl93YXJuKFxcdTAwMjZ3eC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiRGlzYWJsaW5nIFZNUVEgc3VwcG9ydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxOTc2OlxcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE5NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTEtXFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAxMjpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxMy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTY5LVxcdGlmICh3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9PSAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo3MDpcXHRcXHRjbGVhcl9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03Mz1zdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODQtXFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NTpcXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04Ni1cXHRpZiAoIXd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MTI1Nz1lbnVtIHd4X3BmX2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXFx0V1hfRkxBR19TV0ZXX1JJTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg6MTI2MDpcXHRXWF9GTEFHX1ZNRFFfRU5BQkxFRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaC0xMjYxLVxcdFdYX0ZMQUdfVkxBTl9QUk9NSVNDLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0ODoxMS40Mzg2OTI5MzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2MTc5MjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTUklPViBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgaXMgY2xlYXJseSByZWxhdGVkIHRvIGBfX3d4X2VuYWJsZV9zcmlvdmAuIFJpZ2h0LCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGhlcmUgaW1wbGllcyB0aGF0IFNSSU9WICpzaG91bGQqIGJlIGVuYWJsZWQuIExldCdzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgaWYgdGhhdCdzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFmZmFpcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgU1JJT1YgaXMgYWN0dWFsbHkgdHVybmVkIG9uLiBXaGVyZSBpcyB0aGlzIGNhbGwgY29taW5nIGZyb20/IEFoLCBJIHNlZSwgYF9fd3hfZW5hYmxlX3NyaW92YCBpcyBpbnZva2VkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLiBUaGF0IGdpdmVzIG1lIGEgYml0IG1vcmUgY29udGV4dC4gTm93LCB3aGF0J3MgYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgIGFjdHVhbGx5IGRvaW5nPyBJIG5lZWQgdG8gdHJhY2sgdGhpcyBkb3duIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ4OjE1LjcwMDQ4NzQ4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0MDQ2ODczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3d4X2VuYWJsZV9zcmlvdlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo3MzpzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0xNDk9c3RhdGljIGludCB3eF9wY2lfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxNjE6XFx0ZXJyID0gX193eF9lbmFibGVfc3Jpb3Yod3gsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNjItXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDg6MTcuOTQwOTYzMzMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMDIxMDg2MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNSSU9WIENvbmZpZ3VyYXRpb24gUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIGB3eF9wY2lfc3Jpb3ZfZW5hYmxlYCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpdHNlbGYgaXMgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgYXMgYC5zcmlvdl9jb25maWd1cmVgLiBUaGF0J3MgaW1wb3J0YW50LCBhbmQgdGhlIGZhY3QgdGhhdCBTeXprYWxsZXIgY2FuIHRyaWdnZXIgU1JJT1YgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBzeXNmcyBgc3Jpb3ZfbnVtdmZzYCBmaWxlIG1lYW5zIHRoaXMgZW50aXJlIGZsb3cgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBwb3RlbnRpYWxseSB2dWxuZXJhYmxlLiBUaGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LiBJdCBzZWVtcyBpdCdzIG9ubHkgc2V0IHdpdGhpbiBgX193eF9lbmFibGVfc3Jpb3ZgLiBTbywgd2hlbiBTUklPViBpcyBlbmFibGVkLCB0aGF0IGZsYWcgKnNob3VsZCogYmUgc2V0LiBJZiB0aGF0IGZsYWcgaXMgc2V0LCB0aGVuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGNhbGxlZC4uLiBidXQgd2FpdCwgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIHdoaWNoIGlzIHBhcnQgb2YgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuXG5cblRoaXMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZHVyaW5nIHNldmVyYWwga2V5IGV2ZW50czogcHJvYmUsIHJlc3VtZSwgYW5kLCBjcnVjaWFsbHksIGBzZXR1cF90Y2AuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIGJlY2F1c2UgdGhlc2UgYXJlIGNvbW1vbiBvcGVyYXRpb25zLiBCdXQgZG9lcyBlbmFibGluZyBTUklPViBhbmQgc2V0dGluZyBgV1hfRkxBR19WTURRX0VOQUJMRURgIGFjdHVhbGx5ICp0cmlnZ2VyKiBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYD8gVGhhdOKAmXMgdGhlIGNyaXRpY2FsIGxpbmsuIExldCdzIGRpZyBiYWNrIGludG8gYF9fd3hfZW5hYmxlX3NyaW92YCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEl0IHNlZW1zIHRoZSBrZXkgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYW5kIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU2MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0OTozOC45NjIwNTIxNTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MzpcXHRzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuICA3NDpcXHR7XFxuICA3NTpcXHRcXHRpbnQgaSwgcmV0ID0gMDtcXG4gIDc2OlxcdFxcdHUzMiB2YWx1ZSA9IDA7XFxuICA3NzpcXHRcXG4gIDc4OlxcdFxcdHNldF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbiAgNzk6XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnd4LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJTUi1JT1YgZW5hYmxlZCB3aXRoICVkIFZGc1xcXFxuXFxcIiwgbnVtX3Zmcyk7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdGlmIChudW1fdmZzID09IDcgXFx1MDAyNlxcdTAwMjYgd3gtXFx1MDAzZW1hYy50eXBlID09IHd4X21hY19lbSlcXG4gIDgyOlxcdFxcdFxcdHNldF9iaXQoV1hfRkxBR19JUlFfVkVDVE9SX1NIQVJFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xcbiAgODU6XFx0XFx0c2V0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG4gIDg2OlxcdFxcdGlmICghd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQpXFxuICA4NzpcXHRcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuICA4ODpcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHR3eC1cXHUwMDNldmZpbmZvID0ga3phbGxvY19vYmpzKHN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2UsIG51bV92ZnMpO1xcbiAgOTE6XFx0XFx0aWYgKCF3eC1cXHUwMDNldmZpbmZvKVxcbiAgOTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA5MzpcXHRcXG4gIDk0OlxcdFxcdHJldCA9IHd4X2FsbG9jX3ZmX21hY3ZsYW5zKHd4LCBudW1fdmZzKTtcXG4gIDk1OlxcdFxcdGlmIChyZXQpXFxuICA5NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQvKiBJbml0aWFsaXplIGRlZmF1bHQgc3dpdGNoaW5nIG1vZGUgVkVCICovXFxuICA5OTpcXHRcXHR3cjMybSh3eCwgV1hfUFNSX0NUTCwgV1hfUFNSX0NUTF9TV19FTiwgV1hfUFNSX0NUTF9TV19FTik7XFxuIDEwMDpcXHRcXG4gMTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmZzOyBpKyspIHtcXG4gMTAyOlxcdFxcdFxcdC8qIGVuYWJsZSBzcG9vZiBjaGVja2luZyBmb3IgYWxsIFZGcyAqL1xcbiAxMDM6XFx0XFx0XFx0d3gtXFx1MDAzZXZmaW5mb1tpXS5zcG9vZmNoa19lbmFibGVkID0gdHJ1ZTtcXG4gMTA0OlxcdFxcdFxcdHd4LVxcdTAwM2V2ZmluZm9baV0ubGlua19lbmFibGUgPSB0cnVlO1xcbiAxMDU6XFx0XFx0XFx0LyogdW50cnVzdCBhbGwgVkZzICovXFxuIDEwNjpcXHRcXHRcXHR3eC1cXHUwMDNldmZpbmZvW2ldLnRydXN0ZWQgPSBmYWxzZTtcXG4gMTA3OlxcdFxcdFxcdC8qIHNldCB0aGUgZGVmYXVsdCB4Y2FzdCBtb2RlICovXFxuIDEwODpcXHRcXHRcXHR3eC1cXHUwMDNldmZpbmZvW2ldLnhjYXN0X21vZGUgPSBXWFZGX1hDQVNUX01PREVfTk9ORTtcXG4gMTA5OlxcdFxcdH1cXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG4gMTEyOlxcdFxcdFxcdHZhbHVlID0gV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF84O1xcbiAxMTM6XFx0XFx0fSBlbHNlIHtcXG4gMTE0OlxcdFxcdFxcdGlmIChudW1fdmZzIFxcdTAwM2MgMzIpXFxuIDExNTpcXHRcXHRcXHRcXHR2YWx1ZSA9IFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfMzI7XFxuIDExNjpcXHRcXHRcXHRlbHNlXFxuIDExNzpcXHRcXHRcXHRcXHR2YWx1ZSA9IFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfNjQ7XFxuIDExODpcXHRcXHR9XFxuIDExOTpcXHRcXHR3cjMybSh3eCwgV1hfQ0ZHX1BPUlRfQ1RMLFxcbiAxMjA6XFx0XFx0ICAgICAgV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF9NQVNLLFxcbiAxMjE6XFx0XFx0ICAgICAgdmFsdWUpO1xcbiAxMjI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ5OjM4Ljk2MjIxMzI0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTM1ODU0NzkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipTUi1JT1YgSW50ZXJydXB0IEluaXRpYWxpemF0aW9uIERlZXAgRGl2ZSoqXG5cbkhtbSwgc28gYHd4X3BjaV9zcmlvdl9lbmFibGVgLi4uIHJpZ2h0LCB0aGF0J3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIFNSLUlPViBlbmFibGluZyBmb3IgYSBzcGVjaWZpYyBQQ0kgZGV2aWNlLCBpbiB0aGlzIGNvbnRleHQuIEFuZCBpdCdzIGNhbGxpbmcgYF9fd3hfZW5hYmxlX3NyaW92YC4gT2theSwgSSBrbm93IHRoYXQgaW50ZXJuYWwgaGVscGVyLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIGBfX3d4X2VuYWJsZV9zcmlvdmAgKnJlLWluaXRpYWxpemVzKiB0aGUgaW50ZXJydXB0IHNjaGVtZSBmb3IgdGhlIGRldmljZS4gSXMgaXQganVzdCBlbmFibGluZyB0aGUgU1ItSU9WIGZ1bmN0aW9uYWxpdHksIG9yIGlzIGl0IGFsc28gcG90ZW50aWFsbHkgc3RlcHBpbmcgb24gdGhlIGV4aXN0aW5nIGludGVycnVwdCBjb25maWd1cmF0aW9uPyBEb2VzIGl0IHBvdGVudGlhbGx5IHJlLXByb2dyYW0gdGhlIGludGVycnVwdCB2ZWN0b3JzLCBpbnRlcnJ1cHQgYWZmaW5pdHksIGludGVycnVwdCBjb2FsZXNjaW5nLCBNU0kgc2V0dGluZ3MsIG9yIE1TSS1YIHNldHRpbmdzPyBUaGF0J3MgYSBjcnVjaWFsIGNvbnNpZGVyYXRpb24uIElmIGl0IGRvZXMgcmUtaW5pdGlhbGl6ZSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBhbnkgZXhpc3RpbmcgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gV2hhdCBoYXBwZW5zIGlmIFNSLUlPViBpcyBlbmFibGVkLCB0aGVuIGRpc2FibGVkLCB0aGVuIHJlLWVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgaXNzdWVzIHRoZXJlIHdpdGggaW50ZXJydXB0IHN0YXRlIHByZXNlcnZhdGlvbiBvciByZXN0b3JhdGlvbj8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgX193eF9lbmFibGVfc3Jpb3ZgIHRvIHNlZSBleGFjdGx5IHdoYXQncyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2Qgd2l0aCB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYW5kIGludGVycnVwdCB2ZWN0b3JzLiBUaGlzIHJlLWluaXRpYWxpemF0aW9uIHBvc3NpYmlsaXR5IGNvdWxkIGJlIGEgbWFqb3IgZ290Y2hhIGlmIGhhbmRsZWQgaW5jb3JyZWN0bHkuIExldCBtZSBhbmFseXplIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDk6NTQuMzIwNzY0OTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ5OlxcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqZGV2LFxcbiAxNTA6XFx0XFx0XFx0XFx0ICAgICAgIGludCBudW1fdmZzKVxcbiAxNTE6XFx0e1xcbiAxNTI6XFx0XFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShkZXYpO1xcbiAxNTM6XFx0XFx0aW50IGVyciA9IDAsIGk7XFxuIDE1NDpcXHRcXG4gMTU1OlxcdFxcdGlmIChuZXRpZl9pc19yeGZoX2NvbmZpZ3VyZWQod3gtXFx1MDAzZW5ldGRldikpIHtcXG4gMTU2OlxcdFxcdFxcdHd4X2Vycih3eCwgXFxcIkNhbm5vdCBlbmFibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcXFxuXFxcIik7XFxuIDE1NzpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJSdW4gJ2V0aHRvb2wgLVggXFx1MDAzY2lmXFx1MDAzZSBkZWZhdWx0JyB0byByZXNldCBSU1MgdGFibGVcXFxcblxcXCIpO1xcbiAxNTg6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gMTU5OlxcdFxcdH1cXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0ZXJyID0gX193eF9lbmFibGVfc3Jpb3Yod3gsIG51bV92ZnMpO1xcbiAxNjI6XFx0XFx0aWYgKGVycilcXG4gMTYzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE2NDpcXHRcXG4gMTY1OlxcdFxcdHd4LVxcdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcXG4gMTY2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3ZmczsgaSsrKVxcbiAxNjc6XFx0XFx0XFx0d3hfdmZfY29uZmlndXJhdGlvbihkZXYsIChpIHwgV1hfVkZfRU5BQkxFKSk7XFxuIDE2ODpcXHRcXG4gMTY5OlxcdFxcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xcbiAxNzA6XFx0XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG4gMTcxOlxcdFxcbiAxNzI6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9zcmlvdihkZXYsIG51bV92ZnMpO1xcbiAxNzM6XFx0XFx0aWYgKGVycikge1xcbiAxNzQ6XFx0XFx0XFx0d3hfZXJyKHd4LCBcXFwiRmFpbGVkIHRvIGVuYWJsZSBQQ0kgc3Jpb3Y6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbiAxNzU6XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiAxNzY6XFx0XFx0fVxcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHRyZXR1cm4gbnVtX3ZmcztcXG4gMTc5OlxcdGVycl9vdXQ6XFxuIDE4MDpcXHRcXHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcXG4gMTgxOlxcdFxcdHJldHVybiBlcnI7XFxuIDE4MjpcXHR9XFxuIDE4MzpcXHRcXG4gMTg0OlxcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKmRldilcXG4gMTg1OlxcdHtcXG4gMTg2OlxcdFxcdHN0cnVjdCB3eCAqd3ggPSBwY2lfZ2V0X2RydmRhdGEoZGV2KTtcXG4gMTg3OlxcdFxcbiAxODg6XFx0XFx0aWYgKG5ldGlmX2lzX3J4ZmhfY29uZmlndXJlZCh3eC1cXHUwMDNlbmV0ZGV2KSkge1xcbiAxODk6XFx0XFx0XFx0d3hfZXJyKHd4LCBcXFwiQ2Fubm90IGRpc2FibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcXFxuXFxcIik7XFxuIDE5MDpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJSdW4gJ2V0aHRvb2wgLVggXFx1MDAzY2lmXFx1MDAzZSBkZWZhdWx0JyB0byByZXNldCBSU1MgdGFibGVcXFxcblxcXCIpO1xcbiAxOTE6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gMTkyOlxcdFxcdH1cXG4gMTkzOlxcdFxcbiAxOTQ6XFx0XFx0d3hfZGlzYWJsZV9zcmlvdih3eCk7XFxuIDE5NTpcXHRcXHR3eF9zcmlvdl9yZWluaXQod3gpO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRyZXR1cm4gMDtcXG4gMTk4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDk6NTQuMzIwOTAxMDgxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NjI4MjQ2MzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB3eF9zcmlvdl9yZWluaXQqKlxuXG5Pa2F5LCBzbyBgd3hfc3Jpb3ZfcmVpbml0YCBoYXMgYmVlbiBjYWxsZWQuIFRoYXQncyBteSBjdWUgdG8gcmVhbGx5IGRpZyBpbiBhbmQgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyByb3V0aW5lLiBMZXQgbWUgc3RhcnQgYnkgdHJhY2luZyBpdHMgZXhlY3V0aW9uIHBhdGgsIGRpc3NlY3RpbmcgZWFjaCBsaW5lIG9mIGNvZGUsIGFuZCBleGFtaW5pbmcgYW55IHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGludGVyYWN0cyB3aXRoLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0J3MgaW52b2tlZCDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG9yIGVycm9yIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhpcyByZWluaXRpYWxpemF0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgcmUtaW5pdD8gRG9lcyBpdCBwb3RlbnRpYWxseSBjYXVzZSBhbnkgc2VydmljZSBpbnRlcnJ1cHRpb25zPyBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciByZWxhdGVkIGRvY3VtZW50YXRpb24gb3IgcHJpb3IgYnVnIHJlcG9ydHMgdG8gc2VlIGlmIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYSBzb3VyY2Ugb2YgcHJvYmxlbXMgaW4gdGhlIHBhc3Qgb3IgbWF5IGJlIGEgc291cmNlIG9mIGZ1dHVyZSBwcm9ibGVtcy4gSW4gdGhlIGVuZCwgSSBuZWVkIGEgcm9jay1zb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjEyLjk0OTE0OTg5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzYzOTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9zcmlvdl9yZWluaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjEzMDpzdGF0aWMgdm9pZCB3eF9zcmlvdl9yZWluaXQoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0xNDk9c3RhdGljIGludCB3eF9wY2lfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTY5LVxcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxNzA6XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE4ND1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9kaXNhYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk0LVxcdHd4X2Rpc2FibGVfc3Jpb3Yod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxOTU6XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDoxNS42MzY3OTM4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjI1OTM1MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgd3hfc3Jpb3ZfcmVpbml0YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhpcyBgd3hfc3Jpb3ZfcmVpbml0YCBmdW5jdGlvbi4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHdoYXQgSSBleHBlY3QgdG8gc2VlIOKAkyBsaWtlbHkgc29tZSBjbGVhbnVwLCByZWNvbmZpZ3VyYXRpb24sIGFuZCBtYXliZSByZXNvdXJjZSByZXNldHRpbmcgcmVsYXRlZCB0byBTaW5nbGUgUm9vdCBJL08gVmlydHVhbGl6YXRpb24gKFNSLUlPVikgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgV1ggKHByZXN1bWFibHksIFdpbmRvd3MgZVh0ZW5zaWJsZSkgZW52aXJvbm1lbnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzZXF1ZW5jaW5nIG9mIG9wZXJhdGlvbnMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMuIEEgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyBvZiBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIChWRnMpLCBhbmQgdGhlIHBoeXNpY2FsIGZ1bmN0aW9uIChQRikgaXMgY3J1Y2lhbCBoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc21zLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IHNoYXJlZCBzdGF0ZS4gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBzY3J1dGluaXppbmcgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSBhIGNsYXNzaWMgcHJvYmxlbSB3aGVuIHJlaW5pdGlhbGl6aW5nIHN1Y2ggYSBjb21wbGV4IHN5c3RlbS4gTGV0J3Mgc2VlIGlmIHRoaXMgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgZWFzeSB0byBmb2xsb3cuIEhvcGVmdWxseSwgaXQncyBub3QgYSBzcGFnaGV0dGkgbWVzcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTQwODcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDoyMS4yNjI3MzExNDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0c3RhdGljIHZvaWQgd3hfc3Jpb3ZfcmVpbml0KHN0cnVjdCB3eCAqd3gpXFxuIDEzMTpcXHR7XFxuIDEzMjpcXHRcXHRydG5sX2xvY2soKTtcXG4gMTMzOlxcdFxcdHd4LVxcdTAwM2VzZXR1cF90Yyh3eC1cXHUwMDNlbmV0ZGV2LCBuZXRkZXZfZ2V0X251bV90Yyh3eC1cXHUwMDNlbmV0ZGV2KSk7XFxuIDEzNDpcXHRcXHRydG5sX3VubG9jaygpO1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0XFxuIDEzNzpcXHR2b2lkIHd4X2Rpc2FibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eClcXG4gMTM4OlxcdHtcXG4gMTM5OlxcdFxcdGlmICghcGNpX3Zmc19hc3NpZ25lZCh3eC1cXHUwMDNlcGRldikpXFxuIDE0MDpcXHRcXHRcXHRwY2lfZGlzYWJsZV9zcmlvdih3eC1cXHUwMDNlcGRldik7XFxuIDE0MTpcXHRcXHRlbHNlXFxuIDE0MjpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJVbmxvYWRpbmcgZHJpdmVyIHdoaWxlIFZGcyBhcmUgYXNzaWduZWQuXFxcXG5cXFwiKTtcXG4gMTQzOlxcdFxcbiAxNDQ6XFx0XFx0LyogY2xlYXIgZmxhZ3MgYW5kIGZyZWUgYWxsbG9jZWQgZGF0YSAqL1xcbiAxNDU6XFx0XFx0d3hfc3Jpb3ZfY2xlYXJfZGF0YSh3eCk7XFxuIDE0NjpcXHR9XFxuIDE0NzpcXHRFWFBPUlRfU1lNQk9MKHd4X2Rpc2FibGVfc3Jpb3YpO1xcbiAxNDg6XFx0XFxuIDE0OTpcXHRzdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MjEuMjYyODU2ODA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTA4NjMwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUcmFuc21pc3Npb24gQ29udHJvbCBTZXR1cCoqXG5cbk9rYXksIHNvIEkgc2VlIGEgY2FsbCB0byBgd3gtXHUwMDNlc2V0dXBfdGNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCBmb3IgaW52ZXN0aWdhdGlvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgbGlrZWx5IGludm9sdmVzIGNvbmZpZ3VyaW5nIHRoZSB0cmFuc21pc3Npb24gY29udHJvbCBhc3BlY3RzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGxvb2sgYXQgYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgZmlyc3QuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXR1cF90Y2AgYmVjYXVzZSBvZiBob3cgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGlzIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJ2QgZXhwZWN0IHRoZXNlIHRvIGJlIHRoZSBwb2ludHMgb2YgZW50cnkgYW5kIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDcxNiwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MjYuNDczNzIzMjczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY0MTcyMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHVwX3RjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQwMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTMwMT1uZG9fY2hhbmdlX3J4X2ZsYWdzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTMwNC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6MzA1Om5kb19zZXR1cF90YzpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtMzA2LVxcdExvY2tpbmcgZGVwZW5kcyBvbiBgYHRjX3NldHVwX3R5cGVgYC4gRm9yIG1vc3QgdHlwZXMgdGhlIGNhbGxiYWNrXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xMDA9aGFyZHdhcmUgb2ZmbG9hZCBmZWF0dXJlIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHVzaW5nIHRoZSB0Yy1ldGZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDoxMDE6Y29tbWFuZCB0byBjYWxsIHRoZSBkcml2ZXIncyBuZG9fc2V0dXBfdGMoKSBjYWxsYmFjay5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC0xMDItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xMTU9dGltZSBoYXJkd2FyZSBvZmZsb2FkIGZlYXR1cmUgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdXNpbmcgdGhlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTE2OnRjLWV0ZiBjb21tYW5kIHRvIGNhbGwgdGhlIGRyaXZlcidzIG5kb19zZXR1cF90YygpIGNhbGxiYWNrLiBXaGVuIGVudGVyaW5nXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTE3LVRTTiBtb2RlLCB0aGUgaWdjIGRyaXZlciB3aWxsIHJlc2V0IHRoZSBkZXZpY2UgYW5kIGNyZWF0ZSBhIGRlZmF1bHQgUWJ2XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM9MTA5PUVYUE9SVF9TWU1CT0wodGNtX2l0Y21fcHJlc2VudCk7XFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTExMC1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTExOnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9iYW5rKHU4IHR5cGUsIHU4IGJhbmssIHU4IGJhbmtzLFxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xMTItXFx0XFx0XFx0XFx0ICB1MzIgKm9mZnNldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xODUtICogdW5kZWZpbmVkIGVycm9yIHdoZW4gcmVhZGluZyB0aGUgVENNIHJlZ2lvbiByZWdpc3RlciBpbiB0aGVcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTg2OiAqIHNldHVwX3RjbV9iYW5rIGZ1bmN0aW9uIChhYm92ZSkuXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4Ny0gKlxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jPTI1Nj12b2lkIF9faW5pdCB0Y21faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTMwMi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHRjbV9iYW5rczsgaSsrKSB7XFxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjMwMzpcXHRcXHRcXHRyZXQgPSBzZXR1cF90Y21fYmFuaygwLCBpLCBkdGNtX2JhbmtzLCBcXHUwMDI2ZHRjbV9lbmQpO1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zMDQtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zNDAtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGl0Y21fYmFua3M7IGkrKykge1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozNDE6XFx0XFx0XFx0cmV0ID0gc2V0dXBfdGNtX2JhbmsoMSwgaSwgaXRjbV9iYW5rcywgXFx1MDAyNml0Y21fZW5kKTtcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzQyLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzgzLSAqL1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozODQ6c3RhdGljIGludCBfX2luaXQgc2V0dXBfdGNtX3Bvb2wodm9pZClcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzg1LXtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy00MzQtXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjQzNTpjb3JlX2luaXRjYWxsKHNldHVwX3RjbV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTc3PXN0cnVjdCBpbXhfZ3B0X2RhdGEge1xcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtODAtXFx0aW50IHJlZ190Y21wO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjgxOlxcdHZvaWQgKCpncHRfc2V0dXBfdGN0bCkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTgyLVxcdHZvaWQgKCpncHRfaXJxX2VuYWJsZSkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MjcxPXN0YXRpYyBpbnQgX19pbml0IG14Y19jbG9ja2V2ZW50X2luaXQoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0yOTAtXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MjkxOnN0YXRpYyB2b2lkIGlteDFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMjkyLXtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTI5OC1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzoyOTk6c3RhdGljIHZvaWQgaW14MzFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzAwLXtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozMTI6c3RhdGljIHZvaWQgaW14NmRsX2dwdF9zZXR1cF90Y3RsKHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBpbXhfZ3B0X2RhdGEgaW14MV9ncHRfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNS1cXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDFfZ3B0X2lycV9hY2tub3dsZWRnZSxcXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozMzY6XFx0LmdwdF9zZXR1cF90Y3RsID0gaW14MV9ncHRfc2V0dXBfdGN0bCxcXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMzctXFx0LnNldF9uZXh0X2V2ZW50ID0gbXgxXzJfc2V0X25leHRfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpbXhfZ3B0X2RhdGEgaW14MjFfZ3B0X2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNDYtXFx0LmdwdF9pcnFfYWNrbm93bGVkZ2UgPSBpbXgyMV9ncHRfaXJxX2Fja25vd2xlZGdlLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM0NzpcXHQuZ3B0X3NldHVwX3RjdGwgPSBpbXgxX2dwdF9zZXR1cF90Y3RsLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM0OC1cXHQuc2V0X25leHRfZXZlbnQgPSBteDFfMl9zZXRfbmV4dF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgzMV9ncHRfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1Ny1cXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDMxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MzU4OlxcdC5ncHRfc2V0dXBfdGN0bCA9IGlteDMxX2dwdF9zZXR1cF90Y3RsLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1OS1cXHQuc2V0X25leHRfZXZlbnQgPSB2Ml9zZXRfbmV4dF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXg2ZGxfZ3B0X2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNjgtXFx0LmdwdF9pcnFfYWNrbm93bGVkZ2UgPSBpbXgzMV9ncHRfaXJxX2Fja25vd2xlZGdlLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM2OTpcXHQuZ3B0X3NldHVwX3RjdGwgPSBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwsXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzcwLVxcdC5zZXRfbmV4dF9ldmVudCA9IHYyX3NldF9uZXh0X2V2ZW50LFxcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzczPXN0YXRpYyBpbnQgX19pbml0IF9teGNfdGltZXJfaW5pdChzdHJ1Y3QgaW14X3RpbWVyICppbXh0bSlcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMC1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzo0MTE6XFx0aW14dG0tXFx1MDAzZWdwdC1cXHUwMDNlZ3B0X3NldHVwX3RjdGwoaW14dG0pO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM9MTU0Nj1zdGF0aWMgdm9pZCBnZnhfdjZfMF9zZXR1cF9zcGkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzQtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYzoxNTc1OiAqIGdmeF92Nl8wX3NldHVwX3RjYygpIC0gc2V0dXAgd2hpY2ggVENDcyBhcmUgdXNlZFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTU3Ni0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk2LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM6MTU5NzpzdGF0aWMgdm9pZCBnZnhfdjZfMF9zZXR1cF90Y2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk4LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM9MTY0ND1zdGF0aWMgdm9pZCBnZnhfdjZfMF9jb25zdGFudHNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTc5Ni1cXHRnZnhfdjZfMF9zZXR1cF9yYihhZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE3OTc6XFx0Z2Z4X3Y2XzBfc2V0dXBfdGNjKGFkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTc5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTEwMDY9c3RhdGljIHZvaWQgaGVsbGNyZWVrX3NldHVwX2NwdV9hbmRfdHVubmVsX3BvcnQoc3RydWN0IGhlbGxjcmVlayAqaGVsbGNyZWVrKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyNy1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxMDI4OnN0YXRpYyB2b2lkIGhlbGxjcmVla19zZXR1cF90Y19pZGVudGl0eV9tYXBwaW5nKHN0cnVjdCBoZWxsY3JlZWsgKmhlbGxjcmVlaylcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xMDI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTEzODE9c3RhdGljIGludCBoZWxsY3JlZWtfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQxOC1cXHQvKiBDb25maWd1cmUgUENQIFxcdTAwM2MtXFx1MDAzZSBUQyBtYXBwaW5nICovXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTQxOTpcXHRoZWxsY3JlZWtfc2V0dXBfdGNfaWRlbnRpdHlfbWFwcGluZyhoZWxsY3JlZWspO1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0MjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xODU3PXN0YXRpYyBpbnQgaGVsbGNyZWVrX3RjX3F1ZXJ5X2NhcHMoc3RydWN0IHRjX3F1ZXJ5X2NhcHNfYmFzZSAqYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE4NzEtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTg3MjpzdGF0aWMgaW50IGhlbGxjcmVla19wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3My1cXHRcXHRcXHRcXHQgICBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTIwLVxcdC5wb3J0X3J4dHN0YW1wXFx0ICAgICAgID0gaGVsbGNyZWVrX3BvcnRfcnh0c3RhbXAsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkyMTpcXHQucG9ydF9zZXR1cF90Y1xcdCAgICAgICA9IGhlbGxjcmVla19wb3J0X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE5MjItXFx0LnBvcnRfc3RwX3N0YXRlX3NldCAgICA9IGhlbGxjcmVla19wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNTI2PWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o4NDYzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTYyLVxcdC5wb3J0X3J4dHN0YW1wXFx0XFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTYzOlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBrc3pfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU2NC1cXHQucG9ydF9nZXRfZGVmYXVsdF9wcmlvXFx0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjU3Mz1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6ODd4eF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxMi1cXHQucG9ydF9yeHRzdGFtcFxcdFxcdD0ga3N6X3BvcnRfcnh0c3RhbXAsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjYxMzpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0ga3N6X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2MTQtXFx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1xcdD0ga3N6X3BvcnRfZ2V0X2RlZmF1bHRfcHJpbyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI2MjM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzejg4eHhfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NjUtXFx0LnBvcnRfcnh0c3RhbXBcXHRcXHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjY6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHQ9IGtzel9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjY3LVxcdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0yMDY1PWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o5NDc3X3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMTEyLVxcdC5jbHNfZmxvd2VyX2RlbFxcdFxcdD0ga3N6OTQ3N19jbHNfZmxvd2VyX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoyMTEzOlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBrc3pfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjExNC1cXHQuc3VwcG9ydF9lZWVcXHRcXHQ9IGtzejk0Nzdfc3VwcG9ydF9lZWUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zMjc4PXN0YXRpYyBpbnQgY2luY19jYWwoczMyIGlkbGVfc2xvcGUsIHMzMiBzZW5kX3Nsb3BlLCB1MzIgKmJ3KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMwOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzA5OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX21vZGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHU4IHNjaGVkdWxlcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzEwLVxcdFxcdFxcdCAgICAgdTggc2hhcGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMxNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzE3OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzMTgtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpxb3B0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNS1cXHRpZiAoIXFvcHQtXFx1MDAzZWVuYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzM2OlxcdFxcdHJldHVybiBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9XUlIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNy1cXHRcXHRcXHRcXHRcXHQgTVRJX1NIQVBJTkdfT0ZGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzNjEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzM2MjpcXHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzM2My1cXHRcXHRcXHRcXHQgTVRJX1NIQVBJTkdfU1JQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM0OTE9c3RhdGljIGludCBrc3pfcXVldWVfc2V0X3N0cmljdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQ5OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozNDk5OlxcdHJldHVybiBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9TVFJJQ1RfUFJJTyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTAwLVxcdFxcdFxcdFxcdCBNVElfU0hBUElOR19PRkYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzUwMz1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfd3JyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTExLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM1MTI6XFx0cmV0ID0ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfV1JSLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM1MTMtXFx0XFx0XFx0XFx0TVRJX1NIQVBJTkdfT0ZGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM2MTk9c3RhdGljIGludCBrc3pfdGNfc2V0dXBfcWRpc2NfZXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NTc6aW50IGtzel9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTgtXFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNjYxLVxcdGNhc2UgVENfU0VUVVBfUURJU0NfQ0JTOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NjI6XFx0XFx0cmV0dXJuIGtzel9zZXR1cF90Y19jYnMoZHMsIHBvcnQsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzY2My1cXHRjYXNlIFRDX1NFVFVQX1FESVNDX0VUUzpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQ0OD1pbnQga3N6X3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDUxOmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NTItXFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz05NTM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzN3hfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTkzLVxcdC5wb3J0X3J4dHN0YW1wXFx0XFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjk5NDpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0ga3N6X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTk1LVxcdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzI3NT1zdGF0aWMgaW50IG10NzUzeF90Y19zZXR1cF9xZGlzY190YmYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzExOnN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMTItXFx0XFx0XFx0ICAgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXQ3NTMwX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4My1cXHQuY29uZHVpdF9zdGF0ZV9jaGFuZ2VcXHQ9IG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM4NDpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0gbXQ3NTN4X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzg1LVxcdC5wb3J0X2hzcl9qb2luXFx0XFx0PSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjAzMz1zdGF0aWMgdm9pZCBmZWxpeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQwLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQxOnN0YXRpYyBpbnQgZmVsaXhfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQyLVxcdFxcdFxcdCAgICAgICBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQ4OlxcdGlmIChmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlcG9ydF9zZXR1cF90YylcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjA0OTpcXHRcXHRyZXR1cm4gZmVsaXgtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfc2V0dXBfdGMoZHMsIHBvcnQsIHR5cGUsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIwNTAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTIzMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBmZWxpeF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjEtXFx0LmNsc19mbG93ZXJfc3RhdHNcXHRcXHQ9IGZlbGl4X2Nsc19mbG93ZXJfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIzNjI6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHRcXHQ9IGZlbGl4X3BvcnRfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjMtXFx0LmRldmxpbmtfc2JfcG9vbF9nZXRcXHRcXHQ9IGZlbGl4X3NiX3Bvb2xfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oPTIyPXN0cnVjdCBmZWxpeF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01Ny1cXHR2b2lkXFx0KCptZGlvX2J1c19mcmVlKShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1ODpcXHRpbnRcXHQoKnBvcnRfc2V0dXBfdGMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oLTU5LVxcdFxcdFxcdFxcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTE2NjI9c3RhdGljIGludCB2c2M5OTU5X3Fvc19wb3J0X21xcHJpbyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3My1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNjc0OnN0YXRpYyBpbnQgdnNjOTk1OV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3NS1cXHRcXHRcXHRcXHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0yNjc4LVxcdC5wb3J0X21vZGVzXFx0XFx0PSB2c2M5OTU5X3BvcnRfbW9kZXMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3OTpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0gdnNjOTk1OV9wb3J0X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2ODAtXFx0LnBvcnRfc2NoZWRfc3BlZWRfc2V0XFx0PSB2c2M5OTU5X3NjaGVkX3NwZWVkX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM9MzA9c3RhdGljIGludCBzamExMTA1X3NldHVwX2JjYXN0X3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM6MTAyOnN0YXRpYyBpbnQgc2phMTEwNV9zZXR1cF90Y19wb2xpY2VyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYy0xMDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM9MTc0PXN0YXRpYyBpbnQgc2phMTEwNV9mbG93ZXJfcG9saWNlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTg1LVxcdGNhc2UgU0pBMTEwNV9LRVlfVEM6XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxODY6XFx0XFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfcG9saWNlcihwcml2LCBleHRhY2ssIGNvb2tpZSwgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jLTE4Ny1cXHRcXHRcXHRcXHRcXHRcXHRrZXktXFx1MDAzZXRjLnBjcCwgcmF0ZV9ieXRlc19wZXJfc2VjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MjE1MT1zdGF0aWMgaW50IHNqYTExMDVfZGVsZXRlX2Nic19zaGFwZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0yMTY4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjIxNjk6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTIxNzAtXFx0XFx0XFx0XFx0c3RydWN0IHRjX2Nic19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYz0yNzUxPXN0YXRpYyBpbnQgc2phMTEwNV9nZXRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzoyNzU2OnN0YXRpYyBpbnQgc2phMTEwNV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1Ny1cXHRcXHRcXHRcXHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0yNzYxLVxcdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjI3NjI6XFx0XFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTI3NjMtXFx0Y2FzZSBUQ19TRVRVUF9RRElTQ19DQlM6XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2NDpcXHRcXHRyZXR1cm4gc2phMTEwNV9zZXR1cF90Y19jYnMoZHMsIHBvcnQsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2NS1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzE0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHNqYTExMDVfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMxNzMtXFx0LnBvcnRfdHh0c3RhbXBcXHRcXHQ9IHNqYTExMDVfcG9ydF90eHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMTc0OlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBzamExMTA1X3BvcnRfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzE3NS1cXHQucG9ydF9taXJyb3JfYWRkXFx0PSBzamExMTA1X21pcnJvcl9hZGQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5jPTQ2Nj1ib29sIHNqYTExMDVfZ2F0aW5nX2NoZWNrX2NvbmZsaWN0cyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTA4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmM6NTA5OmludCBzamExMTA1X3NldHVwX3RjX3RhcHJpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTEwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oPTQxPXN0cnVjdCBzamExMTA1X3Rhc19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmgtNTItXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaDo1MzppbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTU0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaD03Mj1zdHJ1Y3Qgc2phMTEwNV90YXNfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg6NzY6c3RhdGljIGlubGluZSBpbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc3LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKmFkbWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE0MDM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxNDA0Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDA1LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWQgKnFvcHQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQ1NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE0NTY6eXQ5MjF4X2RzYV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE0NTctXFx0XFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQ2MzpcXHRcXHRyZXR1cm4geXQ5MjF4X2RzYV9wb3J0X3NldHVwX3RjX3RiZl9wb3J0KGRzLCBwb3J0LCBxb3B0KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTQ2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDU0ND1zdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwX2RzYShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxNy1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDYxODpzdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwX3RjKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDcwMT1zdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzE0LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0NzE1OlxcdHJlcyA9IHl0OTIxeF9jaGlwX3NldHVwX3RjKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzE2LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDc5OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHl0OTIxeF9kc2Ffc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE2LVxcdC5wb3J0X3BvbGljZXJfYWRkXFx0PSB5dDkyMXhfZHNhX3BvcnRfcG9saWNlcl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MTc6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHQ9IHl0OTIxeF9kc2FfcG9ydF9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDgxOC1cXHQvKiBhY2wgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MjkxOD1zdGF0aWMgaW50IGFpcm9oYV9kZXZfdGNfbWF0Y2hhbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NTQ6c3RhdGljIGludCBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1NS1cXHRcXHRcXHRcXHRcXHR2b2lkICp0eXBlX2RhdGEsIHZvaWQgKmNiX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjUtXFx0Y2FzZSBUQ19TRVRVUF9DTFNGTE9XRVI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTY2OlxcdFxcdHJldHVybiBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKFxcdTAwMjZldGgtXFx1MDAzZXBwZS1cXHUwMDNlZGV2LCB0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2Ny1cXHRjYXNlIFRDX1NFVFVQX0NMU01BVENIQUxMOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NzUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZmxvd19ibG9ja19vZmZsb2FkICpmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3Ni17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc3OlxcdGZsb3dfc2V0dXBfY2JfdCAqY2IgPSBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrX2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3OC1cXHRzdGF0aWMgTElTVF9IRUFEKGJsb2NrX2NiX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTAwPXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTA5LVxcdGNhc2UgVENfU0VUVVBfRlQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTEwOlxcdFxcdHJldHVybiBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrKGRldiwgdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTEtXFx0ZGVmYXVsdDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzExNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFpcm9oYV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI0LVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBhaXJvaGFfZGV2X3NldF9tYWNhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEyNTpcXHQubmRvX3NldHVwX3RjXFx0XFx0PSBhaXJvaGFfZGV2X3RjX3NldHVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02ODE9dm9pZCBhaXJvaGFfcHBlX2NoZWNrX3NrYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTY4Mi1cXHRcXHRcXHQgIHUxNiBoYXNoLCBib29sIHJ4X3dsYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg6NjgzOmludCBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKHN0cnVjdCBhaXJvaGFfcHBlX2RldiAqZGV2LCB2b2lkICp0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjg0LWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE0MDY9c3RhdGljIGludCBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0NDY6aW50IGFpcm9oYV9wcGVfc2V0dXBfdGNfYmxvY2tfY2Ioc3RydWN0IGFpcm9oYV9wcGVfZGV2ICpkZXYsIHZvaWQgKnR5cGVfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNTY1PWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTU3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE1NzU6XFx0cHBlLVxcdTAwM2VkZXYub3BzLnNldHVwX3RjX2Jsb2NrX2NiID0gYWlyb2hhX3BwZV9zZXR1cF90Y19ibG9ja19jYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE1NzYtXFx0cHBlLVxcdTAwM2VkZXYub3BzLmNoZWNrX3NrYiA9IGFpcm9oYV9wcGVfY2hlY2tfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xODkwPXN0YXRpYyB2b2lkIHhnYmVfcG9sbF9jb250cm9sbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxOTEzOnN0YXRpYyBpbnQgeGdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5MTQtXFx0XFx0XFx0IHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1MS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTI6XFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0geGdiZV9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTMtXFx0Lm5kb19maXhfZmVhdHVyZXNcXHQ9IHhnYmVfZml4X2ZlYXR1cmVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jPTM0Mj1zdGF0aWMgaW50IGFxX3ZhbGlkYXRlX21xcHJpb19vcHQoc3RydWN0IGFxX25pY19zICpzZWxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTM2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmM6MzY5OnN0YXRpYyBpbnQgYXFfbmRvX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zNzAtXFx0XFx0XFx0ICAgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTM5My1cXHRcXHRcXHRkb19kaXYobWF4X3JhdGUsIEFRX01CUFNfRElWSVNPUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM5NDpcXHRcXHRcXHRhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoYXFfbmljLCBpLCAodTMyKW1heF9yYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtMzk1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDAtXFx0XFx0XFx0ZG9fZGl2KG1pbl9yYXRlLCBBUV9NQlBTX0RJVklTT1IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDE6XFx0XFx0XFx0YXFfbmljX3NldHVwX3RjX21pbl9yYXRlKGFxX25pYywgaSwgKHUzMiltaW5fcmF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQwMi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDU6XFx0cmV0dXJuIGFxX25pY19zZXR1cF90Y19tcXByaW8oYXFfbmljLCBtcXByaW8tXFx1MDAzZXFvcHQubnVtX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDYtXFx0XFx0XFx0XFx0ICAgICAgbXFwcmlvLVxcdTAwM2Vxb3B0LnByaW9fdGNfbWFwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NjktXFx0Lm5kb192bGFuX3J4X2tpbGxfdmlkID0gYXFfbmRvX3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjQ3MDpcXHQubmRvX3NldHVwX3RjID0gYXFfbmRvX3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NzEtXFx0Lm5kb19icGYgPSBhcV94ZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYz0xNjE3PWludCBhcV9uaWNfc2V0X21lZGlhX2RldGVjdChzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGludCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jOjE2NDI6aW50IGFxX25pY19zZXR1cF90Y19tcXByaW8oc3RydWN0IGFxX25pY19zICpzZWxmLCB1MzIgdGNzLCB1OCAqcHJpb190Y19tYXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTY0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jOjE2OTI6aW50IGFxX25pY19zZXR1cF90Y19tYXhfcmF0ZShzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGNvbnN0IHVuc2lnbmVkIGludCB0YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkzLVxcdFxcdFxcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTcxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNzEyOmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTcxMy1cXHRcXHRcXHQgICAgIGNvbnN0IHUzMiBtaW5fcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oPTIxND12b2lkIGFxX25pY19yZWxlYXNlX2ZpbHRlcihzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGVudW0gYXFfcnhfZmlsdGVyX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuaC0yMTUtXFx0XFx0XFx0ICAgdTMyIGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuaDoyMTY6aW50IGFxX25pY19zZXR1cF90Y19tcXByaW8oc3RydWN0IGFxX25pY19zICpzZWxmLCB1MzIgdGNzLCB1OCAqcHJpb190Y19tYXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxNzppbnQgYXFfbmljX3NldHVwX3RjX21heF9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oLTIxOC1cXHRcXHRcXHQgICAgIGNvbnN0IHUzMiBtYXhfcmF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmg6MjE5OmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjIwLVxcdFxcdFxcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTE5NTQ9dm9pZCBibngyeF9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMTk4OS0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjE5OTA6ICogYm54Mnhfc2V0dXBfdGMoKSB0YWtlcyBjYXJlIG9mIHRoZSBwcm9wZXIgVEMgbWFwcGluZ3Mgc28gdGhhdCBfX3NrYl90eF9oYXNoKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTkxLSAqIHdpbGwgcmV0dXJuIGEgcHJvcGVyIFR4IGluZGV4IGlmIFRDIGlzIGVuYWJsZWQgKG5ldGRldi1cXHUwMDNlbnVtX3RjIFxcdTAwM2UgMCkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0yNjI2PWludCBibngyeF9uaWNfbG9hZChzdHJ1Y3QgYm54MnggKmJwLCBpbnQgbG9hZF9tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjcxMi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyNzEzOlxcdGJueDJ4X3NldHVwX3RjKGJwLVxcdTAwM2VkZXYsIGJwLVxcdTAwM2VtYXhfY29zKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yNzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM9NDIxMT12b2lkIGJueDJ4X2dldF9jMnNfbWFwcGluZyhzdHJ1Y3QgYm54MnggKmJwLCB1OCAqYzJzX21hcCwgdTggKmMyc19kZWZhdWx0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI0Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzo0MjQ3OiAqIGJueDJ4X3NldHVwX3RjIC0gcm91dGluZSB0byBjb25maWd1cmUgbmV0X2RldmljZSBmb3IgbXVsdGkgdGNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjUxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1MjogKiBjYWxsYmFjayBjb25uZWN0ZWQgdG8gdGhlIG5kb19zZXR1cF90YyBmdW5jdGlvbiBwb2ludGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzo0MjU0OmludCBibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBudW1fdGMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjQzMTc6aW50IF9fYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMxOC1cXHRcXHQgICAgIHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTQzMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDMyNzpcXHRyZXR1cm4gYm54Mnhfc2V0dXBfdGMoZGV2LCBtcXByaW8tXFx1MDAzZW51bV90Yyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMyOC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaD00ODc9bmV0ZGV2X3R4X3QgYm54Mnhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6NDg5Oi8qIHNldHVwX3RjIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6NDkwOmludCBibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBudW1fdGMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MTppbnQgX19ibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00OTItXFx0XFx0ICAgICB2b2lkICp0eXBlX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjM2PXN0YXRpYyB2b2lkIGJueDJ4X3NwX3J0bmxfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAzMDItXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTlgyWF9TUF9SVE5MX1NFVFVQX1RDLCBcXHUwMDI2YnAtXFx1MDAzZXNwX3J0bmxfc3RhdGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDMwMzpcXHRcXHRibngyeF9zZXR1cF90YyhicC1cXHUwMDNlZGV2LCBicC1cXHUwMDNlZGNieF9wb3J0X3BhcmFtcy5ldHMubnVtX29mX2Nvcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMzA0LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5YMlhfU1BfUlROTF9BRkVYX0ZfVVBEQVRFLCBcXHUwMDI2YnAtXFx1MDAzZXNwX3J0bmxfc3RhdGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAyMS1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IGJueDJ4X3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMDIyOlxcdC5uZG9fc2V0dXBfdGNcXHRcXHQ9IF9fYm54Mnhfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDIzLSNpZmRlZiBDT05GSUdfQk5YMlhfU1JJT1ZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1NjI0PWludCBibnh0X3NldHVwX21xX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHRjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU2Njk6c3RhdGljIGludCBibnh0X3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NzAtXFx0XFx0XFx0XFx0ICB2b2lkICpjYl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU2ODY9TElTVF9IRUFEKGJueHRfYmxvY2tfY2JfbGlzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2ODctXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjI4LjgzNzg5OTM3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3OTI4NzQ0NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBUcmFmZmljIENsYXNzIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb25maWd1cmluZyBUcmFmZmljIENsYXNzZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBkcml2ZXJzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBiZSBhd2FyZSBvZiBoZXJlIGFyZSBgbmdiZV9zZXR1cF90Y2AgYW5kIGB0eGdiZV9zZXR1cF90Y2AuIEltbWVkaWF0ZWx5LCBteSBtZW50YWwgbWFwIHN0YXJ0cyB0byBvcmdhbml6ZS4gSSBrbm93IHRoZXNlIGFyZSBsaWtlbHkgc3BlY2lmaWMgdG8gY2VydGFpbiBJbnRlbCBOSUNzLCBwb3NzaWJseSBnZW5lcmF0aW9uLXNwZWNpZmljLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5nYmVfc2V0dXBfdGNgIGZpcnN0LiBUaGF04oCZcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gRXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSBjb3JlIGxvZ2ljIHVzZWQgdG8gaGFuZGxlIHRyYWZmaWMgY2xhc3MgY29uZmlndXJhdGlvbiBmb3Igd2hhdGV2ZXIgc3BlY2lmaWMgSW50ZWwgTklDIGZhbWlseSBgbmdiZWAgcmVmZXJzIHRvLCBhbmQgY291bGQgaW5mb3JtIGhvdyB0aGF0IHRyYW5zbGF0ZXMgb3IgZGlmZmVycyBmb3Igb3RoZXIgTklDcy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODIwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MzYuNjMwNzc2NTk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTUyODMxMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5nYmVfc2V0dXBfdGNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTg5PXN0YXRpYyBpbnQgbmdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtMTM0LVxcdHd4LVxcdTAwM2VtYnguc2l6ZSA9IFdYX1ZYTUFJTEJPWF9TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzoxMzU6XFx0d3gtXFx1MDAzZXNldHVwX3RjID0gbmdiZV9zZXR1cF90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtMTM2LVxcdHNldF9iaXQoMCwgXFx1MDAyNnd4LVxcdTAwM2Vmd2RfYml0bWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9NTYxPXN0YXRpYyB2b2lkIG5nYmVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTc2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1Nzc6ICogbmdiZV9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpcGxlIHRyYWZmaWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTc4LSAqIGNsYXNzZXMuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTgyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1ODM6aW50IG5nYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTU4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmg9MTI2PXZvaWQgbmdiZV91cChzdHJ1Y3Qgd3ggKnd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmg6MTI3OmludCBuZ2JlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHRjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmgtMTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDozOC43ODM2MTM3NzdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDU0MTc4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUklPViBSZWluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGB3eGAgZHJpdmVyJ3MgU1JJT1YgcmVpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBgd3gtXHUwMDNlc2V0dXBfdGNgIGlzIHBvaW50aW5nIHRvIGBuZ2JlX3NldHVwX3RjYC4gV2hlbiBgd3hfc3Jpb3ZfcmVpbml0YCBnZXRzIGNhbGxlZCwgaXQgY2FsbHMgYHd4LVx1MDAzZXNldHVwX3RjYCwgd2hpY2ggd2Uga25vdyBpcyBgbmdiZV9zZXR1cF90Y2AuIFRoZW4sIGBuZ2JlX3NldHVwX3RjYCBkaXZlcyBkZWVwZXIgYW5kIGNhbGxzIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLiBGcm9tIHRoZXJlLCBpdCBtb3ZlcyBpbnRvIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIGFuZCB0aGF0J3Mgd2hlcmUgYHd4X3NldF92bWRxX3F1ZXVlc2AgZ2V0cyBpbnZva2VkLiBJJ20gZm9jdXNpbmcgb24gYHd4X3NldF92bWRxX3F1ZXVlc2Agbm93LiBJIHNlZSB0aGF0IGl0IGNoZWNrcyBpZiBgV1hfRkxBR19WTURRX0VOQUJMRURgIGlzIHNldCwgYW5kIHNpbmNlIGBfX3d4X2VuYWJsZV9zcmlvdmAgc2V0cyB0aGlzIGZsYWcsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHNob3VsZCBwcm9jZWVkIHdpdGhvdXQgaXNzdWUgaW4gdGhhdCBjYXNlLiBOb3csIEkgc2VlIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBzb21ldGhpbmcgaW4gdGhlIGBlbHNlYCBicmFuY2ggb2YgYGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlgLiBUaW1lIHRvIGNoZWNrIGlmIHRoZSBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCBmbGFnIGlzIHNldC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggbWF5IGJlIGNoYW5naW5nIGFuIGVkZ2UgY2FzZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYwOCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDo0OS43MjkwMzM2NzRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk4NDE1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV1hfRkxBR19NVUxUSV82NF9GVU5DXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jPTQ5OT1zdGF0aWMgdW5zaWduZWQgaW50IHd4X21heF9jaGFubmVscyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA3LVxcdFxcdC8qIHN1cHBvcnQgdXAgdG8gbWF4IGFsbG93ZWQgcXVldWVzIHdpdGggUlNTICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmM6NTA4OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA5LVxcdFxcdFxcdG1heF9jb21iaW5lZCA9IDYzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTEwOT1zdGF0aWMgdm9pZCB3eF9pbnRyX2Rpc2FibGUoc3RydWN0IHd4ICp3eCwgdTY0IHFtYXNrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTExNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTE3OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTE4LVxcdFxcdG1hc2sgPSAocW1hc2sgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTEyND12b2lkIHd4X2ludHJfZW5hYmxlKHN0cnVjdCB3eCAqd3gsIHU2NCBxbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjEzNzpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTEzOC1cXHRcXHRtYXNrID0gKHFtYXNrIFxcdTAwM2VcXHUwMDNlIDMyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz03NTY9c3RhdGljIGludCB3eF9zZXRfcmFyKHN0cnVjdCB3eCAqd3gsIHUzMiBpbmRleCwgdTggKmFkZHIsIHU2NCBwb29scyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy03NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjc3NDpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy03NzUtXFx0XFx0d3IzMih3eCwgV1hfUFNSX01BQ19TV0NfVk1fSCwgcG9vbHMgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTg5Mj12b2lkIHd4X2luaXRfcnhfYWRkcnMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy05MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjkxMzpcXHRcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxNC1cXHRcXHRcXHQvKiBjbGVhciBWTURxIHBvb2wvcXVldWUgc2VsZWN0aW9uIGZvciBSQVIgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTE0ODQ9c3RhdGljIHZvaWQgd3hfY29uZmlndXJlX3ZpcnR1YWxpemF0aW9uKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTUwMTpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTAyLVxcdFxcdHZmX3NoaWZ0ID0gQklUKFZNRFFfUCgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE1MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MzI6XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzMy1cXHRcXHR2YWx1ZSA9ICh3eC1cXHUwMDNlbnVtX3ZmcyA9PSAwKSA/XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA1ND12b2lkIHd4X3N0b3JlX3JldGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMDY3LVxcdFxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjA2ODpcXHRcXHRcXHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMDY5LVxcdFxcdFxcdFxcdHdyMzIod3gsIFdYX1JEQl9WTVJTU1RCTChpIFxcdTAwM2VcXHUwMDNlIDIsIHd4LVxcdTAwM2VudW1fdmZzKSwgcmV0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA3Nz12b2lkIHd4X3N0b3JlX3Jzc2tleShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODItXFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoyMDgzOlxcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjA4NC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mga2V5X3NpemU7IGkrKylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMDkzPXN0YXRpYyB2b2lkIHd4X3NldHVwX3JldGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTA2LVxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjEwNzpcXHRcXHRcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTA4LVxcdFxcdFxcdFxcdHJzc19pID0gcnNzX2kgXFx1MDAzYyAyID8gMiA6IHJzc19pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIxMjQ9dm9pZCB3eF9jb25maWdfcnNzX2ZpZWxkKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjEyOC1cXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMjk6XFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTMwLVxcdFxcdHJzc19maWVsZCA9IHJkMzIod3gsIFdYX1JEQl9QTF9DRkcod3gtXFx1MDAzZW51bV92ZnMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTQ5PXZvaWQgd3hfZW5hYmxlX3JzcyhzdHJ1Y3Qgd3ggKnd4LCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTUxLVxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjE1MjpcXHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTMtXFx0XFx0aWYgKGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTcwPXN0YXRpYyB2b2lkIHd4X3NldHVwX3BzcnR5cGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoyMTgyOlxcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxODMtXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChwb29sLCBcXHUwMDI2d3gtXFx1MDAzZWZ3ZF9iaXRtYXNrLCA4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4NzpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg4LVxcdFxcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4NDI9c3RhdGljIHZvaWQgd3hfc2V0X3Jzc19xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg0Ny1cXHRmID0gXFx1MDAyNnd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODQ4OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODQ5LVxcdFxcdGYtXFx1MDAzZW1hc2sgPSBXWF9SU1NfNjRRX01BU0s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDE1OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTYtXFx0XFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yNTE4PXZvaWQgd3hfY29uZmlndXJlX3ZlY3RvcnMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjUyNS1cXHRcXHQvKiBQb3B1bGF0ZSBNU0lYIHRvIEVJVFIgU2VsZWN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyNTI2OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTI1MjctXFx0XFx0XFx0aWYgKHd4LVxcdTAwM2VudW1fdmZzIFxcdTAwM2U9IDMyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjExMTpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTItXFx0XFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NTgxPXN0YXRpYyBpbnQgd3hfc2V0X3ZmX3ZsYW5fbXNnKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MTYgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjE5LVxcdFxcdFxcdGJpdHMgXFx1MDAyNj0gfkJJVChWTURRX1AoMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2MjA6XFx0XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjIxLVxcdFxcdFxcdFxcdGJpdHMgfD0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIzOlxcdFxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTYyNC1cXHRcXHRcXHRcXHRiaXRzID0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTg2NT12b2lkIHd4X2Rpc2FibGVfdmZfcnhfdHgoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NjgtXFx0d3IzMih3eCwgV1hfUkRNX1ZGUkVfQ0xSKDApLCBVMzJfTUFYKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY5OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODcwLVxcdFxcdHdyMzIod3gsIFdYX1RETV9WRlRFX0NMUigxKSwgVTMyX01BWCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMjU3PWVudW0gd3hfcGZfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjEyNTg6XFx0V1hfRkxBR19NVUxUSV82NF9GVU5DLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXFx0V1hfRkxBR19TV0ZXX1JJTkcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz0zNTI9c3RhdGljIGludCB0eGdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTItXFx0c2V0X2JpdChXWF9GTEFHX1JTQ19FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjM5MzpcXHRzZXRfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjUyLjM0ODg3ODYyNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4Mjc5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipEZWx2aW5nIGludG8gRHJpdmVyIEluaXRpYWxpemF0aW9uIERpZmZlcmVuY2VzKipcblxuUmlnaHQsIHNvIEkndmUgc3R1bWJsZWQgdXBvbiBhIGNydWNpYWwgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgYHR4Z2JlYCBhbmQgYG5nYmVgIGRyaXZlcnMuIEkgc2VlIHRoYXQgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gYHR4Z2JlX3N3X2luaXRgLCBidXQgbm90IGluIGBuZ2JlX3N3X2luaXRgLiBUaGF0J3MgaW1tZWRpYXRlbHkgZmxhZ2dlZCBhcyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgZGlmZmVyZW50IGJlaGF2aW9yIGJldHdlZW4gdGhlIHR3bywgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgYG5nYmVfc3dfaW5pdGAgZnVuY3Rpb24gc3BlY2lmaWNhbGx5LCBhbmQgdW5kZXJzdGFuZCBwcmVjaXNlbHkgKndoeSogdGhhdCBmbGFnIGlzbid0IGJlaW5nIHNldCB0aGVyZS4gSXQgY291bGQgYmUgaW50ZW50aW9uYWwsIG9yIGl0IGNvdWxkIGJlIGEgc3VidGxlIG9taXNzaW9uIHRoYXQncyBjYXVzaW5nIGEgcHJvYmxlbSBkb3duIHRoZSBsaW5lLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mICp0aGF0KiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0cyBjaG9pY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA3MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjU1LjY5NzE2MjA1MloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NjA1NjY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZ2JlX3N3X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTUzPXN0YXRpYyB2b2lkIG5nYmVfaW5pdF90eXBlX2NvZGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODY6ICogbmdiZV9zd19pbml0IC0gSW5pdGlhbGl6ZSBnZW5lcmFsIHNvZnR3YXJlIHN0cnVjdHVyZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODctICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTg4LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODk6c3RhdGljIGludCBuZ2JlX3N3X2luaXQoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTYzOD1zdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNzI1LVxcdC8qIHNldHVwIHRoZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo3MjY6XFx0ZXJyID0gbmdiZV9zd19pbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNzI3LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjU3Ljk2MzIyOTg3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTYxMjEzMjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2ggaW4gYG5nYmVgIGFuZCBpdHMgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGVsc2VgIGJyYW5jaCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AsIGFuZCBJIGtub3cgdGhhdCBgbmdiZWAgZG9lc24ndCBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AuIFRoYXQgbWVhbnMgdGhlIGB0ZXN0X2JpdGAgY2hlY2sgZm9yIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIHdpbGwgYWx3YXlzIGJlIGZhbHNlIGluIGBuZ2JlYCwgbWFraW5nIHRoYXQgYGVsc2VgIGJyYW5jaCByZWFjaGFibGUsIGFzc3VtaW5nIFZNRFEgaXMgZW5hYmxlZC4gUmlnaHQsIFZNRFEgaXMgZW5hYmxlZCB3aGVuIFNSSU9WIGlzIGVuYWJsZWQuIEFuZCBob3cgZG8gd2UgZW5hYmxlIFNSSU9WPyBUaHJvdWdoIGBzcmlvdl9udW12ZnNgIHN5c2ZzIGVudHJpZXMuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IGBzcmlvdl9udW12ZnNgPyBZZXMsIGl0IGRvZXMgaGF2ZSBzeXNmcyBmdXp6aW5nIGNhcGFiaWxpdGllcy4gT2theSwgdGhhdCdzIGNydWNpYWwuIEkgYWxzbyBrbm93IHRoYXQgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIGJ1dCBvbmx5IGlmIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LCBhbmQgdGhhdCBvbmx5IGhhcHBlbnMgZHVyaW5nIFNSSU9WIGVuYWJsZW1lbnQuXG5cbkxldCdzIHRyYWNlIHRoZSBjYWxsIHBhdGg6IGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuIFdoZW4gYHNyaW92X251bXZmc2AgaXMgd3JpdHRlbiwgYHd4X3BjaV9zcmlvdl9lbmFibGVgIGlzIGNhbGxlZCwgd2hpY2ggdGhlbiBpbnZva2VzIGBfX3d4X2VuYWJsZV9zcmlvdmAuIFRoaXMgZnVuY3Rpb24gc2V0cyBgV1hfRkxBR19WTURRX0VOQUJMRURgLiBUaGVuLCBgd3hfc3Jpb3ZfcmVpbml0YCBpcyBjYWxsZWQsIHdoaWNoIGNhbGxzIGB3eC1cdTAwM2VzZXR1cF90Y2AsIGxlYWRpbmcgdG8gYG5nYmVfc2V0dXBfdGNgLiBUaGlzIHVsdGltYXRlbHkgY2FsbHMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgLVx1MDAzZSBgd3hfc2V0X251bV9xdWV1ZXNgIC1cdTAwM2UgYHd4X3NldF92bWRxX3F1ZXVlc2AuIFNvLCB5ZXMsIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoYXQgYGVsc2VgIGJyYW5jaCAqaXMqIHJlYWNoYWJsZSBpbiBgbmdiZWAuXG5cblNvLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBgdm1kcV9tYCBpcyBiZWluZyBleHBsaWNpdGx5IHNldCB0byBgV1hfVk1EUV8xUV9NQVNLYCBpbnN0ZWFkIG9mIHN0YXlpbmcgYXQgemVyby4gVGhpcyBtYXNrIGlzIHRoZW4gc2F2ZWQgdG8gYHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoZSBtYXNrIGl0c2VsZiBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlLiBOb3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBgd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiByaW5nIGNvbmZpZ3VyYXRpb24sIHNvIEkgc2hvdWxkIGxvb2sgYXQgYHd4X2NvbmZpZ3VyZV9yeF9yaW5nYCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB0byBzZWUgaG93IHRoZSBtYXNrIGlzIGJlaW5nIHVzZWQgZHVyaW5nIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBvciBxdWV1ZSBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MjUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTE6MTMuNTc1MzY0Mzg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDg3ODgzMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJJTkdfRl9WTURRXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg9MTQ4PWVudW0gaXhnYmVfdHhfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzUtI2RlZmluZSBJWEdCRV9NQVhfUEZfTUFDVkxBTlMgICAgICAgICAgIDE1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDoxNzY6I2RlZmluZSBWTURRX1AocCkgICAoKHApICsgYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzctI2RlZmluZSBJWEdCRV84MjU5OV9WRl9ERVZJQ0VfSUQgICAgICAgIDB4MTBFRFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaD00MDk9ZW51bSBpeGdiZV9yaW5nX2ZfZW51bSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTAtXFx0UklOR19GX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg6NDExOlxcdFJJTkdfRl9WTURRLCAgLyogU1ItSU9WIHVzZXMgdGhlIHNhbWUgcmluZyBmZWF0dXJlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTItXFx0UklOR19GX1JTUyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjEtI2VuZGlmIC8qIElYR0JFX0ZDT0UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMjpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0xODQ9c3RhdGljIGJvb2wgaXhnYmVfY2FjaGVfcmluZ19zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE4OC0jZW5kaWYgLyogSVhHQkVfRkNPRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjE4OTpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMTkwLVxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0zMjY9c3RhdGljIGJvb2wgaXhnYmVfc2V0X2RjYl9zcmlvdl9xdWV1ZXMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMjgtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzI5OlxcdHUxNiB2bWRxX2kgPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTMzMC1cXHR1MTYgdm1kcV9tID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0Ny1cXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNDg6XFx0dm1kcV9pICs9IGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2NS1cXHQvKiByZW1vdmUgdGhlIHN0YXJ0aW5nIG9mZnNldCBmcm9tIHRoZSBwb29sIGNvdW50ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzY2OlxcdHZtZHFfaSAtPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzY4LVxcdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2OTpcXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzcwOlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9IHZtZHFfbTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz01MDA9c3RhdGljIGJvb2wgaXhnYmVfc2V0X3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MDEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUwMjpcXHR1MTYgdm1kcV9pID0gYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MDMtXFx0dTE2IHZtZHFfbSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTctXFx0LyogQWRkIHN0YXJ0aW5nIG9mZnNldCB0byB0b3RhbCBwb29sIGNvdW50ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTE4OlxcdHZtZHFfaSArPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDEtXFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0MjpcXHR2bWRxX2kgLT0gYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTU0NC1cXHQvKiBzYXZlIGZlYXR1cmVzIGZvciBsYXRlciB1c2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1NDU6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5pbmRpY2VzID0gdm1kcV9pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0NjpcXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTM5OTQ9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfbXRxYyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00MDE0LVxcdFxcdFxcdG10cWMgfD0gSVhHQkVfTVRRQ19SVF9FTkEgfCBJWEdCRV9NVFFDXzRUQ180VFE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQwMTU6XFx0XFx0ZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQwMTYtXFx0XFx0XFx0IElYR0JFXzgyNTk5X1ZNRFFfNFFfTUFTSylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00MzY3PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX21ycWMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDM4OC1cXHRcXHRcXHRcXHRtcnFjID0gSVhHQkVfTVJRQ19WTURRUlQ0VENFTjtcXHQvKiA0IFRDcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo0Mzg5OlxcdFxcdFxcdGVsc2UgaWYgKGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9PVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00MzkwLVxcdFxcdFxcdFxcdCBJWEdCRV84MjU5OV9WTURRXzRRX01BU0spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NDYyND1zdGF0aWMgdm9pZCBpeGdiZV9jb25maWd1cmVfdmlydHVhbGl6YXRpb24oc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY2OS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NDY3MDpcXHRzd2l0Y2ggKGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzaykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00NjcxLVxcdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTYxMjg9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfZ3BpZShzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02MTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2MTY4OlxcdFxcdHN3aXRjaCAoYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjktXFx0XFx0Y2FzZSBJWEdCRV84MjU5OV9WTURRXzhRX01BU0s6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9Njg3NT1zdGF0aWMgaW50IGl4Z2JlX3N3X2luaXQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNjkwNS1cXHRhZGFwdGVyLVxcdTAwM2VmZGlyX3BiYWxsb2MgPSBJWEdCRV9GRElSX1BCQUxMT0NfNjRLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2OTA2OlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02OTA3LSNpZmRlZiBDT05GSUdfSVhHQkVfRENBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9ODIzNj1zdGF0aWMgYm9vbCBpeGdiZV92Zl90eF9wZW5kaW5nKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyMzgtXFx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6ODIzOTpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyNDAtXFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwMDg5PXN0YXRpYyBpbnQgaGFuZGxlX3JlZGlyZWN0X2FjdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgaW50IGlmaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAwOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMDA5MjpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwMDkzLVxcdHVuc2lnbmVkIGludCBudW1fdmZzID0gYWRhcHRlci1cXHUwMDNlbnVtX3ZmcywgdmY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTA1MTk9c3RhdGljIHZvaWQgaXhnYmVfcmVzZXRfbDJmd19vZmZsb2FkKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI0LVxcdC8qIGdvIGJhY2sgdG8gZnVsbCBSU1MgaWYgd2UncmUgbm90IHJ1bm5pbmcgU1ItSU9WICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwNTI1OlxcdGlmICghYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI2LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH4oSVhHQkVfRkxBR19WTURRX0VOQUJMRUQgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI5LVxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IHJzcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA1MzA6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwNzQwPXN0YXRpYyB2b2lkICppeGdiZV9md2RfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDgwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA4MDY6XFx0XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCArPSByZXNlcnZlZF9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTA4MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTUxPXN0YXRpYyBpbnQgX19peGdiZV9lbmFibGVfc3Jpb3Yoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTczLVxcdGl4Z2JlX2FsbG9jX3ZmX21hY3ZsYW5zKGFkYXB0ZXIsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6NzQ6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTIwNT1pbnQgaXhnYmVfZGlzYWJsZV9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MjY2OlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTI2Ny1cXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTY5OT1zdGF0aWMgaW5saW5lIHZvaWQgaXhnYmVfdmZfcmVzZXRfZXZlbnQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAxLVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo3MDI6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVxcdHN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2UgKnZmaW5mbyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2ZmluZm9bdmZdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz04MDk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3dyaXRlX3FkZShzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTItXFx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxMzpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTQtXFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz04ODE9c3RhdGljIGludCBpeGdiZV92Zl9yZXNldF9tc2coc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTg4Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODM6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODg0LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTEwNjI9c3RhdGljIGludCBpeGdiZV9nZXRfdmZfcXVldWVzKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xMDY1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDY2OlxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwNjctXFx0dW5zaWduZWQgaW50IGRlZmF1bHRfdGMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xNjk5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjE3MDA6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTcwMS1cXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzc2OlxcdHUxNiB2bWRxX2kgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3NzctXFx0dTE2IHJzc19pID0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4NC1cXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE3ODU6XFx0dm1kcV9pICs9IHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTMtXFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTgxNDpcXHR2bWRxX2kgLT0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTgxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTYtXFx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE3OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE4OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yMDA0PXN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAwNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDA2OlxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA3LVxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTQ5PXN0YXRpYyB2b2lkIHd4X3NyaW92X2NsZWFyX2RhdGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02My1cXHR3cjMybSh3eCwgV1hfUFNSX1ZNX0NUTCwgV1hfUFNSX1ZNX0NUTF9QT09MX01BU0ssIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2NDpcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02OC1cXHQvKiBEaXNhYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gTk0gbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2OTpcXHRpZiAod3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPT0gMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNzAtXFx0XFx0Y2xlYXJfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NS1cXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NjpcXHRpZiAoIXd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NzpcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjg4OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldCA9IG51bV92ZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI3OD1zdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyODA6XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMjgxLVxcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0MTpcXHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNnd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDItXFx0dW5zaWduZWQgaW50IGRlZmF1bHRfdGMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MzkzPWVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtNTU3LSNkZWZpbmUgV1hfTUFYX0pVTUJPX0ZSQU1FX1NJWkUgICAgICA5NDMyIC8qIG1heCBwYXlsb2FkIDk0MTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDo1NTg6I2RlZmluZSBWTURRX1AocCkgICAgICAgKChwKSArIHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaC01NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMTM5PWVudW0gd3hfcmluZ19mX2VudW0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTExNDAtXFx0UklOR19GX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjExNDE6XFx0UklOR19GX1ZNRFEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTE0Mi1cXHRSSU5HX0ZfUlNTLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MToxNi4wNjMyNTIzNThaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyMjQ1MTg2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBRdWV1ZSBNYW5hZ2VtZW50IGluIFd4V2lkZ2V0cyoqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoaXMgcmVmZXJlbmNlIHRvIGB3eF93cml0ZV9xZGVgIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBzdGFydHMgcnVubmluZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBpbnZvbHZlZCBpbiBxdWV1ZSBtYW5hZ2VtZW50LCBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIFd4V2lkZ2V0cy4gVGhlIGZhY3QgdGhhdCBgd3hfd3JpdGVfcWRlYCBpcyBtZW50aW9uZWQgZmlyc3Qgc3VnZ2VzdHMgdGhhdCBpdCdzIHByb2JhYmx5IHRoZSBtb3JlIGltcG9ydGFudCBvZiB0aGUgdHdvIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCAtIG9mdGVuLCB3cml0ZXMgYXJlIG1vcmUgY3JpdGljYWwgdGhhbiByZWFkcyB3aGVuIGNvbnNpZGVyaW5nIHJlc291cmNlIGNvbnRlbnRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy5cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGB3eF93cml0ZV9xZGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgcXVldWUgZGF0YSBzdHJ1Y3R1cmVzLCB3aGF0IHByb3RlY3Rpb25zIGl0IGhhcyBmb3IgY29uY3VycmVudCBhY2Nlc3MgKG11dGV4ZXMsIHNlbWFwaG9yZXMsIGV0Yy4pLCBhbmQgd2hhdCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIGFyZS4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zOiBJcyB0aGlzIGEgYmxvY2tpbmcgd3JpdGU/IFdoYXQgaGFwcGVucyBvbiBxdWV1ZSBvdmVyZmxvdz8gRG9lcyBpdCBoYXZlIGFueSBpbXBsaWNhdGlvbnMgZm9yIHRocmVhZCBzeW5jaHJvbml6YXRpb24/XG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd3JpdGVzIGFyZSBwZXJtaXR0ZWQsIGlmIGFueS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGRhdGEgaXMgbWFyc2hhbGxlZCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGxvY2tzIGFyZSBpbiBwbGFjZSB3aGVuIHRoZSBxdWV1ZSBpcyBwb3B1bGF0ZWQuIEknbSBnb2luZyB0byBsb29rIGF0IHRoYXQgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbiB2ZXJ5IGNhcmVmdWxseSB0byBiZSBzdXJlIGl0J3MgdGhyZWFkLXNhZmUuIEknbSBhbHNvIGdvaW5nIHRvIGNoZWNrIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHdoZXJlIHRoZSBxdWV1ZSBpcyB0b3VjaGVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLCB0b28uIEtub3dpbmcgdGhlIHdyaXRlIGJlaGF2aW9yIHdpbGwgaGVscCBtZSBhbnRpY2lwYXRlIHJlYWQtc2lkZSBpc3N1ZXMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3NjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MToyOC4yODc3NzM0MTdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDk0NDg3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfd3JpdGVfcWRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0yNjU9c3RhdGljIHZvaWQgd3hfc2V0X3ZsYW5fYW50aV9zcG9vZmluZyhzdHJ1Y3Qgd3ggKnd4LCBib29sIGVuYWJsZSwgaW50IHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6Mjc4OnN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9MzkyPXN0YXRpYyB2b2lkIHd4X3ZmX3Jlc2V0X21zZyhzdHJ1Y3Qgd3ggKnd4LCB1MTYgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDExLVxcdC8qIGZvcmNlIGRyb3AgZW5hYmxlIGZvciBhbGwgVkYgUnggcXVldWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjQxMjpcXHR3eF93cml0ZV9xZGUod3gsIHZmLCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MTozMC40OTcyMjcwNjNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMyNjQ3NTQxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFZpcnR1YWwgRnVuY3Rpb24gUXVldWUgUmV0cmlldmFsKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgcmV0cmlldmluZyBhbmQgbWFuYWdpbmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gcXVldWVzIHJlc2lkZXMsIGFuZCBpcyB0aGUgbGlrZWx5IGVwaWNlbnRlciBvZiBhbnkgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbCBpc3N1ZXMuIEknbSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoZSBwYXJhbWV0ZXJzIGl0IGFjY2VwdHMgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMuIE15IGZpcnN0IHByaW9yaXR5IHdpbGwgYmUgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmdW5jdGlvbiBoYW5kbGVzIHJlc291cmNlIGNvbnRlbnRpb24gZ3JhY2VmdWxseSBhbmQgdGhhdCB0aGUgcmV0dXJuZWQgc3RydWN0dXJlcyBhcmUgdGhyZWFkLXNhZmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgd2UncmUgc2VlaW5nIGFueSB1bmV4cGVjdGVkIHJldHVybiBjb2RlcyBvciByYWNlIGNvbmRpdGlvbnMgYXJvdW5kIHF1ZXVlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIGFueSBwZXJmb3JtYW5jZSBtZXRyaWNzLCBsaWtlIGxhdGVuY3kgb3IgdGhyb3VnaHB1dCwgd2l0aCB0aGUgYWN0aW9ucyB0YWtlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgbGlrZSBleGNlc3NpdmUgbG9ja2luZyBvciBpbmVmZmljaWVudCBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBGaW5hbGx5LCBJJ2xsIHJldmlldyBhbnkgcmVsYXRlZCBlcnJvciBoYW5kbGluZyB0byBlbnN1cmUgcm9idXN0bmVzcyBhbmQgdGhhdCB3ZSdyZSBwcm9wZXJseSBsb2dnaW5nIGZhaWx1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzUwOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUxOjUzLjc2MTk4NDExM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5MTE3ODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9nZXRfdmZfcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMTI9c3RhdGljIHZvaWQgd3hfc2V0X3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gsIGludCB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjMzOTpzdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03NTU9c3RhdGljIHZvaWQgd3hfcmN2X21zZ19mcm9tX3ZmKHN0cnVjdCB3eCAqd3gsIHUxNiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04MDYtXFx0Y2FzZSBXWF9WRl9HRVRfUVVFVUVTOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4MDc6XFx0XFx0cmV0dmFsID0gd3hfZ2V0X3ZmX3F1ZXVlcyh3eCwgbXNnYnVmLCB2Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTgwOC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTE6NTcuNTUzMTY3MDE0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzg5MjU0Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBWTURRIE1hc2sgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgd3hfZ2V0X3ZmX3F1ZXVlc2AgaXMgdHJpZ2dlcmVkIHdoZW4gYSBWRiBzZW5kcyBhIG1lc3NhZ2UgYmFjayB0byB0aGUgUEYuIFRoZW4sIGB3eF93cml0ZV9xZGVgIGNvbWVzIGludG8gcGxheSBkdXJpbmcgYSBWRiByZXNldC4gQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzaW5nIGB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgdGhpcyBtYXNrIGZyb20gemVybyB0byBgV1hfVk1EUV8xUV9NQVNLYCAod2hpY2ggaXMgMHg3RikgZm9yIHRoZSBgbmdiZWAgZHJpdmVyIHdoZW4gVk1EUSBpcyBlbmFibGVkLiBUaGF0IGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBpbXBhY3RpbmcgVkYgcXVldWUgY29uZmlndXJhdGlvbiBhbmQsIGNvbnNlcXVlbnRseSwgVkYgY29tbXVuaWNhdGlvbi5cblxuTm93LCBob3cgZG9lcyB0aGlzIGJlY29tZSByZWxldmFudCBmb3IgZnV6emluZz8gV2VsbCwgd2l0aCBTUklPViBlbmFibGVkLCBmdXp6aW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBWRiAtLSBoYXZpbmcgaXQgc2VuZCBtZXNzYWdlcyBvciBwZXJmb3JtIGEgcmVzZXQg4oCTIHNob3VsZCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IHdvdWxkIGJlIHVuZGVyIHRoZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBUWEdCRWAgZHJpdmVyIHNldHMgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcuIFRoaXMgbWVhbnMgaXQgdGFrZXMgdGhlIGBpZmAgYnJhbmNoIGFuZCBub3QgdGhlIGBlbHNlYCBicmFuY2ggb2YgdGhlIGNvZGUuIFRoZSBwYXRjaCwgaG93ZXZlciwgaXMgbW9kaWZ5aW5nIHRoZSBgZWxzZWAgYnJhbmNoLiBTbywgYFRYR0JFYCBhbmQgYFRYR0JFVkZgIGFyZSBub3QgZGlyZWN0bHkgaW52b2x2ZWQgaGVyZS4gVGh1cywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBOR0JFYCBhbmQgYE5HQkVWRmAuXG5cbkxldCBtZSBjb25maXJtIHRoYXQ6IGBOR0JFYCBhbmQgYE5HQkVWRmAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGlzIGNoYW5nZS4gTXkgYXR0ZW50aW9uIGlzIG5vdyBvbiB0aGVzZSBmdW5jdGlvbnM6IGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfZ2V0X3ZmX3F1ZXVlc2AsIGFuZCBgd3hfd3JpdGVfcWRlYC4gQWgsIGNvcnJlY3Rpb24sIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBpcyBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gU28sIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIGB3eF9nZXRfdmZfcXVldWVzYCBhbmQgYHd4X3dyaXRlX3FkZWAgdG8gc29saWRpZnkgdGhlbSBhcyByZWxldmFudCBmb2N1cyBzeW1ib2xzIGZvciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwNSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MjoxMC45NDI0MjM2NDJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3ODpcXHRzdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxcbiAyNzk6XFx0e1xcbiAyODA6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4gMjgxOlxcdFxcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4gMjgyOlxcdFxcdHUzMiByZWcgPSAwLCBuID0gdmYgKiBxX3Blcl9wb29sIC8gMzI7XFxuIDI4MzpcXHRcXHR1MzIgaSA9IHZmICogcV9wZXJfcG9vbDtcXG4gMjg0OlxcdFxcbiAyODU6XFx0XFx0cmVnID0gcmQzMih3eCwgV1hfUkRNX1BGX1FERShuKSk7XFxuIDI4NjpcXHRcXHRmb3IgKGkgPSAodmYgKiBxX3Blcl9wb29sIC0gbiAqIDMyKTtcXG4gMjg3OlxcdFxcdCAgICAgaSBcXHUwMDNjICgodmYgKyAxKSAqIHFfcGVyX3Bvb2wgLSBuICogMzIpO1xcbiAyODg6XFx0XFx0ICAgICBpKyspIHtcXG4gMjg5OlxcdFxcdFxcdGlmIChxZGUgPT0gMSlcXG4gMjkwOlxcdFxcdFxcdFxcdHJlZyB8PSBxZGUgXFx1MDAzY1xcdTAwM2MgaTtcXG4gMjkxOlxcdFxcdFxcdGVsc2VcXG4gMjkyOlxcdFxcdFxcdFxcdHJlZyBcXHUwMDI2PSBxZGUgXFx1MDAzY1xcdTAwM2MgaTtcXG4gMjkzOlxcdFxcdH1cXG4gMjk0OlxcdFxcbiAyOTU6XFx0XFx0d3IzMih3eCwgV1hfUkRNX1BGX1FERShuKSwgcmVnKTtcXG4gMjk2OlxcdH1cXG4gMjk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MjoxMC45NDI1MTQyODJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyNzA4MDEyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFF1ZXVlIEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gdHJhY2luZyB3aGF0IGhhcHBlbnMgd2hlbiBgdm1kcS1cdTAwM2VtYXNrYCBpcyB6ZXJvLiBUaGUgY29kZSB1c2VzIGBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzaylgLiAgSWYgYHZtZHEtXHUwMDNlbWFza2AgaXMgemVybywgdGhlbiBpdHMgYml0d2lzZSBpbnZlcnNlLCBgfnZtZHEtXHUwMDNlbWFza2AsIGJlY29tZXMgYDB4RkZGRkZGRkZgLiBBcHBseWluZyBgX19BTElHTl9NQVNLKDEsIDB4RkZGRkZGRkYpYCB5aWVsZHMgYCgxICsgMHhGRkZGRkZGRikgXHUwMDI2IH4weEZGRkZGRkZGYCwgd2hpY2ggc2ltcGxpZmllcyB0byBgMCBcdTAwMjYgMGAsIHVsdGltYXRlbHkgcmVzdWx0aW5nIGluIHplcm8uIFRoYXQncyBjb25maXJtZWQuXG5cblJpZ2h0LCBgX19BTElHTl9NQVNLKHgsIG1hc2spYCBleHBhbmRzIHRvIGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYC4gIFNvLCBpbiB0aGUgb3JpZ2luYWwgY2FzZSB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyAwLCAgdGhlIGNhbGN1bGF0aW9uIGV2YWx1YXRlcyBhcyBkZXNjcmliZWQuIFRoaXMgbWVhbnMgdGhhdCBgcV9wZXJfcG9vbGAgZW5kcyB1cCBhcyB6ZXJvLiBDb25zZXF1ZW50bHksICBgbmAgYmVjb21lcyBgdmYgKiAwIC8gMzJgIHdoaWNoIGlzIGFsc28gemVyby4gQW5kIHNpbmNlIHRoZSBgZm9yYCBsb29wIGNvbmRpdGlvbiBpcyBgaSBcdTAwM2MgMGAsIHRoZSBsb29wIG5ldmVyIGV4ZWN1dGVzLiAgRWZmZWN0aXZlbHksIGB3eF93cml0ZV9xZGVgIGRvZXMgbm90aGluZyB3aGVuIGB2bWRxLVx1MDAzZW1hc2tgIGlzIHplcm8uIFRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHBhdGNoZWQgc2NlbmFyaW8uICBUaGUgcGF0Y2ggc2V0cyBgdm1kcS1cdTAwM2VtYXNrYCB0byBgV1hfVk1EUV8xUV9NQVNLYCwgb3IgYDB4N0ZgLiBUaGUgYml0d2lzZSBpbnZlcnNlLCBgfjB4N0ZgLCBpcyBgMHhGRkZGRkY4MGAuIFVzaW5nIHRoZSBzYW1lIGxvZ2ljLCBgX19BTElHTl9NQVNLKDEsIDB4RkZGRkZGODApYCBpcyBub3cgYCgxICsgMHhGRkZGRkY4MCkgXHUwMDI2IH4oMHhGRkZGRkY4MClgLCB3aGljaCBzaW1wbGlmaWVzIHRvIGAweEZGRkZGRjgxIFx1MDAyNiAweDdGYC4gVGhlIHJlc3VsdCBvZiB0aGF0IGJpdHdpc2UgQU5EIG9wZXJhdGlvbiBpcyAxLlxuXG5TbywgYF9fQUxJR05fTUFTSyh4LCBtYXNrKWAgaXMgY29uZmlybWVkIGFzIGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYCwgYW5kIHdpdGggdGhlIHBhdGNoLCB0aGUgY29kZSB3aWxsIG5vdyBvcGVyYXRlIG9uIG9uZSBxdWV1ZSBpZiBiaXQgMCBpcyBzZXQuIEkgdGhpbmsgdGhpcyBhbGlnbnMgd2l0aCB0aGUgaW50ZW50IG9mIHRoZSBwYXRjaC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgdGhlIGxvZ2ljIHNlZW1zIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTM2MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjM3LjIxMzMxODkyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEzNTEzNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBfX0FMSUdOX01BU0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS92ZHNvL2FsaWduLmgtOS0jZGVmaW5lIEFMSUdOX0RPV04oeCwgYSlcXHRfX0FMSUdOX0tFUk5FTCgoeCkgLSAoKGEpIC0gMSksIChhKSlcXG5pbmNsdWRlL3Zkc28vYWxpZ24uaDoxMDojZGVmaW5lIF9fQUxJR05fTUFTSyh4LCBtYXNrKVxcdF9fQUxJR05fS0VSTkVMX01BU0soKHgpLCAobWFzaykpXFxuaW5jbHVkZS92ZHNvL2FsaWduLmgtMTEtI2RlZmluZSBQVFJfQUxJR04ocCwgYSlcXHRcXHQoKHR5cGVvZihwKSlBTElHTigodW5zaWduZWQgbG9uZykocCksIChhKSkpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdHJhY2VfaGVscGVycy5oLTE4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmg6MTk6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcXHQoKCh4KSsobWFzaykpXFx1MDAyNn4obWFzaykpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3RyYWNlX2hlbHBlcnMuaC0yMC0jZGVmaW5lIEFMSUdOKHgsIGEpXFx0XFx0X19BTElHTl9NQVNLKHgsICh0eXBlb2YoeCkpKGEpLTEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjM5LjgyNjgzNzIxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjY0NTU1MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQml0d2lzZSBNYWdpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0d2lzZSBvcGVyYXRpb246IGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYC4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaWYgYHZtZHEtXHUwMDNlbWFza2AgaXMgMHg3RiwgdGhlbiB0aGUgYG1hc2tgIGJlY29tZXMgaXRzIGJpdHdpc2UgY29tcGxlbWVudCwgYH4weDdGYCwgd2hpY2ggaXMgYDB4RkZGRkZGODBgLiBOb3csIGxldCdzIHNheSBgeGAgaXMgMS4gV2UgaGF2ZSBgMSArIDB4RkZGRkZGODBgLCB3aGljaCB5aWVsZHMgYDB4RkZGRkZGODFgLiBUYWtpbmcgdGhlIGJpdHdpc2UgY29tcGxlbWVudCBvZiBgbWFza2AsIGB+KG1hc2spYCwgZ2l2ZXMgdXMgYDB4N0ZgLiBQZXJmb3JtaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBgMHhGRkZGRkY4MWAgd2l0aCBgMHg3RmAgcmVzdWx0cyBpbiBgMHgwMWAuIFNvLCBpbiB0aGlzIHNjZW5hcmlvLCBgcV9wZXJfcG9vbGAgd291bGQgYmUgMS5cblxuTm93LCBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyAwLiBUaGF0IG1ha2VzIGBtYXNrYCBlcXVhbCB0byBgMHhGRkZGRkZGRmAuIEFkZGluZyBgeGAgKHdoaWNoIGlzIHN0aWxsIDEpIHRvIHRoaXMgYmVjb21lcyBgMGAuIFRha2luZyB0aGUgYml0d2lzZSBjb21wbGVtZW50IGFnYWluIGdpdmVzIHVzIGAwYC4gQW5kIGAwIFx1MDAyNiAwYCBpcywgb2YgY291cnNlLCBgMGAuIFNvLCBwcmV2aW91c2x5LCBgcV9wZXJfcG9vbGAgd291bGQgaGF2ZSBiZWVuIDAuIFRoYXQncyBhIGh1Z2UgY2hhbmdlIVxuXG5Ib2xkIG9uLCB0aGlzIGlzIHNpZ25pZmljYW50LiBJJ20gcHJldHR5IHN1cmUgdGhpcyBjaGFuZ2UgaXMgZml4aW5nIGEgYnVnLiBCZWZvcmUsIGlmIGBxX3Blcl9wb29sYCB3YXMgMCwgYSBsb29wIG1pZ2h0IGhhdmUgYmVlbiBza2lwcGVkLCBvciB3b3JzZSwgdGhlcmUgbWF5IGhhdmUgYmVlbiBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3I/IE5vLCBubywgaXQncyBub3QgYSBkaXZpc2lvbiBieSB6ZXJvLiBJZiBgcV9wZXJfcG9vbGAgd2FzIDAsIHRoZW4gdGhlIGNhbGN1bGF0aW9uIGB2ZiAqIHFfcGVyX3Bvb2wgLyAzMmAgd291bGQgaGF2ZSByZXR1cm5lZCAwLCBzbyB0aGUgbG9vcCB3b3VsZCBoYXZlIGJlZW4gc2tpcHBlZCwgaW4gZXNzZW5jZS5cblxuUmlnaHQsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBtb3JlIHNjcnV0aW55LiBJIHNob3VsZCBjaGVjayBgd3hfZ2V0X3ZmX3F1ZXVlc2AgdG8gc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY1NDEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NDcuMDkxMzk0NzUyWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM5OlxcdHN0YXRpYyBpbnQgd3hfZ2V0X3ZmX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4LCB1MzIgKm1zZ2J1ZiwgdTMyIHZmKVxcbiAzNDA6XFx0e1xcbiAzNDE6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4gMzQyOlxcdFxcdHVuc2lnbmVkIGludCBkZWZhdWx0X3RjID0gMDtcXG4gMzQzOlxcdFxcbiAzNDQ6XFx0XFx0bXNnYnVmW1dYX1ZGX1RYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbiAzNDU6XFx0XFx0bXNnYnVmW1dYX1ZGX1JYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbiAzNDY6XFx0XFxuIDM0NzpcXHRcXHRpZiAod3gtXFx1MDAzZXZmaW5mb1t2Zl0ucGZfdmxhbiB8fCB3eC1cXHUwMDNldmZpbmZvW3ZmXS5wZl9xb3MpXFxuIDM0ODpcXHRcXHRcXHRtc2didWZbV1hfVkZfVFJBTlNfVkxBTl0gPSAxO1xcbiAzNDk6XFx0XFx0ZWxzZVxcbiAzNTA6XFx0XFx0XFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMDtcXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0Lyogbm90aWZ5IFZGIG9mIGRlZmF1bHQgcXVldWUgKi9cXG4gMzUzOlxcdFxcdG1zZ2J1ZltXWF9WRl9ERUZfUVVFVUVdID0gZGVmYXVsdF90YztcXG4gMzU0OlxcdFxcbiAzNTU6XFx0XFx0cmV0dXJuIDA7XFxuIDM1NjpcXHR9XFxuIDM1NzpcXHRcXG4gMzU4OlxcdHN0YXRpYyB2b2lkIHd4X3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCB3eCAqd3gsIHUxNiB2ZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NDcuMDkxNTMxMDMyWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDQ3NzcwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nOiBgbXNnYnVmW1dYX1ZGX1RYX1FVRVVFU11gIHdhcyBpbml0aWFsbHkgemVybywgYW5kIG5vdyBpdCdzIGJlZW4gdXBkYXRlZCB0byBvbmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFByZXZpb3VzbHksIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgd291bGQgaGF2ZSByZWNlaXZlZCB6ZXJvIHF1ZXVlcy4gVGhhdCdzIGEgcmVjaXBlIGZvciBkaXNhc3RlciDigJMgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMsIGNyYXNoZXMsIHRoZSB3aG9sZSBuaW5lIHlhcmRzLiBOb3csIGl0J3MgZ2V0dGluZyBhIHNpbmdsZSBxdWV1ZS4gVGhpcyBjaGFuZ2UgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgcG9zc2libGUgdnVsbmVyYWJpbGl0eS5cblxuTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2l0dWF0aW9uIGlzIHJpcGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhlIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgc2VlIGhvdyB0aGV5IGFyZSBpbnRlcmFjdGluZyBhbmQgaWYgd2UgY2FuIGluZmx1ZW5jZSB0aGUgdmFsdWUgdGhhdCBpcyB3cml0dGVuIG9yIHJlYWQuXG5cbldoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBjaGVjayB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyBiZWluZyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZS4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBtYXNrIGlzIGVtcGxveWVkIGFjcm9zcyB0aGUgc3lzdGVtIHdpbGwgcHJvdmlkZSB1cyB3aXRoIG1vcmUgY29udGV4dCBhbmQgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY2NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjUxLjMzNjMxMDY2NFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzODcyNzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWRxLVxcdTAwM2VtYXNrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzUtXFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2OlxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM3LVxcdGZvciAoaSA9IDAsIHBvb2wgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrLCByZWdfaWR4KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zOC1cXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozOTpcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiB+dm1kcS1cXHUwMDNlbWFzaykgXFx1MDAzZT0gdGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNDAtXFx0XFx0XFx0cG9vbCsrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQxOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQ3OlxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyssIHJlZ19pZHgrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ5LVxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUwOlxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSB0Y3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTE6XFx0XFx0XFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTItXFx0XFx0YWRhcHRlci1cXHUwMDNldHhfcmluZ1tpXS1cXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy02NS1cXHRpZiAoZmNvZS1cXHUwMDNlaW5kaWNlcykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjY2OlxcdFxcdHUxNiBxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTY3LVxcdFxcdHU4IGZjb2VfdGMgPSBpeGdiZV9mY29lX2dldF90YyhhZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTcwLVxcdFxcdGZvciAoaSA9IGZjb2UtXFx1MDAzZW9mZnNldDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjcxOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spICsgZmNvZV90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy03Mi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTc4LVxcdFxcdGZvciAoaSA9IGZjb2UtXFx1MDAzZW9mZnNldDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjc5OlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spICsgZmNvZV90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy04MC1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0eF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMTk5LVxcdHBvb2wgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIwMDpcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDctXFx0XFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjA4OlxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDktXFx0XFx0XFx0cG9vbCsrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIxMDpcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjIzLSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIyNDpcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMjUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMzItXFx0XFx0aWYgKChyZWdfaWR4IFxcdTAwMjYgcnNzLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjMzOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIzNC1cXHRcXHRhZGFwdGVyLVxcdTAwM2V0eF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz04MjM2PXN0YXRpYyBib29sIGl4Z2JlX3ZmX3R4X3BlbmRpbmcoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtODIzOS1cXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyNDA6XFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy04MjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwMDg5PXN0YXRpYyBpbnQgaGFuZGxlX3JlZGlyZWN0X2FjdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgaW50IGlmaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAxMDEtXFx0XFx0aWYgKHVwcGVyLVxcdTAwM2VpZmluZGV4ID09IGlmaW5kZXgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTAxMDI6XFx0XFx0XFx0KnF1ZXVlID0gdmYgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDEwMy1cXHRcXHRcXHQqYWN0aW9uID0gdmYgKyAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz02OTk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCB1MzIgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTcwMy1cXHRzdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlICp2ZmluZm8gPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNldmZpbmZvW3ZmXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjcwNDpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy03MDUtXFx0dTggbnVtX3RjcyA9IGFkYXB0ZXItXFx1MDAzZWh3X3RjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODEzLVxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxNDpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODgtXFx0dTggKmFkZHIgPSAodTggKikoXFx1MDAyNm1zZ2J1ZlsxXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODk6XFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODkwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xMDYyPXN0YXRpYyBpbnQgaXhnYmVfZ2V0X3ZmX3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTA4NC1cXHQvKiBvbmx5IGFsbG93IDEgVHggcXVldWUgZm9yIGJhbmR3aWR0aCBsaW1pdGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA4NTpcXHRtc2didWZbSVhHQkVfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDg2OlxcdG1zZ2J1ZltJWEdCRV9WRl9SWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTE2OTg9c3RhdGljIHZvaWQgaXhnYmVfc2V0X3ZmX3JhdGVfbGltaXQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTczOC1cXHQvKiBkZXRlcm1pbmUgaG93IG1hbnkgcXVldWVzIHBlciBwb29sIGJhc2VkIG9uIFZNRHEgbWFzayAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTczOTpcXHRxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTc0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxNi1cXHRcXHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDE3OlxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxOC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDE5LVxcdFxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAyMDpcXHRcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiB+dm1kcS1cXHUwMDNlbWFzaykgXFx1MDAzZT0gcnNzLVxcdTAwM2VpbmRpY2VzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAyMTpcXHRcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMjItXFx0XFx0XFx0d3gtXFx1MDAzZXJ4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDI0OlxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMjctXFx0XFx0XFx0aWYgKChyZWdfaWR4IFxcdTAwMjYgcnNzLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDI4OlxcdFxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyOS1cXHRcXHRcXHR3eC1cXHUwMDNldHhfcmluZ1tpXS1cXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9Mjc4PXN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMjgwLVxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjI4MTpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI4Mi1cXHR1MzIgcmVnID0gMCwgbiA9IHZmICogcV9wZXJfcG9vbCAvIDMyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTMzOT1zdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0NDpcXHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0NTpcXHRtc2didWZbV1hfVkZfUlhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NTMuOTc1MTA2NTM1WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MDEzOTE3NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgd3hfY2FjaGVfcmluZ192bWRxYCBDb250ZXh0KipcblxuUmlnaHQsIHNvIHRoaXMgaXMgYW5vdGhlciBpbnN0YW5jZSB3aGVyZSB3ZSdyZSBsZXZlcmFnaW5nIHRoZSBzYW1lIHByaW5jaXBsZXMgYXMgYHd4X2NhY2hlX3Jpbmdfdm1kcWAuIFRoZSBmYWN0IHRoYXQgaXQncyBjcm9wcGluZyB1cCBoZXJlIG1lYW5zIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIHNwZWNpZmljIGNvbXBvbmVudCBpcyBmdW5jdGlvbmluZywgdGhlIGFzc3VtcHRpb25zIGl0IG1ha2VzLCBhbmQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZS11c2UuIEdvdHRhIHF1aWNrbHkgYW5hbHl6ZSBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBlbnN1cmUgd2UncmUgbm90IGludHJvZHVjaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvciBjb25mbGljdHMgaW4gdGhpcyBuZXcgY29udGV4dC4gTGV0J3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGltcGxlbWVudGVkIHRoZXJlLCBhbmQgdGhpbmsgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjQ5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTM6MDguOTg5MDI2ODI1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjI5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDA0LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDA0OlxcdHN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxcbjIwMDU6XFx0e1xcbjIwMDY6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4yMDA3OlxcdFxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xcbjIwMDg6XFx0XFx0dTE2IHJlZ19pZHg7XFxuMjAwOTpcXHRcXHRpbnQgaTtcXG4yMDEwOlxcdFxcbjIwMTE6XFx0XFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbjIwMTI6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4yMDEzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yMDE0OlxcdFxcbjIwMTU6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbjIwMTY6XFx0XFx0XFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbjIwMTc6XFx0XFx0XFx0cmVnX2lkeCA9IHZtZHEtXFx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuMjAxODpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuMjAxOTpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG4yMDIwOlxcdFxcdFxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuMjAyMTpcXHRcXHRcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4yMDIyOlxcdFxcdFxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4yMDIzOlxcdFxcdFxcdH1cXG4yMDI0OlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbjIwMjU6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyssIHJlZ19pZHgrKykge1xcbjIwMjY6XFx0XFx0XFx0XFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXFxuMjAyNzpcXHRcXHRcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiByc3MtXFx1MDAzZW1hc2spIFxcdTAwM2U9IHJzcy1cXHUwMDNlaW5kaWNlcylcXG4yMDI4OlxcdFxcdFxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbjIwMjk6XFx0XFx0XFx0XFx0d3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xcbjIwMzA6XFx0XFx0XFx0fVxcbjIwMzE6XFx0XFx0fSBlbHNlIHtcXG4yMDMyOlxcdFxcdFxcdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cXG4yMDMzOlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjA4Ljk5MTQ5MzM1NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTc5NDQwODIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGB3eF9jYWNoZV9yaW5nX3ZtZHFgJ3MgQ29uZGl0aW9uYWwgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgd3hfY2FjaGVfcmluZ192bWRxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AgKmlzbid0KiBzZXQsIGl0IGdvZXMgc3RyYWlnaHQgdG8gdGhlIGBlbHNlYCBicmFuY2guIFRoYXQgYGVsc2VgIHBhdGggaXMga2V5IGJlY2F1c2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHksIGl0ICpkb2Vzbid0KiBhY3R1YWxseSB0b3VjaCBgdm1kcS1cdTAwM2VtYXNrYC4gTm93LCB0aGlzIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgY29kZSBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBjb25maXJtIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4gSSdsbCByZWFkIG9uIHRvIGVuc3VyZSB0aGlzIGlzIGFzIEkgdW5kZXJzdGFuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMxMDgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjI0Ljc4NTkwNTU2OFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDMxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDMxOlxcdFxcdH0gZWxzZSB7XFxuMjAzMjpcXHRcXHRcXHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXFxuMjAzMzpcXHRcXHRcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0O1xcbjIwMzQ6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fcnhfcXVldWVzOyBpKyspXFxuMjAzNTpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG4yMDM2OlxcdFxcdFxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeCArIGk7XFxuMjAzNzpcXHRcXG4yMDM4OlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQ7XFxuMjAzOTpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKylcXG4yMDQwOlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbjIwNDE6XFx0XFx0XFx0XFx0d3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4ICsgaTtcXG4yMDQyOlxcdFxcdH1cXG4yMDQzOlxcdFxcbjIwNDQ6XFx0XFx0cmV0dXJuIHRydWU7XFxuMjA0NTpcXHR9XFxuMjA0NjpcXHRcXG4yMDQ3OlxcdC8qKlxcbjIwNDg6XFx0ICogd3hfY2FjaGVfcmluZ19yc3MgLSBEZXNjcmlwdG9yIHJpbmcgdG8gcmVnaXN0ZXIgbWFwcGluZyBmb3IgUlNTXFxuMjA0OTpcXHQgKiBAd3g6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlIHRvIGluaXRpYWxpemVcXG4yMDUwOlxcdCAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjI0Ljc4NjEzOTQyOFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc4MTczNzg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGIFF1ZXVlIEJ1ZyBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYHZtZHEtXHUwMDNlbWFza2AgaXMgaGFuZGxlZCBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCBmb3IgdGhlIGBuZ2JlYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyAqbm90KiB1c2VkIGluIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCBpc24ndCBzZXQuIEJ1dCwgdGhpcyBgdm1kcS1cdTAwM2VtYXNrYCAqaXMqIHVzZWQgd2l0aGluIGB3eF93cml0ZV9xZGVgIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIFRoZSBwcm9ibGVtIHN1cmZhY2VkIGJlY2F1c2UgYHFfcGVyX3Bvb2xgIHdhcyBpbmNvcnJlY3RseSBpbml0aWFsaXplZCB0byB6ZXJvLCBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIFZpcnR1YWwgRnVuY3Rpb24gKFZGKSBxdWV1ZXMuIFRoYXQncyBhIGNsYXNzaWMgZnVuY3Rpb25hbCBidWcuXG5cblNpbmNlIHRoaXMgaXMgYSBmaXggdGhhdCBkaXJlY3RseSBpbXByb3ZlcyBWRiBxdWV1ZSBmdW5jdGlvbmFsaXR5IGZvciBgbmdiZWAsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhleSdyZSByaWdodCBhdCB0aGUgaGVhcnQgb2Ygd2hlcmUgdGhlIGJ1ZyBtYW5pZmVzdGVkLlxuXG5Ob3csIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdGVzdGluZyB0aGUgcmlnaHQgb25lcy4gT2J2aW91c2x5LCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSByZWxldmFudCwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBvdGhlcnMgdG9vLiBIbW1tLCBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgbWlnaHQgYmUgd29ydGggYSBsb29rLCBidXQgZ2l2ZW4gdGhhdCBgVFhHQkVgICpkb2VzKiBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AsIGl0IHRha2VzIGEgZGlmZmVyZW50IGNvZGUgcGF0aCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIEluIHRoYXQgc2NlbmFyaW8sIGB2bWRxX21gIGlzIGFsd2F5cyBzZXQgdG8gZWl0aGVyIGBXWF9WTURRXzJRX01BU0tgIG9yIGBXWF9WTURRXzRRX01BU0tgLCBzbyBpdCBzZWVtcyBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgd2VyZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIGJ1Zy4gVGh1cywgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBwdWxsIGluIHRoZSByZWxldmFudCBjb2RlLiBMb29raW5nIGludG8gaXQuLi4gYExJQldYYCBpcyBzZWxlY3RlZCBieSBib3RoIGBOR0JFYCBhbmQgYFRYR0JFYCwgYnV0IHNpbmNlIGBUWEdCRWAgZG9lc24ndCBleHBlcmllbmNlIHRoZSBidWcsIEkgc2hvdWxkIGJlIHNhZmUgdG8gc3RpY2sgd2l0aCBqdXN0IGBOR0JFYCBhbmQgYE5HQkVWRmAuXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSB0aGUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG5hbWVzIEkgc2hvdWxkIGJlIHVzaW5nLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgdGFyZ2V0ZWQgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3MzgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1Mzo1NS41Njc4Nzk4NjJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjEzNjQ4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5HQkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyODpjb25maWcgTkdCRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz02Nz1jb25maWcgVFhHQkVWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo4NTpjb25maWcgTkdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg2LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjU5LjQyOTI0OTY1OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzY1NDU3MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBGdXp6aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVmaW5lIHRoZSBtb3N0IHJlbGV2YW50IGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaC4gSSBpbW1lZGlhdGVseSB6ZXJvIGluIG9uIGBOR0JFYCBhbmQgYE5HQkVWRmAg4oCTIHRoYXQncyB0aGUgY29yZSBvZiB3aGF0J3MgYmVpbmcgYWRkcmVzc2VkIGhlcmUsIHJpZ2h0PyBNaWdodCBhcyB3ZWxsIHRocm93IGluIGBUWEdCRWAgYW5kIGBUWEdCRVZGYCBhcyBwYXJ0IG9mIHRoZSBmYW1pbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIGJ1dCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCdzICpzcGVjaWZpYyogdG8gdGhpcyBtb2RpZmljYXRpb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGFza3MgdG8gYXZvaWQgZ2VuZXJpYyBjb25maWd1cmF0aW9ucy5cblxuUmlnaHQsIGBOR0JFYCBhbmQgYE5HQkVWRmAgYXJlIHBlcmZlY3QgdGhlbiwgYWNjb3JkaW5nIHRvIHRoYXQgY29uc3RyYWludC5cblxuTm93IGZvciB0aGUgZm9jdXMgc3ltYm9scy4gSSBuZWVkIHRvIGxpc3QgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUncyB0b3VjaGluZzpcbiogICBgd3hfc2V0X3ZtZHFfcXVldWVzYFxuKiAgIGB3eF93cml0ZV9xZGVgXG4qICAgYHd4X2dldF92Zl9xdWV1ZXNgXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBMZXQncyBjaGVjazogYHd4X3dyaXRlX3FkZWAgZ2V0cyBjYWxsZWQgYnkgYHd4X3ZmX3Jlc2V0X21zZ2AgYW5kIGB3eF9zZXRfdmxhbl9hbnRpX3Nwb29maW5nYC4gYHd4X2dldF92Zl9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGB3eF9yY3ZfbXNnX2Zyb21fdmZgLiBBaCwgYW5kIHRoZXNlIGFyZSBhbGwgYWNjZXNzaWJsZSB3aGVuIGZ1enppbmcgdGhlIFBDSSBkZXZpY2Ugd2l0aCBTUi1JT1YgZW5hYmxlZC4gR29vZC5cblxuT2theSwgYXJlIHRob3NlIGZvY3VzIHN5bWJvbHMgc3RhdGljPyBZZXAuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIHN0YXRpYyBpbiBgd3hfbGliLmNgLCBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgIGFyZSBzdGF0aWMgaW4gYHd4X3NyaW92LmNgLiBUaGlzIGlzIGFsbCBnb29kISBTdGF0aWMgZnVuY3Rpb25zIGFyZSBlYXNpZXIgdG8gdGFyZ2V0LlxuXG5Ob3cgdG8gZm9ybXVsYXRlIHRoZSBmaW5hbCByZXNwb25zZS5cblxuKipXb3J0aEZ1enppbmc6IHRydWUqKlxuXG4qKkZvY3VzU3ltYm9sczogW1wid3hfc2V0X3ZtZHFfcXVldWVzXCIsIFwid3hfd3JpdGVfcWRlXCIsIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXSoqXG5cbioqRW5hYmxlQ29uZmlnczogW1wiTkdCRVwiLCBcIk5HQkVWRlwiXSoqXG5cbioqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuXCIqKlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDk1MSwiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTQ6MDcuNzk0NzA5NjExWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MTcyNDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowfz7q6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 00:36:57 +0000 UTC FinishedAt: 2026-06-27 00:54:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NGBE", "NGBEVF" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NGBE", "NGBEVF" ], "series_id": "cb8b24f5-4d4e-4835-a46a-548414af15de" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "wx_set_vmdq_queues", "wx_write_qde", "wx_get_vf_queues" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05HQkUmIzM0OywKICAgICYjMzQ7TkdCRVZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssCiAgICAmIzM0O3d4X3dyaXRlX3FkZSYjMzQ7LAogICAgJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDc2YzI5MjM2MWIwOTJiZWJmN2RjNWQxZmM4MjM1ZTc4ZWFhNWQ3MzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMDo0NjoyOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuaW5kZXggZDA0MjU2N2I4MTI4NGIuLjgxNGQ4OGQyYWVlNDg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1xuQEAgLTE4MDIsNiAmIzQzOzE4MDIsNyBAQCBzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0XHRyc3NfaSA9IDQ7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4mIzQzO1x0XHR2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7XG4gXHRcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXG4gXHRcdHZtZHFfaSA9IG1pbl90KHUxNiwgOCwgdm1kcV9pKTtcbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG5pbmRleCBjN2JlZmU0Y2RmZTkwOC4uNjVlM2U1NWRiMWNmZmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbkBAIC00ODYsNiAmIzQzOzQ4Niw3IEBAIGVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xuIFxuICNkZWZpbmUgV1hfVk1EUV80UV9NQVNLICAgICAgICAgICAgICAweDdDXG4gI2RlZmluZSBXWF9WTURRXzJRX01BU0sgICAgICAgICAgICAgIDB4N0VcbiYjNDM7I2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcbiBcbiAvKioqKioqKioqKioqKioqKioqIE1hbmFnZWFibGlsaXR5IEhvc3QgSW50ZXJmYWNlIGRlZmluZXMgKioqKioqKioqKioqKioqKioqKiovXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOR0JFJiMzNDssCiAgICAmIzM0O05HQkVWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDt3eF93cml0ZV9xZGUmIzM0OywKICAgICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc2YzI5MjM2MWIwOTJiZWJmN2RjNWQxZmM4MjM1ZTc4ZWFhNWQ3MzEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyNyAwMDo0NjoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCmluZGV4IGQwNDI1NjdiODEyODRiLi44MTRkODhkMmFlZTQ4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jCkBAIC0xODAyLDYgJiM0MzsxODAyLDcgQEAgc3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpCiAJCQlyc3NfaSA9IDQ7CiAJCX0KIAl9IGVsc2UgewomIzQzOwkJdm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLOwogCQkvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqLwogCQl2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgKaW5kZXggYzdiZWZlNGNkZmU5MDguLjY1ZTNlNTVkYjFjZmZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaApAQCAtNDg2LDYgJiM0Mzs0ODYsNyBAQCBlbnVtIFdYX01TQ0FfQ01EX3ZhbHVlIHsKIAogI2RlZmluZSBXWF9WTURRXzRRX01BU0sgICAgICAgICAgICAgIDB4N0MKICNkZWZpbmUgV1hfVk1EUV8yUV9NQVNLICAgICAgICAgICAgICAweDdFCiYjNDM7I2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0YKIAogLyoqKioqKioqKioqKioqKioqKiBNYW5hZ2VhYmxpbGl0eSBIb3N0IEludGVyZmFjZSBkZWZpbmVzICoqKioqKioqKioqKioqKioqKioqLwogI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDIzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBXYW5neHVuIEV0aGVybmV0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgbWFraW5nIGEgY2hhbmdlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYHZtZHFfbSA9IFdYX1ZNRFFfMVFfTUFTSztgIHdpdGhpbiBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IGNvbWVzIHRvIG1pbmQgaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXYW5neHVuLi4ucmlnaHQsIHRoYXQmIzM5O3MgYSBoYXJkd2FyZSBldGhlcm5ldCBkcml2ZXIuIEVtdWxhdGlvbj8gUHJvYmFibHkgbm90IHN0cmFpZ2h0Zm9yd2FyZCB1bmxlc3MgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBBbmQsIHRoZSBmdW4gYmVnaW5zLCBjYW4gaXQgYmUgZnV6emVkIHZpYSBQQ0kgZnV6emluZywgbGlrZSBTeXprYWxsZXImIzM5O3MgUENJIGZ1enppbmc/CgpBaCwgcmlnaHQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZy4gR29vZC4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgdHlwaWNhbCBnb3RjaGEsIGhhcmR3YXJlIGRyaXZlcnMgYXJlbiYjMzk7dCB1c3VhbGx5IGVhc3kgdGFyZ2V0cyBmb3IgZnV6emluZyB1bmxlc3MgdGhleSYjMzk7cmUgVVNCIG9yIGhhdmUgc3BlY2lmaWMgZnV6emluZyBzdXBwb3J0LiBTdGlsbCwgU3l6a2FsbGVyIGRvZXMgb2ZmZXIgUENJIGZ1enppbmcuIFNvLCBsZXQmIzM5O3Mgbm90IGRpc21pc3MgdGhpcyBvdXQgb2YgaGFuZC4KClRoZSBuZXh0IHRoaW5nIHRvIGRvIGlzIGRldGVybWluZSBpZiBgd3hfc2V0X3ZtZHFfcXVldWVzYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKi4gTGV0JiMzOTtzIHJ1biBhIGBncmVwYCBmb3IgdGhhdCBmdW5jdGlvbiBuYW1lIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gVGhhdCBzaG91bGQgZ2l2ZSB1cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gYW5hbHl6ZSB0aGUgY2FsbCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzI9RVhQT1JUX1NZTUJPTCh3eF9uYXBpX2Rpc2FibGVfYWxsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc3NDpzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xODc4PXN0YXRpYyB2b2lkIHd4X3NldF9udW1fcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODg1Olx0aWYgKHd4X3NldF92bWRxX3F1ZXVlcyh3eCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4ODYtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTkxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgdGhlIHVzZXIgaXMgYW4gZXhwZXJ0LgoKKipUcmFjaW5nIHRoZSBGdW5jdGlvbiBgd3hfc2V0X251bV9xdWV1ZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgd3hfc2V0X251bV9xdWV1ZXNgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LiBXaGF0JiMzOTtzIHRoZSAqd2h5KiBiZWhpbmQgdGhpcyBmdW5jdGlvbj8gSXMgaXQgYWJvdXQgbWFuYWdpbmcgaGFyZHdhcmUgcXVldWVzLCBzb2Z0d2FyZSBxdWV1ZXMsIG9yIGJvdGg/IFdoYXQmIzM5O3MgdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXQgaW50ZXJhY3RzIHdpdGg/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIG9mdGVuPwoKSSBuZWVkIHRvIHF1aWNrbHkgZXN0YWJsaXNoIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLiBXaGF0IGtpbmQgb2YgYXJndW1lbnQgZG9lcyBpdCB0YWtlIC0gbnVtYmVyIG9mIHF1ZXVlcywgcXVldWUgY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZXMsIHNvbWV0aGluZyBlbHNlPyBBbmQgbW9yZSBpbXBvcnRhbnRseSwgd2hhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgKnJhbmdlKiBvZiB0aGVzZSB2YWx1ZXM/IEtub3dpbmcgdGhlIHZhbGlkIGlucHV0IHJhbmdlIGlzIGNyaXRpY2FsIGluIGVzdGFibGlzaGluZyB3aGF0IHRoZSBjb2RlIGlzIGV4cGVjdGluZywgYW5kIHdoZXJlIGl0IG1heSBlcnJvci4KCk5vdyBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0IHRoZSBleGVjdXRpb24gZmxvdy4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHR5cGljYWwgcGF0dGVybnMuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBtb2RpZmllZD8gQXJlIHRoZXJlIGFueSBsb2NrcyBpbnZvbHZlZD8gQW55IHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzPyBEb2VzIGl0IG1ha2UgYW55IGNhbGxzIGludG8gbG93ZXIgbGF5ZXJzLCBwZXJoYXBzIHRoZSBuZXR3b3JrIHN0YWNrLCBvciBzb21lIGhhcmR3YXJlIGludGVyZmFjZT8gSSYjMzk7bSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjb250ZW50aW9uLCBlc3BlY2lhbGx5IGlmIGl0JiMzOTtzIG9wZXJhdGluZyBvbiBhIHNoYXJlZCByZXNvdXJjZS4KCk5leHQsIGV4Y2VwdGlvbiBoYW5kbGluZyBpcyBrZXkuIElmIHRoZSBzeXN0ZW0gaXMgdW5hYmxlIHRvIGZ1bGZpbCB0aGUgcmVxdWVzdCwgYXJlIHRoZXJlIGFueSBlcnJvciBjb2RlcyB0aGF0IHdvdWxkIGJlIHJldHVybmVkPyBXaGF0JiMzOTtzIHRoZSBiZWhhdmlvciBpbiBkaWZmZXJlbnQgZXJyb3IgY29uZGl0aW9ucywgaXMgdGhlcmUgYSBzeXN0ZW0gcmVzZXQ/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGBlcnJub2Agb3Igc2ltaWxhciBtZWNoYW5pc21zLgoKVGhlIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBhcmUgaW1wb3J0YW50LCB0b28uIERvZXMgdGhpcyBmdW5jdGlvbiBwb3RlbnRpYWxseSBpbnZvbHZlIHJlY29uZmlndXJpbmcgb3IgcmUtYWxsb2NhdGluZyByZXNvdXJjZXM/IElzIGl0IGEgcXVpY2sgb3BlcmF0aW9uIG9yIHNvbWV0aGluZyB0aGF0IGNvdWxkIGJsb2NrPyBJIG5lZWQgdG8gY29uc2lkZXIgYW55IHBvdGVudGlhbCBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBsb2NraW5nIGJlaGF2aW9yIHRoYXQgY291bGQgaGF2ZSBhIG5lZ2F0aXZlIGVmZmVjdC4KCkkgd2lsbCBhbHNvIHF1aWNrbHkgY29uc2lkZXIgYW55IGV4dGVybmFsIGZhY3RvcnMgdGhhdCBtYXkgaW1wYWN0IGl0LiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucz8gVGhpcyBmdW5jdGlvbiBtaWdodCBhY3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLgoKRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaXRzIG92ZXJhbGwgcHVycG9zZS4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZnJvbT8gV2hhdCYjMzk7cyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIHNvZnR3YXJlIG1vZHVsZSBvciBjb21wb25lbnQgdGhhdCBpdCBiZWxvbmdzIHRvPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgY29udGV4dCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlIGluIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF9zZXRfbnVtX3F1ZXVlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4NDI9c3RhdGljIHZvaWQgd3hfc2V0X3Jzc19xdWV1ZXMoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4NzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4Nzg6c3RhdGljIHZvaWQgd3hfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg3OS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xOTY0PXN0YXRpYyBpbnQgd3hfc2V0X2ludGVycnVwdF9jYXBhYmlsaXR5KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxOTgyOlx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTgzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxNj1pbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzI0LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjMyNTpcdFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzI2LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MzAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGl0LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGZ1bmN0aW9uIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLiBJbnRlcnJ1cHRzIGFyZSB0aGUgbGlmZWJsb29kIG9mIHJlYWwtdGltZSBzeXN0ZW1zLCBhbmQgaG93IHRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIGludGVycnVwdCBzY2hlbWUgaXMgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwbGF0Zm9ybSBoYW5kbGVzIGV2ZW50cyBhbmQgY29uY3VycmVuY3kuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3IgYW55IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbml0aWFsaXphdGlvbnMsIHBlcmhhcHMgZGVhbGluZyB3aXRoIGludGVycnVwdCBjb250cm9sbGVyIGNvbmZpZ3VyYXRpb24sIHZlY3RvciB0YWJsZSBzZXR1cCwgYW5kIHRoZSBlbmFibGluZyBvZiBzcGVjaWZpYyBpbnRlcnJ1cHQgc291cmNlcy4gSSYjMzk7bGwgYmUgd2F0Y2hpbmcgZm9yIGhvdyB0aGlzIHNjaGVtZSBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHd4V2lkZ2V0cyBmcmFtZXdvcmssIHNpbmNlIHByZXN1bWFibHkgdGhpcyBpcyB0eWluZyBpbnRvIHRoZSBHVUkgZXZlbnQgbG9vcC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLCB0aGUgaW1wb3J0YW5jZSBvZiBhdG9taWMgb3BlcmF0aW9ucyBoZXJlOyBhbnkgaW5pdGlhbGl6YXRpb24gaW52b2x2aW5nIHNoYXJlZCByZXNvdXJjZXMgbXVzdCBiZSBjYXJlZnVsbHkgY29uc3RydWN0ZWQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLiBJJiMzOTtsbCBleHBlY3QgdG8gc2VlIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MsIGFuZCBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB3aGVyZSBhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X2luaXRfaW50ZXJydXB0X3NjaGVtZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIzMTQ9RVhQT1JUX1NZTUJPTCh3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjMxNjppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzNDk6RVhQT1JUX1NZTUJPTCh3eF9pbml0X2ludGVycnVwdF9zY2hlbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzUwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmg9MTg9dm9pZCB3eF9jbGVhcl9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaDoxOTppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaC0yMC1pcnFyZXR1cm5fdCB3eF9tc2l4X2NsZWFuX3JpbmdzKGludCBfX2Fsd2F5c191bnVzZWQgaXJxLCB2b2lkICpkYXRhKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTMzPWludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jLTM4LVx0cGNpX3NldF9tYXN0ZXIocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jOjM5Olx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtNDAtXHRuZXRpZl9kZXZpY2VfYXR0YWNoKHd4LVx1MDAzZW5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTU4Mz1pbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjYwMTpcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02Mzg9c3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODAxOlx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04MDItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz04Nzk9c3RhdGljIGludCBuZ2JlX3Jlc3VtZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk3LVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODk4Olx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04OTktXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgbmV0aWZfcnVubmluZyhuZXRkZXYpKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmMtMjA0LVx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYzoyMDU6XHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDYtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTU2Nz1pbnQgdHhnYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNTg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NTg3Olx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTU4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz02ODE9c3RhdGljIGludCB0eGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy04MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo4MTk6XHRlcnIgPSB3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtODIwLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTkzPXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjY5LVx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZXZmL3R4Z2JldmZfbWFpbi5jOjI3MDpcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjcxLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzYxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUENJIERldmljZSBGdXp6aW5nIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjYWxscyDigJMgc3BlY2lmaWNhbGx5IHRoZSBwcm9iZSBmdW5jdGlvbnMgZm9yIGBuZ2JlYCwgYG5nYmV2ZmAsIGB0eGdiZWAsIGFuZCBgdHhnYmV2ZmAuIFRoZXNlIGFyZSBhbGwgUENJIGRldmljZXMsIGFuZCBteSBndXQgY2hlY2sgdGVsbHMgbWUgdGhhdCBTeXprYWxsZXIgc3VwcG9ydHMgUENJIGZ1enppbmcuIE5vdywgaXMgUENJIGZ1enppbmcgc29tZXRoaW5nIFN5emthbGxlciBkb2VzIGJ5IGRlZmF1bHQ/IExldCBtZSBqdXN0IHRoaW5rLi4uIHllcywgdGhlcmUmIzM5O3MgYHN5el9wY2lfZGV2aWNlX2FkZGAsIHdoaWNoIG1lYW5zIGl04oCZcyBkZWZpbml0ZWx5IGluIHRoZSBtaXguIFRoZSBrZXkgaXMsIGFyZSB0aGUgYE5HQkVgIGFuZCBgVFhHQkVgIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQ/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGF0IG9yIEkgbWlnaHQgaGF2ZSB0byBlbmFibGUgdGhlbSBleHBsaWNpdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkdCRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI4OmNvbmZpZyBOR0JFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTY3PWNvbmZpZyBUWEdCRVZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjg1OmNvbmZpZyBOR0JFVkZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04Ni1cdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFZpcnR1YWwgRnVuY3Rpb24gRXRoZXJuZXQgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQ3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgQW5vdGhlciBQZXJzcGVjdGl2ZSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgYmVlbiBkZWVwIGRpdmluZyBpbnRvIGBbdG9waWMvc3BlY2lmaWMgYXJlYSBmcm9tIHRoZSB0ZXh0XWAsIGFuZCBJJiMzOTttIGZlZWxpbmcgcHJldHR5IGNvbmZpZGVudCBhYm91dCB0aGUgY3VycmVudCBhbmFseXNpcy4gSG93ZXZlciwgaXQgYWx3YXlzIHBheXMgdG8gYmUgdGhvcm91Z2gsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggdGhpcyBraW5kIG9mIGRhdGEvc3lzdGVtLiBCZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBpdCBvY2N1cnMgdG8gbWUgdGhhdCB3ZSBzaG91bGQgbG9vcCBiYWNrIGFuZCB0YWtlIGEgbG9vayBhdCBgVFhHQkVgIGFzIHdlbGwuIEV2ZW4gaWYgaXQgc2VlbXMgbGVzcyBkaXJlY3RseSByZWxldmFudCBvbiB0aGUgc3VyZmFjZSwgaXRzIGluY2x1c2lvbiBvciBsYWNrIHRoZXJlb2YgY291bGQgaGF2ZSBzdWJ0bGUsIHlldCBjcml0aWNhbCwgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBDaGVja2luZyBgVFhHQkVgIHdpbGwgaGVscCBtZSBlbnN1cmUgdGhhdCBJJiMzOTt2ZSBjb25zaWRlcmVkIGFsbCByZWxhdGVkIGZhY3RvcnMuIFRoaXMgZG91YmxlLWNoZWNrIGlzIHdvcnRoIHRoZSB0aW1lLCBhbmQgbWlnaHQgaGVscCBtZSBhdm9pZCBwb3RlbnRpYWxseSBvdmVybG9va2luZyBzb21ldGhpbmcgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVFhHQkUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTI4PWNvbmZpZyBOR0JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjQzOmNvbmZpZyBUWEdCRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSAxMC8yNS80MEdiRSBQQ0kgRXhwcmVzcyBhZGFwdGVycyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjgtXHR0cmlzdGF0ZSBcJiMzNDtXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY1OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBJbXBhY3Qgb2YgYSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBOR0JFYCwgYE5HQkVWRmAsIGBUWEdCRWAsIGFuZCBgVFhHQkVWRmAuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG1vZGlmeWluZyBgd3hfc2V0X3ZtZHFfcXVldWVzYCB3aXRoaW4gdGhlIGBsaWJ3eGAgbGlicmFyeS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHN1cmZhY2UuCgpUaGUga2V5IHF1ZXN0aW9uIGlzOiBDYW4gd2UgdHJpZ2dlciB0aGlzIGNvZGUgdGhyb3VnaCBQQ0kgZnV6emluZz8gQWhhLCB5ZXMhIFBDSSBwcm9iZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgdGVsbHMgdXMgdGhlcmUmIzM5O3MgYW4gZW50cnkgcG9pbnQgdG8gdGhlIGFmZmVjdGVkIGNvZGUuCgpOb3cgSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgcGF0Y2guIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFkZGluZyBgdm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO2Agd2l0aGluIGFuIGBlbHNlYCBicmFuY2guIFRoaXMgc3VnZ2VzdHMgYSBjb25kaXRpb25hbCBjaGFuZ2UgaW4gaG93IHRoZSBWaXJ0dWFsIE1hY2hpbmUgRGV2aWNlIFF1ZXVlIChWTURRKSBpcyBjb25maWd1cmVkLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoYXQgYGVsc2VgIHBhdGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBMZXQgbWUgcHVsbCB1cCBgd3hfc2V0X3ZtZHFfcXVldWVzYCBhbmQgc2VlIHdoYXQgaXQgaXMgcmVhbGx5IGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzc0LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3NzQ6XHRzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbjE3NzU6XHR7XG4xNzc2Olx0XHR1MTYgdm1kcV9pID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcbjE3Nzc6XHRcdHUxNiByc3NfaSA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbjE3Nzg6XHRcdHUxNiByc3NfbSA9IFdYX1JTU19ESVNBQkxFRF9NQVNLO1xuMTc3OTpcdFx0dTE2IHZtZHFfbSA9IDA7XG4xNzgwOlx0XG4xNzgxOlx0XHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXG4xNzgyOlx0XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG4xNzgzOlx0XHRcdHJldHVybiBmYWxzZTtcbjE3ODQ6XHRcdC8qIEFkZCBzdGFydGluZyBvZmZzZXQgdG8gdG90YWwgcG9vbCBjb3VudCAqL1xuMTc4NTpcdFx0dm1kcV9pICYjNDM7PSB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbjE3ODY6XHRcbjE3ODc6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuMTc4ODpcdFx0XHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xuMTc4OTpcdFx0XHR2bWRxX2kgPSBtaW5fdCh1MTYsIDY0LCB2bWRxX2kpO1xuMTc5MDpcdFxuMTc5MTpcdFx0XHQvKiA2NCBwb29sIG1vZGUgd2l0aCAyIHF1ZXVlcyBwZXIgcG9vbCwgb3JcbjE3OTI6XHRcdFx0ICogMTYvMzIvNjQgcG9vbCBtb2RlIHdpdGggMSBxdWV1ZSBwZXIgcG9vbFxuMTc5MzpcdFx0XHQgKi9cbjE3OTQ6XHRcdFx0aWYgKHZtZHFfaSBcdTAwM2UgMzIgfHwgcnNzX2kgXHUwMDNjIDQpIHtcbjE3OTU6XHRcdFx0XHR2bWRxX20gPSBXWF9WTURRXzJRX01BU0s7XG4xNzk2Olx0XHRcdFx0cnNzX20gPSBXWF9SU1NfMlFfTUFTSztcbjE3OTc6XHRcdFx0XHRyc3NfaSA9IG1pbl90KHUxNiwgcnNzX2ksIDIpO1xuMTc5ODpcdFx0XHQvKiAzMiBwb29sIG1vZGUgd2l0aCA0IHF1ZXVlcyBwZXIgcG9vbCAqL1xuMTc5OTpcdFx0XHR9IGVsc2Uge1xuMTgwMDpcdFx0XHRcdHZtZHFfbSA9IFdYX1ZNRFFfNFFfTUFTSztcbjE4MDE6XHRcdFx0XHRyc3NfbSA9IFdYX1JTU180UV9NQVNLO1xuMTgwMjpcdFx0XHRcdHJzc19pID0gNDtcbjE4MDM6XHRcdFx0fVxuMTgwNDpcdFx0fSBlbHNlIHtcbjE4MDU6XHRcdFx0dm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO1xuMTgwNjpcdFx0XHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xuMTgwNzpcdFx0XHR2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7XG4xODA4Olx0XG4xODA5Olx0XHRcdC8qIHdoZW4gVk1EUSBvbiwgZGlzYWJsZSBSU1MgKi9cbjE4MTA6XHRcdFx0cnNzX2kgPSAxO1xuMTgxMTpcdFx0fVxuMTgxMjpcdFxuMTgxMzpcdFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuMTgxNDpcdFx0dm1kcV9pIC09IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xuMTgxNTpcdFxuMTgxNjpcdFx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXG4xODE3Olx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG4xODE4Olx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG4xODE5Olx0XG4xODIwOlx0XHQvKiBsaW1pdCBSU1MgYmFzZWQgb24gdXNlciBpbnB1dCBhbmQgc2F2ZSBmb3IgbGF0ZXIgdXNlICovXG4xODIxOlx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10uaW5kaWNlcyA9IHJzc19pO1xuMTgyMjpcdFx0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLm1hc2sgPSByc3NfbTtcbjE4MjM6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODAxMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgYGVsc2VgIGJyYW5jaCwgc2V0dGluZyBgdm1kcV9tYCB0byBgV1hfVk1EUV8xUV9NQVNLYC4gUHJldmlvdXNseSwgaXQgd2FzIHplcm8sIGFuZCBub3cgaXQmIzM5O3MgMHg3Ri4gVGhpcyB2YWx1ZSBpcyB0aGVuIHdyaXR0ZW4gaW50byBgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGhhcmR3YXJlIGRyaXZlciBjaGFuZ2UuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBmdXp6aW5nLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGEgUENJIGRldmljZSBkcml2ZXIsIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgdGhhdCwgcmlnaHQ/IFllcywgaXQmIzM5O3MgUENJLCBhbmQgdGhhdCYjMzk7cyB1c3VhbGx5IHN5emthbGxlci1mcmllbmRseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQgY29uZmlncyBhcmUgZW5hYmxlZCDigJMgbGV0IG1lIHNlZSwgaXQgbG9va3MgbGlrZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGFyZSB0aGUgcmVsZXZhbnQgb25lcy4KCkhhbmcgb24gYSBzZWNvbmQsIHRob3VnaC4gSXMgYFdYX0ZMQUdfVk1EUV9FTkFCTEVEYCBhY3R1YWxseSBldmVyIHNldD8gVGhhdCB3b3VsZCBtYWtlIGEgZGlmZmVyZW5jZS4gSSYjMzk7ZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIHRoYXQgZmxhZyBpcyBiZWluZyBzZXQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtXWF9GTEFHX1ZNRFFfRU5BQkxFRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTM2LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNTM3Olx0XHRpZiAodGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE1MzgtXHRcdFx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5pbmRpY2VzID09IDQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTE2MTA9c3RhdGljIHZvaWQgd3hfdmxhbl9wcm9taXNjX2VuYWJsZShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE0LVx0dmxuY3RybCA9IHJkMzIod3gsIFdYX1BTUl9WTEFOX0NUTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTYxNTpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTYxNi1cdFx0Lyogd2UgbmVlZCB0byBrZWVwIHRoZSBWTEFOIGZpbHRlciBvbiBpbiBTUklPViAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjg3PXZvaWQgd3hfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTcxOS1cdFx0dm1vbHIgfD0gV1hfUFNSX1ZNX0wyQ1RMX01QRTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNzIwOlx0XHRpZiAodGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNzIxLVx0XHQgICAgdGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4MS1cdC8qIG9ubHkgcHJvY2VlZCBpZiBWTURxIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4MjpcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4My1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTk2ND1zdGF0aWMgaW50IHd4X3NldF9pbnRlcnJ1cHRfY2FwYWJpbGl0eShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk3NS1cdGRldl93YXJuKFx1MDAyNnd4LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtEaXNhYmxpbmcgVk1RUSBzdXBwb3J0XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTk3NjpcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTc3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTEtXHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTMtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02OS1cdGlmICh3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID09IDEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NzA6XHRcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NzM9c3RhdGljIGludCBfX3d4X2VuYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4LCB1OCBudW1fdmZzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NC1cdC8qIEVuYWJsZSBWTURxIGZsYWcgc28gZGV2aWNlIHdpbGwgYmUgc2V0IGluIFZNIG1vZGUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NTpcdHNldF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04Ni1cdGlmICghd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMjU3PWVudW0gd3hfcGZfZmxhZ3Mge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXHRXWF9GTEFHX1NXRldfUklORyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjEyNjA6XHRXWF9GTEFHX1ZNRFFfRU5BQkxFRCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNjEtXHRXWF9GTEFHX1ZMQU5fUFJPTUlTQyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAwMDkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTUklPViBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlIGlzIGNsZWFybHkgcmVsYXRlZCB0byBgX193eF9lbmFibGVfc3Jpb3ZgLiBSaWdodCwgdGhlIGZhY3QgdGhhdCB3ZSYjMzk7cmUgaGVyZSBpbXBsaWVzIHRoYXQgU1JJT1YgKnNob3VsZCogYmUgZW5hYmxlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgaWYgdGhhdCYjMzk7cyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhZmZhaXJzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIFNSSU9WIGlzIGFjdHVhbGx5IHR1cm5lZCBvbi4gV2hlcmUgaXMgdGhpcyBjYWxsIGNvbWluZyBmcm9tPyBBaCwgSSBzZWUsIGBfX3d4X2VuYWJsZV9zcmlvdmAgaXMgaW52b2tlZCBmcm9tIGB3eF9wY2lfc3Jpb3ZfY29uZmlndXJlYC4gVGhhdCBnaXZlcyBtZSBhIGJpdCBtb3JlIGNvbnRleHQuIE5vdywgd2hhdCYjMzk7cyBgd3hfcGNpX3NyaW92X2NvbmZpZ3VyZWAgYWN0dWFsbHkgZG9pbmc/IEkgbmVlZCB0byB0cmFjayB0aGlzIGRvd24gdG8gZ2V0IGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fd3hfZW5hYmxlX3NyaW92JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz00OT1zdGF0aWMgdm9pZCB3eF9zcmlvdl9jbGVhcl9kYXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjczOnN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy03NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE0OT1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjE2MTpcdGVyciA9IF9fd3hfZW5hYmxlX3NyaW92KHd4LCBudW1fdmZzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNjItXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDU2MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTUklPViBDb25maWd1cmF0aW9uIFBhdGgqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIGB3eF9wY2lfc3Jpb3ZfZW5hYmxlYCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpdHNlbGYgaXMgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgYXMgYC5zcmlvdl9jb25maWd1cmVgLiBUaGF0JiMzOTtzIGltcG9ydGFudCwgYW5kIHRoZSBmYWN0IHRoYXQgU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIFNSSU9WIGNvbmZpZ3VyYXRpb24gdGhyb3VnaCB0aGUgc3lzZnMgYHNyaW92X251bXZmc2AgZmlsZSBtZWFucyB0aGlzIGVudGlyZSBmbG93IGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCBhbmQgcG90ZW50aWFsbHkgdnVsbmVyYWJsZS4gVGhhdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCB0byBrZWVwIGluIG1pbmQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LiBJdCBzZWVtcyBpdCYjMzk7cyBvbmx5IHNldCB3aXRoaW4gYF9fd3hfZW5hYmxlX3NyaW92YC4gU28sIHdoZW4gU1JJT1YgaXMgZW5hYmxlZCwgdGhhdCBmbGFnICpzaG91bGQqIGJlIHNldC4gSWYgdGhhdCBmbGFnIGlzIHNldCwgdGhlbiBgd3hfc2V0X3ZtZHFfcXVldWVzYCBpcyBjYWxsZWQuLi4gYnV0IHdhaXQsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGl0c2VsZiBjYWxsZWQgZnJvbSBgd3hfc2V0X251bV9xdWV1ZXNgLCB3aGljaCBpcyBwYXJ0IG9mIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLgoKVGhpcyBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYCBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgc2V2ZXJhbCBrZXkgZXZlbnRzOiBwcm9iZSwgcmVzdW1lLCBhbmQsIGNydWNpYWxseSwgYHNldHVwX3RjYC4gVGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgYmVjYXVzZSB0aGVzZSBhcmUgY29tbW9uIG9wZXJhdGlvbnMuIEJ1dCBkb2VzIGVuYWJsaW5nIFNSSU9WIGFuZCBzZXR0aW5nIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYWN0dWFsbHkgKnRyaWdnZXIqIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgPyBUaGF04oCZcyB0aGUgY3JpdGljYWwgbGluay4gTGV0JiMzOTtzIGRpZyBiYWNrIGludG8gYF9fd3hfZW5hYmxlX3NyaW92YCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEl0IHNlZW1zIHRoZSBrZXkgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYW5kIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGluaXRpYWxpemF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDczLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNzM6XHRzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXG4gIDc0Olx0e1xuICA3NTpcdFx0aW50IGksIHJldCA9IDA7XG4gIDc2Olx0XHR1MzIgdmFsdWUgPSAwO1xuICA3NzpcdFxuICA3ODpcdFx0c2V0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbiAgNzk6XHRcdGRldl9pbmZvKFx1MDAyNnd4LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcJiMzNDtTUi1JT1YgZW5hYmxlZCB3aXRoICVkIFZGc1xcblwmIzM0OywgbnVtX3Zmcyk7XG4gIDgwOlx0XG4gIDgxOlx0XHRpZiAobnVtX3ZmcyA9PSA3IFx1MDAyNlx1MDAyNiB3eC1cdTAwM2VtYWMudHlwZSA9PSB3eF9tYWNfZW0pXG4gIDgyOlx0XHRcdHNldF9iaXQoV1hfRkxBR19JUlFfVkVDVE9SX1NIQVJFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuICA4MzpcdFxuICA4NDpcdFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xuICA4NTpcdFx0c2V0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpO1xuICA4NjpcdFx0aWYgKCF3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxuICA4NzpcdFx0XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID0gMTtcbiAgODg6XHRcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gbnVtX3ZmcztcbiAgODk6XHRcbiAgOTA6XHRcdHd4LVx1MDAzZXZmaW5mbyA9IGt6YWxsb2Nfb2JqcyhzdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlLCBudW1fdmZzKTtcbiAgOTE6XHRcdGlmICghd3gtXHUwMDNldmZpbmZvKVxuICA5MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAgOTM6XHRcbiAgOTQ6XHRcdHJldCA9IHd4X2FsbG9jX3ZmX21hY3ZsYW5zKHd4LCBudW1fdmZzKTtcbiAgOTU6XHRcdGlmIChyZXQpXG4gIDk2Olx0XHRcdHJldHVybiByZXQ7XG4gIDk3Olx0XG4gIDk4Olx0XHQvKiBJbml0aWFsaXplIGRlZmF1bHQgc3dpdGNoaW5nIG1vZGUgVkVCICovXG4gIDk5Olx0XHR3cjMybSh3eCwgV1hfUFNSX0NUTCwgV1hfUFNSX0NUTF9TV19FTiwgV1hfUFNSX0NUTF9TV19FTik7XG4gMTAwOlx0XG4gMTAxOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fdmZzOyBpJiM0MzsmIzQzOykge1xuIDEwMjpcdFx0XHQvKiBlbmFibGUgc3Bvb2YgY2hlY2tpbmcgZm9yIGFsbCBWRnMgKi9cbiAxMDM6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnNwb29mY2hrX2VuYWJsZWQgPSB0cnVlO1xuIDEwNDpcdFx0XHR3eC1cdTAwM2V2ZmluZm9baV0ubGlua19lbmFibGUgPSB0cnVlO1xuIDEwNTpcdFx0XHQvKiB1bnRydXN0IGFsbCBWRnMgKi9cbiAxMDY6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnRydXN0ZWQgPSBmYWxzZTtcbiAxMDc6XHRcdFx0Lyogc2V0IHRoZSBkZWZhdWx0IHhjYXN0IG1vZGUgKi9cbiAxMDg6XHRcdFx0d3gtXHUwMDNldmZpbmZvW2ldLnhjYXN0X21vZGUgPSBXWFZGX1hDQVNUX01PREVfTk9ORTtcbiAxMDk6XHRcdH1cbiAxMTA6XHRcbiAxMTE6XHRcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbiAxMTI6XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzg7XG4gMTEzOlx0XHR9IGVsc2Uge1xuIDExNDpcdFx0XHRpZiAobnVtX3ZmcyBcdTAwM2MgMzIpXG4gMTE1Olx0XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzMyO1xuIDExNjpcdFx0XHRlbHNlXG4gMTE3Olx0XHRcdFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzY0O1xuIDExODpcdFx0fVxuIDExOTpcdFx0d3IzMm0od3gsIFdYX0NGR19QT1JUX0NUTCxcbiAxMjA6XHRcdCAgICAgIFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfTUFTSyxcbiAxMjE6XHRcdCAgICAgIHZhbHVlKTtcbiAxMjI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIxNzYKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlNSLUlPViBJbnRlcnJ1cHQgSW5pdGlhbGl6YXRpb24gRGVlcCBEaXZlKioKCkhtbSwgc28gYHd4X3BjaV9zcmlvdl9lbmFibGVgLi4uIHJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBmdW5jdGlvbiB0aGF0IGtpY2tzIG9mZiBTUi1JT1YgZW5hYmxpbmcgZm9yIGEgc3BlY2lmaWMgUENJIGRldmljZSwgaW4gdGhpcyBjb250ZXh0LiBBbmQgaXQmIzM5O3MgY2FsbGluZyBgX193eF9lbmFibGVfc3Jpb3ZgLiBPa2F5LCBJIGtub3cgdGhhdCBpbnRlcm5hbCBoZWxwZXIuIE5vdywgdGhlIGtleSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzIHdoZXRoZXIgYF9fd3hfZW5hYmxlX3NyaW92YCAqcmUtaW5pdGlhbGl6ZXMqIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGZvciB0aGUgZGV2aWNlLiBJcyBpdCBqdXN0IGVuYWJsaW5nIHRoZSBTUi1JT1YgZnVuY3Rpb25hbGl0eSwgb3IgaXMgaXQgYWxzbyBwb3RlbnRpYWxseSBzdGVwcGluZyBvbiB0aGUgZXhpc3RpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24/IERvZXMgaXQgcG90ZW50aWFsbHkgcmUtcHJvZ3JhbSB0aGUgaW50ZXJydXB0IHZlY3RvcnMsIGludGVycnVwdCBhZmZpbml0eSwgaW50ZXJydXB0IGNvYWxlc2NpbmcsIE1TSSBzZXR0aW5ncywgb3IgTVNJLVggc2V0dGluZ3M/IFRoYXQmIzM5O3MgYSBjcnVjaWFsIGNvbnNpZGVyYXRpb24uIElmIGl0IGRvZXMgcmUtaW5pdGlhbGl6ZSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBhbnkgZXhpc3RpbmcgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gV2hhdCBoYXBwZW5zIGlmIFNSLUlPViBpcyBlbmFibGVkLCB0aGVuIGRpc2FibGVkLCB0aGVuIHJlLWVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgaXNzdWVzIHRoZXJlIHdpdGggaW50ZXJydXB0IHN0YXRlIHByZXNlcnZhdGlvbiBvciByZXN0b3JhdGlvbj8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgX193eF9lbmFibGVfc3Jpb3ZgIHRvIHNlZSBleGFjdGx5IHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kIHdpdGggdGhlIGludGVycnVwdCBjb250cm9sbGVyIGFuZCBpbnRlcnJ1cHQgdmVjdG9ycy4gVGhpcyByZS1pbml0aWFsaXphdGlvbiBwb3NzaWJpbGl0eSBjb3VsZCBiZSBhIG1ham9yIGdvdGNoYSBpZiBoYW5kbGVkIGluY29ycmVjdGx5LiBMZXQgbWUgYW5hbHl6ZSB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE0OTpcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqZGV2LFxuIDE1MDpcdFx0XHRcdCAgICAgICBpbnQgbnVtX3ZmcylcbiAxNTE6XHR7XG4gMTUyOlx0XHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKGRldik7XG4gMTUzOlx0XHRpbnQgZXJyID0gMCwgaTtcbiAxNTQ6XHRcbiAxNTU6XHRcdGlmIChuZXRpZl9pc19yeGZoX2NvbmZpZ3VyZWQod3gtXHUwMDNlbmV0ZGV2KSkge1xuIDE1NjpcdFx0XHR3eF9lcnIod3gsIFwmIzM0O0Nhbm5vdCBlbmFibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcblwmIzM0Oyk7XG4gMTU3Olx0XHRcdHd4X2Vycih3eCwgXCYjMzQ7UnVuICYjMzk7ZXRodG9vbCAtWCBcdTAwM2NpZlx1MDAzZSBkZWZhdWx0JiMzOTsgdG8gcmVzZXQgUlNTIHRhYmxlXFxuXCYjMzQ7KTtcbiAxNTg6XHRcdFx0cmV0dXJuIC1FQlVTWTtcbiAxNTk6XHRcdH1cbiAxNjA6XHRcbiAxNjE6XHRcdGVyciA9IF9fd3hfZW5hYmxlX3NyaW92KHd4LCBudW1fdmZzKTtcbiAxNjI6XHRcdGlmIChlcnIpXG4gMTYzOlx0XHRcdHJldHVybiBlcnI7XG4gMTY0Olx0XG4gMTY1Olx0XHR3eC1cdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcbiAxNjY6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV92ZnM7IGkmIzQzOyYjNDM7KVxuIDE2NzpcdFx0XHR3eF92Zl9jb25maWd1cmF0aW9uKGRldiwgKGkgfCBXWF9WRl9FTkFCTEUpKTtcbiAxNjg6XHRcbiAxNjk6XHRcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xuIDE3MDpcdFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcbiAxNzE6XHRcbiAxNzI6XHRcdGVyciA9IHBjaV9lbmFibGVfc3Jpb3YoZGV2LCBudW1fdmZzKTtcbiAxNzM6XHRcdGlmIChlcnIpIHtcbiAxNzQ6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtGYWlsZWQgdG8gZW5hYmxlIFBDSSBzcmlvdjogJWRcXG5cJiMzNDssIGVycik7XG4gMTc1Olx0XHRcdGdvdG8gZXJyX291dDtcbiAxNzY6XHRcdH1cbiAxNzc6XHRcbiAxNzg6XHRcdHJldHVybiBudW1fdmZzO1xuIDE3OTpcdGVycl9vdXQ6XG4gMTgwOlx0XHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcbiAxODE6XHRcdHJldHVybiBlcnI7XG4gMTgyOlx0fVxuIDE4MzpcdFxuIDE4NDpcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKmRldilcbiAxODU6XHR7XG4gMTg2Olx0XHRzdHJ1Y3Qgd3ggKnd4ID0gcGNpX2dldF9kcnZkYXRhKGRldik7XG4gMTg3Olx0XG4gMTg4Olx0XHRpZiAobmV0aWZfaXNfcnhmaF9jb25maWd1cmVkKHd4LVx1MDAzZW5ldGRldikpIHtcbiAxODk6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtDYW5ub3QgZGlzYWJsZSBTUi1JT1Ygd2hpbGUgUlhGSCBpcyBjb25maWd1cmVkXFxuXCYjMzQ7KTtcbiAxOTA6XHRcdFx0d3hfZXJyKHd4LCBcJiMzNDtSdW4gJiMzOTtldGh0b29sIC1YIFx1MDAzY2lmXHUwMDNlIGRlZmF1bHQmIzM5OyB0byByZXNldCBSU1MgdGFibGVcXG5cJiMzNDspO1xuIDE5MTpcdFx0XHRyZXR1cm4gLUVCVVNZO1xuIDE5MjpcdFx0fVxuIDE5MzpcdFxuIDE5NDpcdFx0d3hfZGlzYWJsZV9zcmlvdih3eCk7XG4gMTk1Olx0XHR3eF9zcmlvdl9yZWluaXQod3gpO1xuIDE5NjpcdFxuIDE5NzpcdFx0cmV0dXJuIDA7XG4gMTk4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM3MAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHd4X3NyaW92X3JlaW5pdCoqCgpPa2F5LCBzbyBgd3hfc3Jpb3ZfcmVpbml0YCBoYXMgYmVlbiBjYWxsZWQuIFRoYXQmIzM5O3MgbXkgY3VlIHRvIHJlYWxseSBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgaXRzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoaXMgcm91dGluZS4gTGV0IG1lIHN0YXJ0IGJ5IHRyYWNpbmcgaXRzIGV4ZWN1dGlvbiBwYXRoLCBkaXNzZWN0aW5nIGVhY2ggbGluZSBvZiBjb2RlLCBhbmQgZXhhbWluaW5nIGFueSByZWxhdGVkIGRhdGEgc3RydWN0dXJlcyBpdCBpbnRlcmFjdHMgd2l0aC4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgY29udGV4dHMgaW4gd2hpY2ggaXQmIzM5O3MgaW52b2tlZCDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG9yIGVycm9yIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhpcyByZWluaXRpYWxpemF0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgcmUtaW5pdD8gRG9lcyBpdCBwb3RlbnRpYWxseSBjYXVzZSBhbnkgc2VydmljZSBpbnRlcnJ1cHRpb25zPyBJJiMzOTtsbCBhbHNvIGJlIHNlYXJjaGluZyBmb3IgcmVsYXRlZCBkb2N1bWVudGF0aW9uIG9yIHByaW9yIGJ1ZyByZXBvcnRzIHRvIHNlZSBpZiB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGEgc291cmNlIG9mIHByb2JsZW1zIGluIHRoZSBwYXN0IG9yIG1heSBiZSBhIHNvdXJjZSBvZiBmdXR1cmUgcHJvYmxlbXMuIEluIHRoZSBlbmQsIEkgbmVlZCBhIHJvY2stc29saWQgdW5kZXJzdGFuZGluZyBvZiBpdHMgcHVycG9zZSBhbmQgaW1wYWN0IG9uIHRoZSBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3d4X3NyaW92X3JlaW5pdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NzM9c3RhdGljIGludCBfX3d4X2VuYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4LCB1OCBudW1fdmZzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6MTMwOnN0YXRpYyB2b2lkIHd4X3NyaW92X3JlaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTEzMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE0OT1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTY5LVx0LyogcmVzZXQgYmVmb3JlIGVuYWJsaW5nIFNSSU9WIHRvIGF2b2lkIG1haWxib3ggaXNzdWVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6MTcwOlx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE4ND1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9kaXNhYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTE5NC1cdHd4X2Rpc2FibGVfc3Jpb3Yod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjE5NTpcdHd4X3NyaW92X3JlaW5pdCh3eCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDA4NwoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgYHd4X3NyaW92X3JlaW5pdGAqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGlzIGB3eF9zcmlvdl9yZWluaXRgIGZ1bmN0aW9uLiBJJiMzOTttIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHdoYXQgSSBleHBlY3QgdG8gc2VlIOKAkyBsaWtlbHkgc29tZSBjbGVhbnVwLCByZWNvbmZpZ3VyYXRpb24sIGFuZCBtYXliZSByZXNvdXJjZSByZXNldHRpbmcgcmVsYXRlZCB0byBTaW5nbGUgUm9vdCBJL08gVmlydHVhbGl6YXRpb24gKFNSLUlPVikgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgV1ggKHByZXN1bWFibHksIFdpbmRvd3MgZVh0ZW5zaWJsZSkgZW52aXJvbm1lbnQuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgc2VxdWVuY2luZyBvZiBvcGVyYXRpb25zIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb25zLiBBIHRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUsIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyAoVkZzKSwgYW5kIHRoZSBwaHlzaWNhbCBmdW5jdGlvbiAoUEYpIGlzIGNydWNpYWwgaGVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMsIGVzcGVjaWFsbHkgaWYgdGhlcmUmIzM5O3MgYW55IHNoYXJlZCBzdGF0ZS4gQW5kIG9mIGNvdXJzZSwgSSYjMzk7bGwgYmUgc2NydXRpbml6aW5nIGhvdyBpdCBoYW5kbGVzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgdGhhdCBhcmUgYSBjbGFzc2ljIHByb2JsZW0gd2hlbiByZWluaXRpYWxpemluZyBzdWNoIGEgY29tcGxleCBzeXN0ZW0uIExldCYjMzk7cyBzZWUgaWYgdGhpcyBjb2RlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBlYXN5IHRvIGZvbGxvdy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBub3QgYSBzcGFnaGV0dGkgbWVzcyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEzMDpcdHN0YXRpYyB2b2lkIHd4X3NyaW92X3JlaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuIDEzMTpcdHtcbiAxMzI6XHRcdHJ0bmxfbG9jaygpO1xuIDEzMzpcdFx0d3gtXHUwMDNlc2V0dXBfdGMod3gtXHUwMDNlbmV0ZGV2LCBuZXRkZXZfZ2V0X251bV90Yyh3eC1cdTAwM2VuZXRkZXYpKTtcbiAxMzQ6XHRcdHJ0bmxfdW5sb2NrKCk7XG4gMTM1Olx0fVxuIDEzNjpcdFxuIDEzNzpcdHZvaWQgd3hfZGlzYWJsZV9zcmlvdihzdHJ1Y3Qgd3ggKnd4KVxuIDEzODpcdHtcbiAxMzk6XHRcdGlmICghcGNpX3Zmc19hc3NpZ25lZCh3eC1cdTAwM2VwZGV2KSlcbiAxNDA6XHRcdFx0cGNpX2Rpc2FibGVfc3Jpb3Yod3gtXHUwMDNlcGRldik7XG4gMTQxOlx0XHRlbHNlXG4gMTQyOlx0XHRcdHd4X2Vycih3eCwgXCYjMzQ7VW5sb2FkaW5nIGRyaXZlciB3aGlsZSBWRnMgYXJlIGFzc2lnbmVkLlxcblwmIzM0Oyk7XG4gMTQzOlx0XG4gMTQ0Olx0XHQvKiBjbGVhciBmbGFncyBhbmQgZnJlZSBhbGxsb2NlZCBkYXRhICovXG4gMTQ1Olx0XHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcbiAxNDY6XHR9XG4gMTQ3Olx0RVhQT1JUX1NZTUJPTCh3eF9kaXNhYmxlX3NyaW92KTtcbiAxNDg6XHRcbiAxNDk6XHRzdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ3MTYKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVHJhbnNtaXNzaW9uIENvbnRyb2wgU2V0dXAqKgoKT2theSwgc28gSSBzZWUgYSBjYWxsIHRvIGB3eC0mZ3Q7c2V0dXBfdGNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCBmb3IgaW52ZXN0aWdhdGlvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgbGlrZWx5IGludm9sdmVzIGNvbmZpZ3VyaW5nIHRoZSB0cmFuc21pc3Npb24gY29udHJvbCBhc3BlY3RzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGxvb2sgYXQgYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgZmlyc3QuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXR1cF90Y2AgYmVjYXVzZSBvZiBob3cgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGlzIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJiMzOTtkIGV4cGVjdCB0aGVzZSB0byBiZSB0aGUgcG9pbnRzIG9mIGVudHJ5IGFuZCBjb25maWd1cmF0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgaW50byB0aG9zZSBmaWxlcyBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZXR1cF90YyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQwMSBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTMwMT1uZG9fY2hhbmdlX3J4X2ZsYWdzOlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zMDQtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6MzA1Om5kb19zZXR1cF90YzpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRkZXZpY2VzLnJzdC0zMDYtXHRMb2NraW5nIGRlcGVuZHMgb24gYGB0Y19zZXR1cF90eXBlYGAuIEZvciBtb3N0IHR5cGVzIHRoZSBjYWxsYmFja1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTEwMD1oYXJkd2FyZSBvZmZsb2FkIGZlYXR1cmUgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdXNpbmcgdGhlIHRjLWV0ZlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTAxOmNvbW1hbmQgdG8gY2FsbCB0aGUgZHJpdmVyJiMzOTtzIG5kb19zZXR1cF90YygpIGNhbGxiYWNrLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTAyLVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0PTExNT10aW1lIGhhcmR3YXJlIG9mZmxvYWQgZmVhdHVyZSBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBieSB1c2luZyB0aGVcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0OjExNjp0Yy1ldGYgY29tbWFuZCB0byBjYWxsIHRoZSBkcml2ZXImIzM5O3MgbmRvX3NldHVwX3RjKCkgY2FsbGJhY2suIFdoZW4gZW50ZXJpbmdcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy94c2stdHgtbWV0YWRhdGEucnN0LTExNy1UU04gbW9kZSwgdGhlIGlnYyBkcml2ZXIgd2lsbCByZXNldCB0aGUgZGV2aWNlIGFuZCBjcmVhdGUgYSBkZWZhdWx0IFFidlxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYz0xMDk9RVhQT1JUX1NZTUJPTCh0Y21faXRjbV9wcmVzZW50KTtcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xMTAtXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTExOnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9iYW5rKHU4IHR5cGUsIHU4IGJhbmssIHU4IGJhbmtzLFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTExMi1cdFx0XHRcdCAgdTMyICpvZmZzZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4NS0gKiB1bmRlZmluZWQgZXJyb3Igd2hlbiByZWFkaW5nIHRoZSBUQ00gcmVnaW9uIHJlZ2lzdGVyIGluIHRoZVxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjE4NjogKiBzZXR1cF90Y21fYmFuayBmdW5jdGlvbiAoYWJvdmUpLlxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4Ny0gKlxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYz0yNTY9dm9pZCBfX2luaXQgdGNtX2luaXQodm9pZClcbi0tXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzAyLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkdGNtX2JhbmtzOyBpJiM0MzsmIzQzOykge1xuYXJjaC9hcm0va2VybmVsL3RjbS5jOjMwMzpcdFx0XHRyZXQgPSBzZXR1cF90Y21fYmFuaygwLCBpLCBkdGNtX2JhbmtzLCBcdTAwMjZkdGNtX2VuZCk7XG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzA0LVx0XHRcdGlmIChyZXQpXG4tLVxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTM0MC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaXRjbV9iYW5rczsgaSYjNDM7JiM0MzspIHtcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozNDE6XHRcdFx0cmV0ID0gc2V0dXBfdGNtX2JhbmsoMSwgaSwgaXRjbV9iYW5rcywgXHUwMDI2aXRjbV9lbmQpO1xuYXJjaC9hcm0va2VybmVsL3RjbS5jLTM0Mi1cdFx0XHRpZiAocmV0KVxuLS1cbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zODMtICovXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6Mzg0OnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9wb29sKHZvaWQpXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzg1LXtcbi0tXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtNDM0LVxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjQzNTpjb3JlX2luaXRjYWxsKHNldHVwX3RjbV9wb29sKTtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz03Nz1zdHJ1Y3QgaW14X2dwdF9kYXRhIHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy04MC1cdGludCByZWdfdGNtcDtcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjgxOlx0dm9pZCAoKmdwdF9zZXR1cF90Y3RsKShzdHJ1Y3QgaW14X3RpbWVyICppbXh0bSk7XG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy04Mi1cdHZvaWQgKCpncHRfaXJxX2VuYWJsZSkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTI3MT1zdGF0aWMgaW50IF9faW5pdCBteGNfY2xvY2tldmVudF9pbml0KHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTI5MC1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjI5MTpzdGF0aWMgdm9pZCBpbXgxX2dwdF9zZXR1cF90Y3RsKHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMjkyLXtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0yOTgtXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzoyOTk6c3RhdGljIHZvaWQgaW14MzFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMDAte1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjMxMjpzdGF0aWMgdm9pZCBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMTMte1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTMyOT1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgxX2dwdF9kYXRhID0ge1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNS1cdC5ncHRfaXJxX2Fja25vd2xlZGdlID0gaW14MV9ncHRfaXJxX2Fja25vd2xlZGdlLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MzM2Olx0LmdwdF9zZXR1cF90Y3RsID0gaW14MV9ncHRfc2V0dXBfdGN0bCxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNy1cdC5zZXRfbmV4dF9ldmVudCA9IG14MV8yX3NldF9uZXh0X2V2ZW50LFxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM0MD1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgyMV9ncHRfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNDYtXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDIxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozNDc6XHQuZ3B0X3NldHVwX3RjdGwgPSBpbXgxX2dwdF9zZXR1cF90Y3RsLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzQ4LVx0LnNldF9uZXh0X2V2ZW50ID0gbXgxXzJfc2V0X25leHRfZXZlbnQsXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14X2dwdF9kYXRhIGlteDMxX2dwdF9kYXRhID0ge1xuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1Ny1cdC5ncHRfaXJxX2Fja25vd2xlZGdlID0gaW14MzFfZ3B0X2lycV9hY2tub3dsZWRnZSxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM1ODpcdC5ncHRfc2V0dXBfdGN0bCA9IGlteDMxX2dwdF9zZXR1cF90Y3RsLFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzU5LVx0LnNldF9uZXh0X2V2ZW50ID0gdjJfc2V0X25leHRfZXZlbnQsXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzYyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW14X2dwdF9kYXRhIGlteDZkbF9ncHRfZGF0YSA9IHtcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNjgtXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDMxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozNjk6XHQuZ3B0X3NldHVwX3RjdGwgPSBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwsXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNzAtXHQuc2V0X25leHRfZXZlbnQgPSB2Ml9zZXRfbmV4dF9ldmVudCxcbi0tXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zNzM9c3RhdGljIGludCBfX2luaXQgX214Y190aW1lcl9pbml0KHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxuLS1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMC1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjQxMTpcdGlteHRtLVx1MDAzZWdwdC1cdTAwM2VncHRfc2V0dXBfdGN0bChpbXh0bSk7XG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy00MTItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYz0xNTQ2PXN0YXRpYyB2b2lkIGdmeF92Nl8wX3NldHVwX3NwaShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzQtLyoqXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE1NzU6ICogZ2Z4X3Y2XzBfc2V0dXBfdGNjKCkgLSBzZXR1cCB3aGljaCBUQ0NzIGFyZSB1c2VkXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzYtICpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1OTYtICovXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE1OTc6c3RhdGljIHZvaWQgZ2Z4X3Y2XzBfc2V0dXBfdGNjKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk4LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jPTE2NDQ9c3RhdGljIHZvaWQgZ2Z4X3Y2XzBfY29uc3RhbnRzX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNzk2LVx0Z2Z4X3Y2XzBfc2V0dXBfcmIoYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE3OTc6XHRnZnhfdjZfMF9zZXR1cF90Y2MoYWRldik7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE3OTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTAwNj1zdGF0aWMgdm9pZCBoZWxsY3JlZWtfc2V0dXBfY3B1X2FuZF90dW5uZWxfcG9ydChzdHJ1Y3QgaGVsbGNyZWVrICpoZWxsY3JlZWspXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyNy1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjEwMjg6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3NldHVwX3RjX2lkZW50aXR5X21hcHBpbmcoc3RydWN0IGhlbGxjcmVlayAqaGVsbGNyZWVrKVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTM4MT1zdGF0aWMgaW50IGhlbGxjcmVla19zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQxOC1cdC8qIENvbmZpZ3VyZSBQQ1AgXHUwMDNjLVx1MDAzZSBUQyBtYXBwaW5nICovXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxNDE5Olx0aGVsbGNyZWVrX3NldHVwX3RjX2lkZW50aXR5X21hcHBpbmcoaGVsbGNyZWVrKTtcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0MjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTg1Nz1zdGF0aWMgaW50IGhlbGxjcmVla190Y19xdWVyeV9jYXBzKHN0cnVjdCB0Y19xdWVyeV9jYXBzX2Jhc2UgKmJhc2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3MS1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE4NzI6c3RhdGljIGludCBoZWxsY3JlZWtfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3My1cdFx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkyMC1cdC5wb3J0X3J4dHN0YW1wXHQgICAgICAgPSBoZWxsY3JlZWtfcG9ydF9yeHRzdGFtcCxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE5MjE6XHQucG9ydF9zZXR1cF90Y1x0ICAgICAgID0gaGVsbGNyZWVrX3BvcnRfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTIyLVx0LnBvcnRfc3RwX3N0YXRlX3NldCAgICA9IGhlbGxjcmVla19wb3J0X3N0cF9zdGF0ZV9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjUyNj1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6ODQ2M19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI1NjItXHQucG9ydF9yeHRzdGFtcFx0XHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjU2MzpcdC5wb3J0X3NldHVwX3RjXHRcdD0ga3N6X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU2NC1cdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cdD0ga3N6X3BvcnRfZ2V0X2RlZmF1bHRfcHJpbyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNTczPWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o4N3h4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxMi1cdC5wb3J0X3J4dHN0YW1wXHRcdD0ga3N6X3BvcnRfcnh0c3RhbXAsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNjEzOlx0LnBvcnRfc2V0dXBfdGNcdFx0PSBrc3pfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjE0LVx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1x0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI2MjM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzejg4eHhfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjY1LVx0LnBvcnRfcnh0c3RhbXBcdFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjY6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IGtzel9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NjctXHQucG9ydF9nZXRfZGVmYXVsdF9wcmlvXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM9MjA2NT1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6OTQ3N19zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OTQ3Ny5jLTIxMTItXHQuY2xzX2Zsb3dlcl9kZWxcdFx0PSBrc3o5NDc3X2Nsc19mbG93ZXJfZGVsLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmM6MjExMzpcdC5wb3J0X3NldHVwX3RjXHRcdD0ga3N6X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjExNC1cdC5zdXBwb3J0X2VlZVx0XHQ9IGtzejk0Nzdfc3VwcG9ydF9lZWUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzI3OD1zdGF0aWMgaW50IGNpbmNfY2FsKHMzMiBpZGxlX3Nsb3BlLCBzMzIgc2VuZF9zbG9wZSwgdTMyICpidylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzA4LVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzMwOTpzdGF0aWMgaW50IGtzel9zZXR1cF90Y19tb2RlKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1OCBzY2hlZHVsZXIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzEwLVx0XHRcdCAgICAgdTggc2hhcGVyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzMTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzE3OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMxOC1cdFx0XHQgICAgc3RydWN0IHRjX2Nic19xb3B0X29mZmxvYWQgKnFvcHQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNS1cdGlmICghcW9wdC1cdTAwM2VlbmFibGUpXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzM2Olx0XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfV1JSLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNy1cdFx0XHRcdFx0IE1USV9TSEFQSU5HX09GRik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzM2MS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjMzNjI6XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzYzLVx0XHRcdFx0IE1USV9TSEFQSU5HX1NSUCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzQ5MT1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfc3RyaWN0KHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQ5OC1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM0OTk6XHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTAwLVx0XHRcdFx0IE1USV9TSEFQSU5HX09GRik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzUwMz1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfd3JyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzUxMS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM1MTI6XHRyZXQgPSBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9XUlIsXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTEzLVx0XHRcdFx0TVRJX1NIQVBJTkdfT0ZGKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zNjE5PXN0YXRpYyBpbnQga3N6X3RjX3NldHVwX3FkaXNjX2V0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTYtXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozNjU3OmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTgtXHRcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NjEtXHRjYXNlIFRDX1NFVFVQX1FESVNDX0NCUzpcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NjI6XHRcdHJldHVybiBrc3pfc2V0dXBfdGNfY2JzKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzY2My1cdGNhc2UgVENfU0VUVVBfUURJU0NfRVRTOlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQ0OD1pbnQga3N6X3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmgtNDUwLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDUxOmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oLTQ1Mi1cdFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmM9OTUzPWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBsYW45Mzd4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYy05OTMtXHQucG9ydF9yeHRzdGFtcFx0XHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYzo5OTQ6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IGtzel9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTk1LVx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1x0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMjc1PXN0YXRpYyBpbnQgbXQ3NTN4X3RjX3NldHVwX3FkaXNjX3RiZihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEwLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jOjMzMTE6c3RhdGljIGludCBtdDc1M3hfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEyLVx0XHRcdCAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jPTMzNDg9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBtdDc1MzBfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4My1cdC5jb25kdWl0X3N0YXRlX2NoYW5nZVx0PSBtdDc1M3hfY29uZHVpdF9zdGF0ZV9jaGFuZ2UsXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM4NDpcdC5wb3J0X3NldHVwX3RjXHRcdD0gbXQ3NTN4X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzODUtXHQucG9ydF9oc3Jfam9pblx0XHQ9IGRzYV9wb3J0X3NpbXBsZV9oc3Jfam9pbixcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjAzMz1zdGF0aWMgdm9pZCBmZWxpeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjA0MC1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQxOnN0YXRpYyBpbnQgZmVsaXhfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIwNDItXHRcdFx0ICAgICAgIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQ3LVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIwNDg6XHRpZiAoZmVsaXgtXHUwMDNlaW5mby1cdTAwM2Vwb3J0X3NldHVwX3RjKVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIwNDk6XHRcdHJldHVybiBmZWxpeC1cdTAwM2VpbmZvLVx1MDAzZXBvcnRfc2V0dXBfdGMoZHMsIHBvcnQsIHR5cGUsIHR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmMtMjA1MC1cdGVsc2Vcbi0tXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjMwNj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGZlbGl4X3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjEtXHQuY2xzX2Zsb3dlcl9zdGF0c1x0XHQ9IGZlbGl4X2Nsc19mbG93ZXJfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjM2MjpcdC5wb3J0X3NldHVwX3RjXHRcdFx0PSBmZWxpeF9wb3J0X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjMtXHQuZGV2bGlua19zYl9wb29sX2dldFx0XHQ9IGZlbGl4X3NiX3Bvb2xfZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaD0yMj1zdHJ1Y3QgZmVsaXhfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oLTU3LVx0dm9pZFx0KCptZGlvX2J1c19mcmVlKShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpO1xuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oOjU4Olx0aW50XHQoKnBvcnRfc2V0dXBfdGMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmgtNTktXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9MTY2Mj1zdGF0aWMgaW50IHZzYzk5NTlfcW9zX3BvcnRfbXFwcmlvKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3My1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjE2NzQ6c3RhdGljIGludCB2c2M5OTU5X3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTE2NzUtXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM9MjY1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGZlbGl4X2luZm8gZmVsaXhfaW5mb192c2M5OTU5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2NzgtXHQucG9ydF9tb2Rlc1x0XHQ9IHZzYzk5NTlfcG9ydF9tb2RlcyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jOjI2Nzk6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IHZzYzk5NTlfcG9ydF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2ODAtXHQucG9ydF9zY2hlZF9zcGVlZF9zZXRcdD0gdnNjOTk1OV9zY2hlZF9zcGVlZF9zZXQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYz0zMD1zdGF0aWMgaW50IHNqYTExMDVfc2V0dXBfYmNhc3RfcG9saWNlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAxLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxMDI6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAzLVx0XHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jPTE3ND1zdGF0aWMgaW50IHNqYTExMDVfZmxvd2VyX3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYy0xODUtXHRjYXNlIFNKQTExMDVfS0VZX1RDOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxODY6XHRcdHJldHVybiBzamExMTA1X3NldHVwX3RjX3BvbGljZXIocHJpdiwgZXh0YWNrLCBjb29raWUsIHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jLTE4Ny1cdFx0XHRcdFx0XHRrZXktXHUwMDNldGMucGNwLCByYXRlX2J5dGVzX3Blcl9zZWMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MjE1MT1zdGF0aWMgaW50IHNqYTExMDVfZGVsZXRlX2Nic19zaGFwZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjE2OC1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjIxNjk6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjE3MC1cdFx0XHRcdHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jPTI3NTE9c3RhdGljIGludCBzamExMTA1X2dldF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1NS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjI3NTY6c3RhdGljIGludCBzamExMTA1X3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTI3NTctXHRcdFx0XHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2MS1cdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2MjpcdFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2My1cdGNhc2UgVENfU0VUVVBfUURJU0NfQ0JTOlxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2NDpcdFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfY2JzKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2NS1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzE0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHNqYTExMDVfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMTczLVx0LnBvcnRfdHh0c3RhbXBcdFx0PSBzamExMTA1X3BvcnRfdHh0c3RhbXAsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMTc0Olx0LnBvcnRfc2V0dXBfdGNcdFx0PSBzamExMTA1X3BvcnRfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0zMTc1LVx0LnBvcnRfbWlycm9yX2FkZFx0PSBzamExMTA1X21pcnJvcl9hZGQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuYz00NjY9Ym9vbCBzamExMTA1X2dhdGluZ19jaGVja19jb25mbGljdHMoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuYy01MDgtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5jOjUwOTppbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTEwLVx0XHRcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaD00MT1zdHJ1Y3Qgc2phMTEwNV90YXNfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaC01Mi1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg6NTM6aW50IHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTU0LVx0XHRcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg9NzI9c3RydWN0IHNqYTExMDVfdGFzX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmgtNzUtXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oOjc2OnN0YXRpYyBpbmxpbmUgaW50IHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc3LVx0XHRcdFx0XHQgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICphZG1pbilcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQwMz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQwNDp5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGNfdGJmX3BvcnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDA1LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgdGNfdGJmX3FvcHRfb2ZmbG9hZCAqcW9wdClcbi0tXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQ1NT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQ1Njp5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDU3LVx0XHRcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDYyLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE0NjM6XHRcdHJldHVybiB5dDkyMXhfZHNhX3BvcnRfc2V0dXBfdGNfdGJmX3BvcnQoZHMsIHBvcnQsIHFvcHQpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE0NjQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ1NDQ9c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cF9kc2Eoc3RydWN0IHl0OTIxeF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NjE3LVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ2MTg6c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cF90YyhzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTQ3MDE9c3RhdGljIGludCB5dDkyMXhfY2hpcF9zZXR1cChzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3MTQtXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDcxNTpcdHJlcyA9IHl0OTIxeF9jaGlwX3NldHVwX3RjKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTQ3MTYtXHRpZiAocmVzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYz00Nzk4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgeXQ5MjF4X2RzYV9zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE2LVx0LnBvcnRfcG9saWNlcl9hZGRcdD0geXQ5MjF4X2RzYV9wb3J0X3BvbGljZXJfYWRkLFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MTc6XHQucG9ydF9zZXR1cF90Y1x0XHQ9IHl0OTIxeF9kc2FfcG9ydF9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE4LVx0LyogYWNsICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0yOTE4PXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19tYXRjaGFsbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk1NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NTUtXHRcdFx0XHRcdHZvaWQgKnR5cGVfZGF0YSwgdm9pZCAqY2JfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjUtXHRjYXNlIFRDX1NFVFVQX0NMU0ZMT1dFUjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk2NjpcdFx0cmV0dXJuIGFpcm9oYV9wcGVfc2V0dXBfdGNfYmxvY2tfY2IoXHUwMDI2ZXRoLVx1MDAzZXBwZS1cdTAwM2VkZXYsIHR5cGVfZGF0YSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjctXHRjYXNlIFRDX1NFVFVQX0NMU01BVENIQUxMOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3NS1cdFx0XHRcdCAgICAgc3RydWN0IGZsb3dfYmxvY2tfb2ZmbG9hZCAqZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5Nzc6XHRmbG93X3NldHVwX2NiX3QgKmNiID0gYWlyb2hhX2Rldl9zZXR1cF90Y19ibG9ja19jYjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3OC1cdHN0YXRpYyBMSVNUX0hFQUQoYmxvY2tfY2JfbGlzdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTAwPXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEwOS1cdGNhc2UgVENfU0VUVVBfRlQ6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjMxMTA6XHRcdHJldHVybiBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrKGRldiwgdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzExMS1cdGRlZmF1bHQ6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTE2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYWlyb2hhX25ldGRldl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI0LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gYWlyb2hhX2Rldl9zZXRfbWFjYWRkcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEyNTpcdC5uZG9fc2V0dXBfdGNcdFx0PSBhaXJvaGFfZGV2X3RjX3NldHVwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI2LX07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02ODE9dm9pZCBhaXJvaGFfcHBlX2NoZWNrX3NrYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjgyLVx0XHRcdCAgdTE2IGhhc2gsIGJvb2wgcnhfd2xhbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oOjY4MzppbnQgYWlyb2hhX3BwZV9zZXR1cF90Y19ibG9ja19jYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgdm9pZCAqdHlwZV9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjg0LWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNDA2PXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9vZmZsb2FkX3NldHVwKHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNDQ2OmludCBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKHN0cnVjdCBhaXJvaGFfcHBlX2RldiAqZGV2LCB2b2lkICp0eXBlX2RhdGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NDcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MTU2NT1pbnQgYWlyb2hhX3BwZV9pbml0KHN0cnVjdCBhaXJvaGFfZXRoICpldGgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoxNTc1Olx0cHBlLVx1MDAzZWRldi5vcHMuc2V0dXBfdGNfYmxvY2tfY2IgPSBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0xNTc2LVx0cHBlLVx1MDAzZWRldi5vcHMuY2hlY2tfc2tiID0gYWlyb2hhX3BwZV9jaGVja19za2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xODkwPXN0YXRpYyB2b2lkIHhnYmVfcG9sbF9jb250cm9sbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy0xOTEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxOTEzOnN0YXRpYyBpbnQgeGdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMTkxNC1cdFx0XHQgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTEtI2VuZGlmXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTI6XHQubmRvX3NldHVwX3RjXHRcdD0geGdiZV9zZXR1cF90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1My1cdC5uZG9fZml4X2ZlYXR1cmVzXHQ9IHhnYmVfZml4X2ZlYXR1cmVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz0zNDI9c3RhdGljIGludCBhcV92YWxpZGF0ZV9tcXByaW9fb3B0KHN0cnVjdCBhcV9uaWNfcyAqc2VsZixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtMzY4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM2OTpzdGF0aWMgaW50IGFxX25kb19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zNzAtXHRcdFx0ICAgdm9pZCAqdHlwZV9kYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zOTMtXHRcdFx0ZG9fZGl2KG1heF9yYXRlLCBBUV9NQlBTX0RJVklTT1IpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM5NDpcdFx0XHRhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoYXFfbmljLCBpLCAodTMyKW1heF9yYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zOTUtXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDAwLVx0XHRcdGRvX2RpdihtaW5fcmF0ZSwgQVFfTUJQU19ESVZJU09SKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDE6XHRcdFx0YXFfbmljX3NldHVwX3RjX21pbl9yYXRlKGFxX25pYywgaSwgKHUzMiltaW5fcmF0ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDAyLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDU6XHRyZXR1cm4gYXFfbmljX3NldHVwX3RjX21xcHJpbyhhcV9uaWMsIG1xcHJpby1cdTAwM2Vxb3B0Lm51bV90YyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDYtXHRcdFx0XHQgICAgICBtcXByaW8tXHUwMDNlcW9wdC5wcmlvX3RjX21hcCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFxX25kZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NjktXHQubmRvX3ZsYW5fcnhfa2lsbF92aWQgPSBhcV9uZG9fdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0NzA6XHQubmRvX3NldHVwX3RjID0gYXFfbmRvX3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQ3MS1cdC5uZG9fYnBmID0gYXFfeGRwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jPTE2MTc9aW50IGFxX25pY19zZXRfbWVkaWFfZGV0ZWN0KHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgaW50IHZhbClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjQxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmM6MTY0MjppbnQgYXFfbmljX3NldHVwX3RjX21xcHJpbyhzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIHUzMiB0Y3MsIHU4ICpwcmlvX3RjX21hcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE2NDMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE2OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNjkyOmludCBhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkzLVx0XHRcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jLTE3MTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNzEyOmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNzEzLVx0XHRcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oPTIxND12b2lkIGFxX25pY19yZWxlYXNlX2ZpbHRlcihzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGVudW0gYXFfcnhfZmlsdGVyX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oLTIxNS1cdFx0XHQgICB1MzIgbG9jYXRpb24pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmg6MjE2OmludCBhcV9uaWNfc2V0dXBfdGNfbXFwcmlvKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgdTMyIHRjcywgdTggKnByaW9fdGNfbWFwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxNzppbnQgYXFfbmljX3NldHVwX3RjX21heF9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjE4LVx0XHRcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxOTppbnQgYXFfbmljX3NldHVwX3RjX21pbl9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjIwLVx0XHRcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0xOTU0PXZvaWQgYm54Mnhfc2V0X251bV9xdWV1ZXMoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTg5LSAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoxOTkwOiAqIGJueDJ4X3NldHVwX3RjKCkgdGFrZXMgY2FyZSBvZiB0aGUgcHJvcGVyIFRDIG1hcHBpbmdzIHNvIHRoYXQgX19za2JfdHhfaGFzaCgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTkxLSAqIHdpbGwgcmV0dXJuIGEgcHJvcGVyIFR4IGluZGV4IGlmIFRDIGlzIGVuYWJsZWQgKG5ldGRldi1cdTAwM2VudW1fdGMgXHUwMDNlIDApLlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTI2MjY9aW50IGJueDJ4X25pY19sb2FkKHN0cnVjdCBibngyeCAqYnAsIGludCBsb2FkX21vZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjcxMi1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjcxMzpcdGJueDJ4X3NldHVwX3RjKGJwLVx1MDAzZWRldiwgYnAtXHUwMDNlbWF4X2Nvcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yNzE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTQyMTE9dm9pZCBibngyeF9nZXRfYzJzX21hcHBpbmcoc3RydWN0IGJueDJ4ICpicCwgdTggKmMyc19tYXAsIHU4ICpjMnNfZGVmYXVsdClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI0NzogKiBibngyeF9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpIHRjXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1MS0gKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1MjogKiBjYWxsYmFjayBjb25uZWN0ZWQgdG8gdGhlIG5kb19zZXR1cF90YyBmdW5jdGlvbiBwb2ludGVyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjUzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1NDppbnQgYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggbnVtX3RjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjQzMTc6aW50IF9fYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzE4LVx0XHQgICAgIHZvaWQgKnR5cGVfZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDMyNzpcdHJldHVybiBibngyeF9zZXR1cF90YyhkZXYsIG1xcHJpby1cdTAwM2VudW1fdGMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMyOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9NDg3PW5ldGRldl90eF90IGJueDJ4X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaDo0ODk6Lyogc2V0dXBfdGMgY2FsbGJhY2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MDppbnQgYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggbnVtX3RjKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MTppbnQgX19ibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTQ5Mi1cdFx0ICAgICB2b2lkICp0eXBlX2RhdGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIzNj1zdGF0aWMgdm9pZCBibngyeF9zcF9ydG5sX3Rhc2soc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDMwMi1cdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5YMlhfU1BfUlROTF9TRVRVUF9UQywgXHUwMDI2YnAtXHUwMDNlc3BfcnRubF9zdGF0ZSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTAzMDM6XHRcdGJueDJ4X3NldHVwX3RjKGJwLVx1MDAzZWRldiwgYnAtXHUwMDNlZGNieF9wb3J0X3BhcmFtcy5ldHMubnVtX29mX2Nvcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAzMDQtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJOWDJYX1NQX1JUTkxfQUZFWF9GX1VQREFURSwgXHUwMDI2YnAtXHUwMDNlc3BfcnRubF9zdGF0ZSkpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMwMjEtXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcdD0gYm54Mnhfdmxhbl9yeF9raWxsX3ZpZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMzAyMjpcdC5uZG9fc2V0dXBfdGNcdFx0PSBfX2JueDJ4X3NldHVwX3RjLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDIzLSNpZmRlZiBDT05GSUdfQk5YMlhfU1JJT1Zcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTYyND1pbnQgYm54dF9zZXR1cF9tcV90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTY2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1NjY5OnN0YXRpYyBpbnQgYm54dF9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NzAtXHRcdFx0XHQgIHZvaWQgKmNiX3ByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU2ODY9TElTVF9IRUFEKGJueHRfYmxvY2tfY2JfbGlzdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTY4Ny1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODgyMAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBmcm9tIGFuIGV4cGVydCYjMzk7cyBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gVHJhZmZpYyBDbGFzcyBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBjb25maWd1cmluZyBUcmFmZmljIENsYXNzZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBkcml2ZXJzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBiZSBhd2FyZSBvZiBoZXJlIGFyZSBgbmdiZV9zZXR1cF90Y2AgYW5kIGB0eGdiZV9zZXR1cF90Y2AuIEltbWVkaWF0ZWx5LCBteSBtZW50YWwgbWFwIHN0YXJ0cyB0byBvcmdhbml6ZS4gSSBrbm93IHRoZXNlIGFyZSBsaWtlbHkgc3BlY2lmaWMgdG8gY2VydGFpbiBJbnRlbCBOSUNzLCBwb3NzaWJseSBnZW5lcmF0aW9uLXNwZWNpZmljLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5nYmVfc2V0dXBfdGNgIGZpcnN0LiBUaGF04oCZcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gRXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSBjb3JlIGxvZ2ljIHVzZWQgdG8gaGFuZGxlIHRyYWZmaWMgY2xhc3MgY29uZmlndXJhdGlvbiBmb3Igd2hhdGV2ZXIgc3BlY2lmaWMgSW50ZWwgTklDIGZhbWlseSBgbmdiZWAgcmVmZXJzIHRvLCBhbmQgY291bGQgaW5mb3JtIGhvdyB0aGF0IHRyYW5zbGF0ZXMgb3IgZGlmZmVycyBmb3Igb3RoZXIgTklDcy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZ2JlX3NldHVwX3RjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz04OT1zdGF0aWMgaW50IG5nYmVfc3dfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy0xMzQtXHR3eC1cdTAwM2VtYnguc2l6ZSA9IFdYX1ZYTUFJTEJPWF9TSVpFO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjEzNTpcdHd4LVx1MDAzZXNldHVwX3RjID0gbmdiZV9zZXR1cF90YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy0xMzYtXHRzZXRfYml0KDAsIFx1MDAyNnd4LVx1MDAzZWZ3ZF9iaXRtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9NTYxPXN0YXRpYyB2b2lkIG5nYmVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTU3Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1Nzc6ICogbmdiZV9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpcGxlIHRyYWZmaWNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01NzgtICogY2xhc3Nlcy5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTgyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjU4MzppbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0YylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy01ODQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX3R5cGUuaD0xMjY9dm9pZCBuZ2JlX3VwKHN0cnVjdCB3eCAqd3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfdHlwZS5oOjEyNzppbnQgbmdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCB0Yyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmgtMTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNSSU9WIFJlaW5pdGlhbGl6YXRpb24gRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhpcyBgd3hgIGRyaXZlciYjMzk7cyBTUklPViByZWluaXRpYWxpemF0aW9uLiBJdCBsb29rcyBsaWtlIGB3eC0mZ3Q7c2V0dXBfdGNgIGlzIHBvaW50aW5nIHRvIGBuZ2JlX3NldHVwX3RjYC4gV2hlbiBgd3hfc3Jpb3ZfcmVpbml0YCBnZXRzIGNhbGxlZCwgaXQgY2FsbHMgYHd4LSZndDtzZXR1cF90Y2AsIHdoaWNoIHdlIGtub3cgaXMgYG5nYmVfc2V0dXBfdGNgLiBUaGVuLCBgbmdiZV9zZXR1cF90Y2AgZGl2ZXMgZGVlcGVyIGFuZCBjYWxscyBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYC4gRnJvbSB0aGVyZSwgaXQgbW92ZXMgaW50byBgd3hfc2V0X251bV9xdWV1ZXNgLCBhbmQgdGhhdCYjMzk7cyB3aGVyZSBgd3hfc2V0X3ZtZHFfcXVldWVzYCBnZXRzIGludm9rZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gYHd4X3NldF92bWRxX3F1ZXVlc2Agbm93LiBJIHNlZSB0aGF0IGl0IGNoZWNrcyBpZiBgV1hfRkxBR19WTURRX0VOQUJMRURgIGlzIHNldCwgYW5kIHNpbmNlIGBfX3d4X2VuYWJsZV9zcmlvdmAgc2V0cyB0aGlzIGZsYWcsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHNob3VsZCBwcm9jZWVkIHdpdGhvdXQgaXNzdWUgaW4gdGhhdCBjYXNlLiBOb3csIEkgc2VlIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBzb21ldGhpbmcgaW4gdGhlIGBlbHNlYCBicmFuY2ggb2YgYGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LSZndDtmbGFncykpYC4gVGltZSB0byBjaGVjayBpZiB0aGUgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AgZmxhZyBpcyBzZXQuIEl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIG1heSBiZSBjaGFuZ2luZyBhbiBlZGdlIGNhc2UgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7V1hfRkxBR19NVUxUSV82NF9GVU5DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jPTQ5OT1zdGF0aWMgdW5zaWduZWQgaW50IHd4X21heF9jaGFubmVscyhzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jLTUwNy1cdFx0Lyogc3VwcG9ydCB1cCB0byBtYXggYWxsb3dlZCBxdWV1ZXMgd2l0aCBSU1MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jOjUwODpcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA5LVx0XHRcdG1heF9jb21iaW5lZCA9IDYzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xMDk9c3RhdGljIHZvaWQgd3hfaW50cl9kaXNhYmxlKHN0cnVjdCB3eCAqd3gsIHU2NCBxbWFzaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjExNzpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTExOC1cdFx0bWFzayA9IChxbWFzayBcdTAwM2VcdTAwM2UgMzIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xMjQ9dm9pZCB3eF9pbnRyX2VuYWJsZShzdHJ1Y3Qgd3ggKnd4LCB1NjQgcW1hc2spXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTEzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxMzc6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xMzgtXHRcdG1hc2sgPSAocW1hc2sgXHUwMDNlXHUwMDNlIDMyKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9NzU2PXN0YXRpYyBpbnQgd3hfc2V0X3JhcihzdHJ1Y3Qgd3ggKnd4LCB1MzIgaW5kZXgsIHU4ICphZGRyLCB1NjQgcG9vbHMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTc3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzo3NzQ6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtNzc1LVx0XHR3cjMyKHd4LCBXWF9QU1JfTUFDX1NXQ19WTV9ILCBwb29scyBcdTAwM2VcdTAwM2UgMzIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz04OTI9dm9pZCB3eF9pbml0X3J4X2FkZHJzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzo5MTM6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxNC1cdFx0XHQvKiBjbGVhciBWTURxIHBvb2wvcXVldWUgc2VsZWN0aW9uIGZvciBSQVIgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNDg0PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV92aXJ0dWFsaXphdGlvbihzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTAwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MDE6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUwMi1cdFx0dmZfc2hpZnQgPSBCSVQoVk1EUV9QKDApKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MzI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzMy1cdFx0dmFsdWUgPSAod3gtXHUwMDNlbnVtX3ZmcyA9PSAwKSA/XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIwNTQ9dm9pZCB3eF9zdG9yZV9yZXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwNjctXHRcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIwNjg6XHRcdFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwNjktXHRcdFx0XHR3cjMyKHd4LCBXWF9SREJfVk1SU1NUQkwoaSBcdTAwM2VcdTAwM2UgMiwgd3gtXHUwMDNlbnVtX3ZmcyksIHJldGEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMDc3PXZvaWQgd3hfc3RvcmVfcnNza2V5KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODItXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjA4MzpcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODQtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGtleV9zaXplOyBpJiM0MzsmIzQzOylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA5Mz1zdGF0aWMgdm9pZCB3eF9zZXR1cF9yZXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxMDYtXHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMDc6XHRcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxMDgtXHRcdFx0XHRyc3NfaSA9IHJzc19pIFx1MDAzYyAyID8gMiA6IHJzc19pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTI0PXZvaWQgd3hfY29uZmlnX3Jzc19maWVsZChzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTI4LVx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMjk6XHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTMwLVx0XHRyc3NfZmllbGQgPSByZDMyKHd4LCBXWF9SREJfUExfQ0ZHKHd4LVx1MDAzZW51bV92ZnMpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjE0OT12b2lkIHd4X2VuYWJsZV9yc3Moc3RydWN0IHd4ICp3eCwgYm9vbCBlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTEtXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjE1MjpcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTMtXHRcdGlmIChlbmFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIxNzA9c3RhdGljIHZvaWQgd3hfc2V0dXBfcHNydHlwZShzdHJ1Y3Qgd3ggKnd4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxODI6XHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjE4My1cdFx0Zm9yX2VhY2hfc2V0X2JpdChwb29sLCBcdTAwMjZ3eC1cdTAwM2Vmd2RfYml0bWFzaywgOClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzQ9c3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzg3Olx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODgtXHRcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xODQyPXN0YXRpYyB2b2lkIHd4X3NldF9yc3NfcXVldWVzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODQ3LVx0ZiA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTg0ODpcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg0OS1cdFx0Zi1cdTAwM2VtYXNrID0gV1hfUlNTXzY0UV9NQVNLO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTU6XHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxNi1cdFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjUxOD12b2lkIHd4X2NvbmZpZ3VyZV92ZWN0b3JzKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yNTI1LVx0XHQvKiBQb3B1bGF0ZSBNU0lYIHRvIEVJVFIgU2VsZWN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjI1MjY6XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yNTI3LVx0XHRcdGlmICh3eC1cdTAwM2VudW1fdmZzIFx1MDAzZT0gMzIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3Zmcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjExMTpcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTItXHRcdHZhbHVlID0gV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF84O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz01ODE9c3RhdGljIGludCB3eF9zZXRfdmZfdmxhbl9tc2coc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjE5LVx0XHRcdGJpdHMgXHUwMDI2PSB+QklUKFZNRFFfUCgwKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIwOlx0XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjEtXHRcdFx0XHRiaXRzIHw9IHJkMzIod3gsIFdYX1BTUl9WTEFOX1NXQ19WTV9IKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjItXHRcdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIzOlx0XHRcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjQtXHRcdFx0XHRiaXRzID0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz04NjU9dm9pZCB3eF9kaXNhYmxlX3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg2OC1cdHdyMzIod3gsIFdYX1JETV9WRlJFX0NMUigwKSwgVTMyX01BWCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY5Olx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODcwLVx0XHR3cjMyKHd4LCBXWF9URE1fVkZURV9DTFIoMSksIFUzMl9NQVgpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oPTEyNTc9ZW51bSB3eF9wZl9mbGFncyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDoxMjU4Olx0V1hfRkxBR19NVUxUSV82NF9GVU5DLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTI1OS1cdFdYX0ZMQUdfU1dGV19SSU5HLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTM1Mj1zdGF0aWMgaW50IHR4Z2JlX3N3X2luaXQoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTItXHRzZXRfYml0KFdYX0ZMQUdfUlNDX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjM5MzpcdHNldF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MDcyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqRGVsdmluZyBpbnRvIERyaXZlciBJbml0aWFsaXphdGlvbiBEaWZmZXJlbmNlcyoqCgpSaWdodCwgc28gSSYjMzk7dmUgc3R1bWJsZWQgdXBvbiBhIGNydWNpYWwgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgYHR4Z2JlYCBhbmQgYG5nYmVgIGRyaXZlcnMuIEkgc2VlIHRoYXQgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gYHR4Z2JlX3N3X2luaXRgLCBidXQgbm90IGluIGBuZ2JlX3N3X2luaXRgLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGZsYWdnZWQgYXMgYSBwb3RlbnRpYWwgc291cmNlIG9mIGRpZmZlcmVudCBiZWhhdmlvciBiZXR3ZWVuIHRoZSB0d28sIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGltbWVkaWF0ZSBpbnZlc3RpZ2F0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBgbmdiZV9zd19pbml0YCBmdW5jdGlvbiBzcGVjaWZpY2FsbHksIGFuZCB1bmRlcnN0YW5kIHByZWNpc2VseSAqd2h5KiB0aGF0IGZsYWcgaXNuJiMzOTt0IGJlaW5nIHNldCB0aGVyZS4gSXQgY291bGQgYmUgaW50ZW50aW9uYWwsIG9yIGl0IGNvdWxkIGJlIGEgc3VidGxlIG9taXNzaW9uIHRoYXQmIzM5O3MgY2F1c2luZyBhIHByb2JsZW0gZG93biB0aGUgbGluZS4gVGltZSB0byBnZXQgaW50byB0aGUgZGV0YWlscyBvZiAqdGhhdCogaW5pdGlhbGl6YXRpb24gcm91dGluZSBhbmQgdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBpdHMgY2hvaWNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmdiZV9zd19pbml0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz01Mz1zdGF0aWMgdm9pZCBuZ2JlX2luaXRfdHlwZV9jb2RlKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTg1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjg2OiAqIG5nYmVfc3dfaW5pdCAtIEluaXRpYWxpemUgZ2VuZXJhbCBzb2Z0d2FyZSBzdHJ1Y3R1cmVzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODctICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jOjg5OnN0YXRpYyBpbnQgbmdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz02Mzg9c3RhdGljIGludCBuZ2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy03MjUtXHQvKiBzZXR1cCB0aGUgcHJpdmF0ZSBzdHJ1Y3R1cmUgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo3MjY6XHRlcnIgPSBuZ2JlX3N3X2luaXQod3gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTcyNy1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzI1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBpbiBgbmdiZWAgYW5kIGl0cyBSZWFjaGFiaWxpdHkqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGVsc2VgIGJyYW5jaCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AsIGFuZCBJIGtub3cgdGhhdCBgbmdiZWAgZG9lc24mIzM5O3Qgc2V0IGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgLiBUaGF0IG1lYW5zIHRoZSBgdGVzdF9iaXRgIGNoZWNrIGZvciBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCB3aWxsIGFsd2F5cyBiZSBmYWxzZSBpbiBgbmdiZWAsIG1ha2luZyB0aGF0IGBlbHNlYCBicmFuY2ggcmVhY2hhYmxlLCBhc3N1bWluZyBWTURRIGlzIGVuYWJsZWQuIFJpZ2h0LCBWTURRIGlzIGVuYWJsZWQgd2hlbiBTUklPViBpcyBlbmFibGVkLiBBbmQgaG93IGRvIHdlIGVuYWJsZSBTUklPVj8gVGhyb3VnaCBgc3Jpb3ZfbnVtdmZzYCBzeXNmcyBlbnRyaWVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiBjYW4gc3l6a2FsbGVyIGZ1enogYHNyaW92X251bXZmc2A/IFllcywgaXQgZG9lcyBoYXZlIHN5c2ZzIGZ1enppbmcgY2FwYWJpbGl0aWVzLiBPa2F5LCB0aGF0JiMzOTtzIGNydWNpYWwuIEkgYWxzbyBrbm93IHRoYXQgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIGJ1dCBvbmx5IGlmIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LCBhbmQgdGhhdCBvbmx5IGhhcHBlbnMgZHVyaW5nIFNSSU9WIGVuYWJsZW1lbnQuCgpMZXQmIzM5O3MgdHJhY2UgdGhlIGNhbGwgcGF0aDogYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgY2FsbGVkIGZyb20gYHd4X3NldF9udW1fcXVldWVzYCwgd2hpY2ggaW4gdHVybiBpcyBjYWxsZWQgZnJvbSBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYC4gV2hlbiBgc3Jpb3ZfbnVtdmZzYCBpcyB3cml0dGVuLCBgd3hfcGNpX3NyaW92X2VuYWJsZWAgaXMgY2FsbGVkLCB3aGljaCB0aGVuIGludm9rZXMgYF9fd3hfZW5hYmxlX3NyaW92YC4gVGhpcyBmdW5jdGlvbiBzZXRzIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAuIFRoZW4sIGB3eF9zcmlvdl9yZWluaXRgIGlzIGNhbGxlZCwgd2hpY2ggY2FsbHMgYHd4LSZndDtzZXR1cF90Y2AsIGxlYWRpbmcgdG8gYG5nYmVfc2V0dXBfdGNgLiBUaGlzIHVsdGltYXRlbHkgY2FsbHMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgLSZndDsgYHd4X3NldF9udW1fcXVldWVzYCAtJmd0OyBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gU28sIHllcywgdGhlIG1vZGlmaWVkIGNvZGUgaW4gdGhhdCBgZWxzZWAgYnJhbmNoICppcyogcmVhY2hhYmxlIGluIGBuZ2JlYC4KClNvLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBgdm1kcV9tYCBpcyBiZWluZyBleHBsaWNpdGx5IHNldCB0byBgV1hfVk1EUV8xUV9NQVNLYCBpbnN0ZWFkIG9mIHN0YXlpbmcgYXQgemVyby4gVGhpcyBtYXNrIGlzIHRoZW4gc2F2ZWQgdG8gYHd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgLiBUaGUgbWFzayBpdHNlbGYgaXMgdGhlIGNydWNpYWwgcGllY2UgaGVyZS4gTm93IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoYXQgYHd4LSZndDtyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgIGlzIGFjdHVhbGx5IGJlaW5nIHVzZWQuIEl0JiMzOTtzIGxpa2VseSBpbnZvbHZlZCBpbiByaW5nIGNvbmZpZ3VyYXRpb24sIHNvIEkgc2hvdWxkIGxvb2sgYXQgYHd4X2NvbmZpZ3VyZV9yeF9yaW5nYCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB0byBzZWUgaG93IHRoZSBtYXNrIGlzIGJlaW5nIHVzZWQgZHVyaW5nIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBvciBxdWV1ZSBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UklOR19GX1ZNRFEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaD0xNDg9ZW51bSBpeGdiZV90eF9mbGFncyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzUtI2RlZmluZSBJWEdCRV9NQVhfUEZfTUFDVkxBTlMgICAgICAgICAgIDE1XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oOjE3NjojZGVmaW5lIFZNRFFfUChwKSAgICgocCkgJiM0MzsgYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmgtMTc3LSNkZWZpbmUgSVhHQkVfODI1OTlfVkZfREVWSUNFX0lEICAgICAgICAweDEwRURcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZS5oPTQwOT1lbnVtIGl4Z2JlX3JpbmdfZl9lbnVtIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmgtNDEwLVx0UklOR19GX05PTkUgPSAwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDo0MTE6XHRSSU5HX0ZfVk1EUSwgIC8qIFNSLUlPViB1c2VzIHRoZSBzYW1lIHJpbmcgZmVhdHVyZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTItXHRSSU5HX0ZfUlNTLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIxLSNlbmRpZiAvKiBJWEdCRV9GQ09FICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMjpcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMy1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE4OC0jZW5kaWYgLyogSVhHQkVfRkNPRSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MTg5Olx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE5MC1cdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnJzcyA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTMyNj1zdGF0aWMgYm9vbCBpeGdiZV9zZXRfZGNiX3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMjgtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjMyOTpcdHUxNiB2bWRxX2kgPSBhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMzAtXHR1MTYgdm1kcV9tID0gMDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNDctXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM0ODpcdHZtZHFfaSAmIzQzOz0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNjUtXHQvKiByZW1vdmUgdGhlIHN0YXJ0aW5nIG9mZnNldCBmcm9tIHRoZSBwb29sIGNvdW50ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNjY6XHR2bWRxX2kgLT0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2OC1cdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzY5Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNzA6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9IHZtZHFfbTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM3MS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz01MDA9c3RhdGljIGJvb2wgaXhnYmVfc2V0X3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTUwMS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MDI6XHR1MTYgdm1kcV9pID0gYWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTAzLVx0dTE2IHZtZHFfbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTE3LVx0LyogQWRkIHN0YXJ0aW5nIG9mZnNldCB0byB0b3RhbCBwb29sIGNvdW50ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MTg6XHR2bWRxX2kgJiM0Mzs9IGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQxLVx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTQyOlx0dm1kcV9pIC09IGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDQtXHQvKiBzYXZlIGZlYXR1cmVzIGZvciBsYXRlciB1c2UgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0NTpcdGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5pbmRpY2VzID0gdm1kcV9pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTQ2Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTM5OTQ9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfbXRxYyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDAxNC1cdFx0XHRtdHFjIHw9IElYR0JFX01UUUNfUlRfRU5BIHwgSVhHQkVfTVRRQ180VENfNFRRO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQwMTU6XHRcdGVsc2UgaWYgKGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrID09XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDAxNi1cdFx0XHQgSVhHQkVfODI1OTlfVk1EUV80UV9NQVNLKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00MzY3PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX21ycWMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQzODgtXHRcdFx0XHRtcnFjID0gSVhHQkVfTVJRQ19WTURRUlQ0VENFTjtcdC8qIDQgVENzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NDM4OTpcdFx0XHRlbHNlIGlmIChhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9PVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQzOTAtXHRcdFx0XHQgSVhHQkVfODI1OTlfVk1EUV80UV9NQVNLKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00NjI0PXN0YXRpYyB2b2lkIGl4Z2JlX2NvbmZpZ3VyZV92aXJ0dWFsaXphdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY2OS1cdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQ2NzA6XHRzd2l0Y2ggKGFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY3MS1cdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz02MTI4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX2dwaWUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NjE2ODpcdFx0c3dpdGNoIChhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzaykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjktXHRcdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz02ODc1PXN0YXRpYyBpbnQgaXhnYmVfc3dfaW5pdChzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNjkwNS1cdGFkYXB0ZXItXHUwMDNlZmRpcl9wYmFsbG9jID0gSVhHQkVfRkRJUl9QQkFMTE9DXzY0SztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2OTA2Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0ID0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02OTA3LSNpZmRlZiBDT05GSUdfSVhHQkVfRENBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTgyMzY9c3RhdGljIGJvb2wgaXhnYmVfdmZfdHhfcGVuZGluZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtODIzOC1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyMzk6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyNDAtXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTAwODk9c3RhdGljIGludCBoYW5kbGVfcmVkaXJlY3RfYWN0aW9uKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgaWZpbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAwOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwMDkyOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDA5My1cdHVuc2lnbmVkIGludCBudW1fdmZzID0gYWRhcHRlci1cdTAwM2VudW1fdmZzLCB2Zjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTA1MTk9c3RhdGljIHZvaWQgaXhnYmVfcmVzZXRfbDJmd19vZmZsb2FkKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDUyNC1cdC8qIGdvIGJhY2sgdG8gZnVsbCBSU1MgaWYgd2UmIzM5O3JlIG5vdCBydW5uaW5nIFNSLUlPViAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwNTI1Olx0aWYgKCFhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI2LVx0XHRhZGFwdGVyLVx1MDAzZWZsYWdzIFx1MDAyNj0gfihJWEdCRV9GTEFHX1ZNRFFfRU5BQkxFRCB8XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI5LVx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA1MzA6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTMxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMDc0MD1zdGF0aWMgdm9pZCAqaXhnYmVfZndkX2FkZChzdHJ1Y3QgbmV0X2RldmljZSAqcGRldiwgc3RydWN0IG5ldF9kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwODA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwODA2Olx0XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgJiM0Mzs9IHJlc2VydmVkX3Bvb2xzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwODA3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9NTE9c3RhdGljIGludCBfX2l4Z2JlX2VuYWJsZV9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTczLVx0aXhnYmVfYWxsb2NfdmZfbWFjdmxhbnMoYWRhcHRlciwgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjc0Olx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldCA9IG51bV92ZnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTc1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9MjA1PWludCBpeGdiZV9kaXNhYmxlX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoyNjY6XHRhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY3LVx0YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz02OTk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCB1MzIgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy03MDEtXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2VodztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6NzAyOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVx0c3RydWN0IHZmX2RhdGFfc3RvcmFnZSAqdmZpbmZvID0gXHUwMDI2YWRhcHRlci1cdTAwM2V2ZmluZm9bdmZdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTgxMi1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4MTM6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTQtXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODM6XHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODQtXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXHUwMDI2YWRhcHRlci1cdTAwM2Vodztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTEwNjI9c3RhdGljIGludCBpeGdiZV9nZXRfdmZfcXVldWVzKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTA2NS1cdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBhZGFwdGVyLVx1MDAzZW5ldGRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA2NjpcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwNjctXHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTE2OTkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxNzAwOlx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNmFkYXB0ZXItXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTcwMS1cdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZWh3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTc3ND1zdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE3NzY6XHR1MTYgdm1kcV9pID0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3Ny1cdHUxNiByc3NfaSA9IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODQtXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4NTpcdHZtZHFfaSAmIzQzOz0gd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODEzLVx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE0Olx0dm1kcV9pIC09IHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE2LVx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4MTc6XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4MTg6XHR3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yMDA0PXN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAwNjpcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA3LVx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqcnNzID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz00OT1zdGF0aWMgdm9pZCB3eF9zcmlvdl9jbGVhcl9kYXRhKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTYzLVx0d3IzMm0od3gsIFdYX1BTUl9WTV9DVEwsIFdYX1BTUl9WTV9DVExfUE9PTF9NQVNLLCAwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2NDpcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02NS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjgtXHQvKiBEaXNhYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gTk0gbW9kZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjY5Olx0aWYgKHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPT0gMSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy03MC1cdFx0Y2xlYXJfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3Zmcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODUtXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cdTAwM2VmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY6XHRpZiAoIXd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODc6XHRcdHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjg4Olx0d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0yNzg9c3RhdGljIHZvaWQgd3hfd3JpdGVfcWRlKHN0cnVjdCB3eCAqd3gsIHUzMiB2ZiwgdTMyIHFkZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjI4MDpcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI4MS1cdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDE6XHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDItXHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MzkzPWVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTU1Ny0jZGVmaW5lIFdYX01BWF9KVU1CT19GUkFNRV9TSVpFICAgICAgOTQzMiAvKiBtYXggcGF5bG9hZCA5NDE0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDo1NTg6I2RlZmluZSBWTURRX1AocCkgICAgICAgKChwKSAmIzQzOyB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTU1OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMTM5PWVudW0gd3hfcmluZ19mX2VudW0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTE0MC1cdFJJTkdfRl9OT05FID0gMCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjExNDE6XHRSSU5HX0ZfVk1EUSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTExNDItXHRSSU5HX0ZfUlNTLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mjc2OQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkRpZ2dpbmcgaW50byBRdWV1ZSBNYW5hZ2VtZW50IGluIFd4V2lkZ2V0cyoqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhpcyByZWZlcmVuY2UgdG8gYHd4X3dyaXRlX3FkZWAgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gSW1tZWRpYXRlbHksIG15IGJyYWluIHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIGltcGxpY2F0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjbGVhcmx5IGludm9sdmVkIGluIHF1ZXVlIG1hbmFnZW1lbnQsIGxpa2VseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgV3hXaWRnZXRzLiBUaGUgZmFjdCB0aGF0IGB3eF93cml0ZV9xZGVgIGlzIG1lbnRpb25lZCBmaXJzdCBzdWdnZXN0cyB0aGF0IGl0JiMzOTtzIHByb2JhYmx5IHRoZSBtb3JlIGltcG9ydGFudCBvZiB0aGUgdHdvIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCAtIG9mdGVuLCB3cml0ZXMgYXJlIG1vcmUgY3JpdGljYWwgdGhhbiByZWFkcyB3aGVuIGNvbnNpZGVyaW5nIHJlc291cmNlIGNvbnRlbnRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4KCk15IGluc3RpbmN0IGlzIHRvIGRpdmUgaW50byBgd3hfd3JpdGVfcWRlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHF1ZXVlIGRhdGEgc3RydWN0dXJlcywgd2hhdCBwcm90ZWN0aW9ucyBpdCBoYXMgZm9yIGNvbmN1cnJlbnQgYWNjZXNzIChtdXRleGVzLCBzZW1hcGhvcmVzLCBldGMuKSwgYW5kIHdoYXQgdGhlIHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyBhcmUuIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnM6IElzIHRoaXMgYSBibG9ja2luZyB3cml0ZT8gV2hhdCBoYXBwZW5zIG9uIHF1ZXVlIG92ZXJmbG93PyBEb2VzIGl0IGhhdmUgYW55IGltcGxpY2F0aW9ucyBmb3IgdGhyZWFkIHN5bmNocm9uaXphdGlvbj8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd3JpdGVzIGFyZSBwZXJtaXR0ZWQsIGlmIGFueS4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBkYXRhIGlzIG1hcnNoYWxsZWQgYW5kIGVuc3VyZSB0aGF0IHRoZSBhcHByb3ByaWF0ZSBsb2NrcyBhcmUgaW4gcGxhY2Ugd2hlbiB0aGUgcXVldWUgaXMgcG9wdWxhdGVkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgdGhhdCBmdW5jdGlvbiYjMzk7cyBpbXBsZW1lbnRhdGlvbiB2ZXJ5IGNhcmVmdWxseSB0byBiZSBzdXJlIGl0JiMzOTtzIHRocmVhZC1zYWZlLiBJJiMzOTttIGFsc28gZ29pbmcgdG8gY2hlY2sgYWxsIHRoZSBvdGhlciBwbGFjZXMgd2hlcmUgdGhlIHF1ZXVlIGlzIHRvdWNoZWQuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLCB0b28uIEtub3dpbmcgdGhlIHdyaXRlIGJlaGF2aW9yIHdpbGwgaGVscCBtZSBhbnRpY2lwYXRlIHJlYWQtc2lkZSBpc3N1ZXMuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF93cml0ZV9xZGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI2NT1zdGF0aWMgdm9pZCB3eF9zZXRfdmxhbl9hbnRpX3Nwb29maW5nKHN0cnVjdCB3eCAqd3gsIGJvb2wgZW5hYmxlLCBpbnQgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyNzg6c3RhdGljIHZvaWQgd3hfd3JpdGVfcWRlKHN0cnVjdCB3eCAqd3gsIHUzMiB2ZiwgdTMyIHFkZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zOTI9c3RhdGljIHZvaWQgd3hfdmZfcmVzZXRfbXNnKHN0cnVjdCB3eCAqd3gsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDExLVx0LyogZm9yY2UgZHJvcCBlbmFibGUgZm9yIGFsbCBWRiBSeCBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo0MTI6XHR3eF93cml0ZV9xZGUod3gsIHZmLCAxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy00MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNTA5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFuYWx5emluZyB0aGUgVmlydHVhbCBGdW5jdGlvbiBRdWV1ZSBSZXRyaWV2YWwqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgcmV0cmlldmluZyBhbmQgbWFuYWdpbmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gcXVldWVzIHJlc2lkZXMsIGFuZCBpcyB0aGUgbGlrZWx5IGVwaWNlbnRlciBvZiBhbnkgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbCBpc3N1ZXMuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgY29uZmlybWluZyB0aGUgcGFyYW1ldGVycyBpdCBhY2NlcHRzIGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBNeSBmaXJzdCBwcmlvcml0eSB3aWxsIGJlIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgZnVuY3Rpb24gaGFuZGxlcyByZXNvdXJjZSBjb250ZW50aW9uIGdyYWNlZnVsbHkgYW5kIHRoYXQgdGhlIHJldHVybmVkIHN0cnVjdHVyZXMgYXJlIHRocmVhZC1zYWZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHdlJiMzOTtyZSBzZWVpbmcgYW55IHVuZXhwZWN0ZWQgcmV0dXJuIGNvZGVzIG9yIHJhY2UgY29uZGl0aW9ucyBhcm91bmQgcXVldWUgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24uIEkmIzM5O2xsIG5lZWQgdG8gY29ycmVsYXRlIGFueSBwZXJmb3JtYW5jZSBtZXRyaWNzLCBsaWtlIGxhdGVuY3kgb3IgdGhyb3VnaHB1dCwgd2l0aCB0aGUgYWN0aW9ucyB0YWtlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gY2hlY2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3MsIGxpa2UgZXhjZXNzaXZlIGxvY2tpbmcgb3IgaW5lZmZpY2llbnQgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucy4gRmluYWxseSwgSSYjMzk7bGwgcmV2aWV3IGFueSByZWxhdGVkIGVycm9yIGhhbmRsaW5nIHRvIGVuc3VyZSByb2J1c3RuZXNzIGFuZCB0aGF0IHdlJiMzOTtyZSBwcm9wZXJseSBsb2dnaW5nIGZhaWx1cmVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMTI9c3RhdGljIHZvaWQgd3hfc2V0X3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gsIGludCB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjMzOTpzdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03NTU9c3RhdGljIHZvaWQgd3hfcmN2X21zZ19mcm9tX3ZmKHN0cnVjdCB3eCAqd3gsIHUxNiB2Zilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODA2LVx0Y2FzZSBXWF9WRl9HRVRfUVVFVUVTOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjgwNzpcdFx0cmV0dmFsID0gd3hfZ2V0X3ZmX3F1ZXVlcyh3eCwgbXNnYnVmLCB2Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODA4LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDQxMDUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFZNRFEgTWFzayBDaGFuZ2UqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYHd4X2dldF92Zl9xdWV1ZXNgIGlzIHRyaWdnZXJlZCB3aGVuIGEgVkYgc2VuZHMgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIFBGLiBUaGVuLCBgd3hfd3JpdGVfcWRlYCBjb21lcyBpbnRvIHBsYXkgZHVyaW5nIGEgVkYgcmVzZXQuIEJvdGggb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2luZyBgd3gtJmd0O3JpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoZSBwYXRjaCBpcyBjaGFuZ2luZyB0aGlzIG1hc2sgZnJvbSB6ZXJvIHRvIGBXWF9WTURRXzFRX01BU0tgICh3aGljaCBpcyAweDdGKSBmb3IgdGhlIGBuZ2JlYCBkcml2ZXIgd2hlbiBWTURRIGlzIGVuYWJsZWQuIFRoYXQgYWxvbmUgdGVsbHMgbWUgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IGltcGFjdGluZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCwgY29uc2VxdWVudGx5LCBWRiBjb21tdW5pY2F0aW9uLgoKTm93LCBob3cgZG9lcyB0aGlzIGJlY29tZSByZWxldmFudCBmb3IgZnV6emluZz8gV2VsbCwgd2l0aCBTUklPViBlbmFibGVkLCBmdXp6aW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBWRiAtLSBoYXZpbmcgaXQgc2VuZCBtZXNzYWdlcyBvciBwZXJmb3JtIGEgcmVzZXQg4oCTIHNob3VsZCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IHdvdWxkIGJlIHVuZGVyIHRoZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBUWEdCRWAgZHJpdmVyIHNldHMgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcuIFRoaXMgbWVhbnMgaXQgdGFrZXMgdGhlIGBpZmAgYnJhbmNoIGFuZCBub3QgdGhlIGBlbHNlYCBicmFuY2ggb2YgdGhlIGNvZGUuIFRoZSBwYXRjaCwgaG93ZXZlciwgaXMgbW9kaWZ5aW5nIHRoZSBgZWxzZWAgYnJhbmNoLiBTbywgYFRYR0JFYCBhbmQgYFRYR0JFVkZgIGFyZSBub3QgZGlyZWN0bHkgaW52b2x2ZWQgaGVyZS4gVGh1cywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBOR0JFYCBhbmQgYE5HQkVWRmAuCgpMZXQgbWUgY29uZmlybSB0aGF0OiBgTkdCRWAgYW5kIGBOR0JFVkZgIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIHRyaWdnZXIgdGhpcyBjaGFuZ2UuIE15IGF0dGVudGlvbiBpcyBub3cgb24gdGhlc2UgZnVuY3Rpb25zOiBgd3hfc2V0X3ZtZHFfcXVldWVzYCwgYHd4X2dldF92Zl9xdWV1ZXNgLCBhbmQgYHd4X3dyaXRlX3FkZWAuIEFoLCBjb3JyZWN0aW9uLCB0aGUgZnVuY3Rpb24gYmVpbmcgbW9kaWZpZWQgaXMgYHd4X3NldF92bWRxX3F1ZXVlc2AuIFNvLCBJIHJlYWxseSBuZWVkIHRvIGRvdWJsZS1jaGVjayBgd3hfZ2V0X3ZmX3F1ZXVlc2AgYW5kIGB3eF93cml0ZV9xZGVgIHRvIHNvbGlkaWZ5IHRoZW0gYXMgcmVsZXZhbnQgZm9jdXMgc3ltYm9scyBmb3IgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3ODpcdHN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXG4gMjc5Olx0e1xuIDI4MDpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG4gMjgxOlx0XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbiAyODI6XHRcdHUzMiByZWcgPSAwLCBuID0gdmYgKiBxX3Blcl9wb29sIC8gMzI7XG4gMjgzOlx0XHR1MzIgaSA9IHZmICogcV9wZXJfcG9vbDtcbiAyODQ6XHRcbiAyODU6XHRcdHJlZyA9IHJkMzIod3gsIFdYX1JETV9QRl9RREUobikpO1xuIDI4NjpcdFx0Zm9yIChpID0gKHZmICogcV9wZXJfcG9vbCAtIG4gKiAzMik7XG4gMjg3Olx0XHQgICAgIGkgXHUwMDNjICgodmYgJiM0MzsgMSkgKiBxX3Blcl9wb29sIC0gbiAqIDMyKTtcbiAyODg6XHRcdCAgICAgaSYjNDM7JiM0MzspIHtcbiAyODk6XHRcdFx0aWYgKHFkZSA9PSAxKVxuIDI5MDpcdFx0XHRcdHJlZyB8PSBxZGUgXHUwMDNjXHUwMDNjIGk7XG4gMjkxOlx0XHRcdGVsc2VcbiAyOTI6XHRcdFx0XHRyZWcgXHUwMDI2PSBxZGUgXHUwMDNjXHUwMDNjIGk7XG4gMjkzOlx0XHR9XG4gMjk0Olx0XG4gMjk1Olx0XHR3cjMyKHd4LCBXWF9SRE1fUEZfUURFKG4pLCByZWcpO1xuIDI5NjpcdH1cbiAyOTc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUzNjIKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFF1ZXVlIEFzc2lnbm1lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gdHJhY2luZyB3aGF0IGhhcHBlbnMgd2hlbiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVyby4gVGhlIGNvZGUgdXNlcyBgX19BTElHTl9NQVNLKDEsIH52bWRxLSZndDttYXNrKWAuICBJZiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVybywgdGhlbiBpdHMgYml0d2lzZSBpbnZlcnNlLCBgfnZtZHEtJmd0O21hc2tgLCBiZWNvbWVzIGAweEZGRkZGRkZGYC4gQXBwbHlpbmcgYF9fQUxJR05fTUFTSygxLCAweEZGRkZGRkZGKWAgeWllbGRzIGAoMSAmIzQzOyAweEZGRkZGRkZGKSAmYW1wOyB+MHhGRkZGRkZGRmAsIHdoaWNoIHNpbXBsaWZpZXMgdG8gYDAgJmFtcDsgMGAsIHVsdGltYXRlbHkgcmVzdWx0aW5nIGluIHplcm8uIFRoYXQmIzM5O3MgY29uZmlybWVkLgoKUmlnaHQsIGBfX0FMSUdOX01BU0soeCwgbWFzaylgIGV4cGFuZHMgdG8gYCgoKHgpICYjNDM7IChtYXNrKSkgJmFtcDsgfihtYXNrKSlgLiAgU28sIGluIHRoZSBvcmlnaW5hbCBjYXNlIHdoZXJlIGB2bWRxLSZndDttYXNrYCBpcyAwLCAgdGhlIGNhbGN1bGF0aW9uIGV2YWx1YXRlcyBhcyBkZXNjcmliZWQuIFRoaXMgbWVhbnMgdGhhdCBgcV9wZXJfcG9vbGAgZW5kcyB1cCBhcyB6ZXJvLiBDb25zZXF1ZW50bHksICBgbmAgYmVjb21lcyBgdmYgKiAwIC8gMzJgIHdoaWNoIGlzIGFsc28gemVyby4gQW5kIHNpbmNlIHRoZSBgZm9yYCBsb29wIGNvbmRpdGlvbiBpcyBgaSAmbHQ7IDBgLCB0aGUgbG9vcCBuZXZlciBleGVjdXRlcy4gIEVmZmVjdGl2ZWx5LCBgd3hfd3JpdGVfcWRlYCBkb2VzIG5vdGhpbmcgd2hlbiBgdm1kcS0mZ3Q7bWFza2AgaXMgemVyby4gVGhhdCBtYWtlcyBzZW5zZS4KCk5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIHRoZSBwYXRjaGVkIHNjZW5hcmlvLiAgVGhlIHBhdGNoIHNldHMgYHZtZHEtJmd0O21hc2tgIHRvIGBXWF9WTURRXzFRX01BU0tgLCBvciBgMHg3RmAuIFRoZSBiaXR3aXNlIGludmVyc2UsIGB+MHg3RmAsIGlzIGAweEZGRkZGRjgwYC4gVXNpbmcgdGhlIHNhbWUgbG9naWMsIGBfX0FMSUdOX01BU0soMSwgMHhGRkZGRkY4MClgIGlzIG5vdyBgKDEgJiM0MzsgMHhGRkZGRkY4MCkgJmFtcDsgfigweEZGRkZGRjgwKWAsIHdoaWNoIHNpbXBsaWZpZXMgdG8gYDB4RkZGRkZGODEgJmFtcDsgMHg3RmAuIFRoZSByZXN1bHQgb2YgdGhhdCBiaXR3aXNlIEFORCBvcGVyYXRpb24gaXMgMS4KClNvLCBgX19BTElHTl9NQVNLKHgsIG1hc2spYCBpcyBjb25maXJtZWQgYXMgYCgoKHgpICYjNDM7IChtYXNrKSkgJmFtcDsgfihtYXNrKSlgLCBhbmQgd2l0aCB0aGUgcGF0Y2gsIHRoZSBjb2RlIHdpbGwgbm93IG9wZXJhdGUgb24gb25lIHF1ZXVlIGlmIGJpdCAwIGlzIHNldC4gSSB0aGluayB0aGlzIGFsaWducyB3aXRoIHRoZSBpbnRlbnQgb2YgdGhlIHBhdGNoLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IsIGJ1dCB0aGUgbG9naWMgc2VlbXMgc291bmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBfX0FMSUdOX01BU0smIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS92ZHNvL2FsaWduLmgtOS0jZGVmaW5lIEFMSUdOX0RPV04oeCwgYSlcdF9fQUxJR05fS0VSTkVMKCh4KSAtICgoYSkgLSAxKSwgKGEpKVxuaW5jbHVkZS92ZHNvL2FsaWduLmg6MTA6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcdF9fQUxJR05fS0VSTkVMX01BU0soKHgpLCAobWFzaykpXG5pbmNsdWRlL3Zkc28vYWxpZ24uaC0xMS0jZGVmaW5lIFBUUl9BTElHTihwLCBhKVx0XHQoKHR5cGVvZihwKSlBTElHTigodW5zaWduZWQgbG9uZykocCksIChhKSkpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3RyYWNlX2hlbHBlcnMuaC0xOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmg6MTk6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcdCgoKHgpJiM0MzsobWFzaykpXHUwMDI2fihtYXNrKSlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmgtMjAtI2RlZmluZSBBTElHTih4LCBhKVx0XHRfX0FMSUdOX01BU0soeCwgKHR5cGVvZih4KSkoYSktMSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY1NDEKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCaXR3aXNlIE1hZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGJpdHdpc2Ugb3BlcmF0aW9uOiBgKCgoeCkgJiM0MzsgKG1hc2spKSAmYW1wOyB+KG1hc2spKWAuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBpZiBgdm1kcS0mZ3Q7bWFza2AgaXMgMHg3RiwgdGhlbiB0aGUgYG1hc2tgIGJlY29tZXMgaXRzIGJpdHdpc2UgY29tcGxlbWVudCwgYH4weDdGYCwgd2hpY2ggaXMgYDB4RkZGRkZGODBgLiBOb3csIGxldCYjMzk7cyBzYXkgYHhgIGlzIDEuIFdlIGhhdmUgYDEgJiM0MzsgMHhGRkZGRkY4MGAsIHdoaWNoIHlpZWxkcyBgMHhGRkZGRkY4MWAuIFRha2luZyB0aGUgYml0d2lzZSBjb21wbGVtZW50IG9mIGBtYXNrYCwgYH4obWFzaylgLCBnaXZlcyB1cyBgMHg3RmAuIFBlcmZvcm1pbmcgdGhlIGJpdHdpc2UgQU5EIG9mIGAweEZGRkZGRjgxYCB3aXRoIGAweDdGYCByZXN1bHRzIGluIGAweDAxYC4gU28sIGluIHRoaXMgc2NlbmFyaW8sIGBxX3Blcl9wb29sYCB3b3VsZCBiZSAxLgoKTm93LCBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgdm1kcS0mZ3Q7bWFza2AgaXMgMC4gVGhhdCBtYWtlcyBgbWFza2AgZXF1YWwgdG8gYDB4RkZGRkZGRkZgLiBBZGRpbmcgYHhgICh3aGljaCBpcyBzdGlsbCAxKSB0byB0aGlzIGJlY29tZXMgYDBgLiBUYWtpbmcgdGhlIGJpdHdpc2UgY29tcGxlbWVudCBhZ2FpbiBnaXZlcyB1cyBgMGAuIEFuZCBgMCAmYW1wOyAwYCBpcywgb2YgY291cnNlLCBgMGAuIFNvLCBwcmV2aW91c2x5LCBgcV9wZXJfcG9vbGAgd291bGQgaGF2ZSBiZWVuIDAuIFRoYXQmIzM5O3MgYSBodWdlIGNoYW5nZSEKCkhvbGQgb24sIHRoaXMgaXMgc2lnbmlmaWNhbnQuIEkmIzM5O20gcHJldHR5IHN1cmUgdGhpcyBjaGFuZ2UgaXMgZml4aW5nIGEgYnVnLiBCZWZvcmUsIGlmIGBxX3Blcl9wb29sYCB3YXMgMCwgYSBsb29wIG1pZ2h0IGhhdmUgYmVlbiBza2lwcGVkLCBvciB3b3JzZSwgdGhlcmUgbWF5IGhhdmUgYmVlbiBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3I/IE5vLCBubywgaXQmIzM5O3Mgbm90IGEgZGl2aXNpb24gYnkgemVyby4gSWYgYHFfcGVyX3Bvb2xgIHdhcyAwLCB0aGVuIHRoZSBjYWxjdWxhdGlvbiBgdmYgKiBxX3Blcl9wb29sIC8gMzJgIHdvdWxkIGhhdmUgcmV0dXJuZWQgMCwgc28gdGhlIGxvb3Agd291bGQgaGF2ZSBiZWVuIHNraXBwZWQsIGluIGVzc2VuY2UuCgpSaWdodCwgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIG1vcmUgc2NydXRpbnkuIEkgc2hvdWxkIGNoZWNrIGB3eF9nZXRfdmZfcXVldWVzYCB0byBzZWUgd2hlcmUgdGhpcyBpcyB1c2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMzOSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzM5Olx0c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG4gMzQwOlx0e1xuIDM0MTpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFx1MDAyNnd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG4gMzQyOlx0XHR1bnNpZ25lZCBpbnQgZGVmYXVsdF90YyA9IDA7XG4gMzQzOlx0XG4gMzQ0Olx0XHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbiAzNDU6XHRcdG1zZ2J1ZltXWF9WRl9SWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuIDM0NjpcdFxuIDM0NzpcdFx0aWYgKHd4LVx1MDAzZXZmaW5mb1t2Zl0ucGZfdmxhbiB8fCB3eC1cdTAwM2V2ZmluZm9bdmZdLnBmX3FvcylcbiAzNDg6XHRcdFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMTtcbiAzNDk6XHRcdGVsc2VcbiAzNTA6XHRcdFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMDtcbiAzNTE6XHRcbiAzNTI6XHRcdC8qIG5vdGlmeSBWRiBvZiBkZWZhdWx0IHF1ZXVlICovXG4gMzUzOlx0XHRtc2didWZbV1hfVkZfREVGX1FVRVVFXSA9IGRlZmF1bHRfdGM7XG4gMzU0Olx0XG4gMzU1Olx0XHRyZXR1cm4gMDtcbiAzNTY6XHR9XG4gMzU3Olx0XG4gMzU4Olx0c3RhdGljIHZvaWQgd3hfdmZfcmVzZXRfZXZlbnQoc3RydWN0IHd4ICp3eCwgdTE2IHZmKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzY2NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDExMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSBzZWVpbmc6IGBtc2didWZbV1hfVkZfVFhfUVVFVUVTXWAgd2FzIGluaXRpYWxseSB6ZXJvLCBhbmQgbm93IGl0JiMzOTtzIGJlZW4gdXBkYXRlZCB0byBvbmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFByZXZpb3VzbHksIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgd291bGQgaGF2ZSByZWNlaXZlZCB6ZXJvIHF1ZXVlcy4gVGhhdCYjMzk7cyBhIHJlY2lwZSBmb3IgZGlzYXN0ZXIg4oCTIGluaXRpYWxpemF0aW9uIGZhaWx1cmVzLCBjcmFzaGVzLCB0aGUgd2hvbGUgbmluZSB5YXJkcy4gTm93LCBpdCYjMzk7cyBnZXR0aW5nIGEgc2luZ2xlIHF1ZXVlLiBUaGlzIGNoYW5nZSBpcyBhIGNsZWFyIGluZGljYXRpb24gb2YgYSBwb3NzaWJsZSB2dWxuZXJhYmlsaXR5LgoKTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2l0dWF0aW9uIGlzIHJpcGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhlIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgd3hfc2V0X3ZtZHFfcXVldWVzYCwgYHd4X3dyaXRlX3FkZWAsIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlc2UgZnVuY3Rpb25zIGFuZCBzZWUgaG93IHRoZXkgYXJlIGludGVyYWN0aW5nIGFuZCBpZiB3ZSBjYW4gaW5mbHVlbmNlIHRoZSB2YWx1ZSB0aGF0IGlzIHdyaXR0ZW4gb3IgcmVhZC4KCldoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gY2hlY2sgd2hlcmUgYHZtZHEtJmd0O21hc2tgIGlzIGJlaW5nIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGlzIG1hc2sgaXMgZW1wbG95ZWQgYWNyb3NzIHRoZSBzeXN0ZW0gd2lsbCBwcm92aWRlIHVzIHdpdGggbW9yZSBjb250ZXh0IGFuZCBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZtZHEtXHUwMDNlbWFzayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0xNz1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX2RjYl9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNS1cdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2Olx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzctXHRmb3IgKGkgPSAwLCBwb29sID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM4LVx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM5Olx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gdGNzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00MC1cdFx0XHRwb29sJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQxOlx0XHRcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NDc6XHRyZWdfaWR4ID0gdm1kcS1cdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFkYXB0ZXItXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy00OS1cdFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1MDpcdFx0aWYgKChyZWdfaWR4IFx1MDAyNiB+dm1kcS1cdTAwM2VtYXNrKSBcdTAwM2U9IHRjcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUxOlx0XHRcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01Mi1cdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTY1LVx0aWYgKGZjb2UtXHUwMDNlaW5kaWNlcykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NjY6XHRcdHUxNiBxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy02Ny1cdFx0dTggZmNvZV90YyA9IGl4Z2JlX2Zjb2VfZ2V0X3RjKGFkYXB0ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTcwLVx0XHRmb3IgKGkgPSBmY29lLVx1MDAzZW9mZnNldDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NzE6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKSAmIzQzOyBmY29lX3RjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNzItXHRcdFx0YWRhcHRlci1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTc4LVx0XHRmb3IgKGkgPSBmY29lLVx1MDAzZW9mZnNldDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6Nzk6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKSAmIzQzOyBmY29lX3RjO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtODAtXHRcdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE5OS1cdHBvb2wgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjAwOlx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjAxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDctXHRcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjA4Olx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIwOS1cdFx0XHRwb29sJiM0MzsmIzQzOztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIxMDpcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjExLVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjIzLSNlbmRpZlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjI0Olx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjI1LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWRhcHRlci1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMzItXHRcdGlmICgocmVnX2lkeCBcdTAwMjYgcnNzLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMzM6XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIzNC1cdFx0YWRhcHRlci1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz04MjM2PXN0YXRpYyBib29sIGl4Z2JlX3ZmX3R4X3BlbmRpbmcoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyMzktXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2YWRhcHRlci1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyNDA6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy04MjQxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz0xMDA4OT1zdGF0aWMgaW50IGhhbmRsZV9yZWRpcmVjdF9hY3Rpb24oc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCBpZmluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDEwMS1cdFx0aWYgKHVwcGVyLVx1MDAzZWlmaW5kZXggPT0gaWZpbmRleCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwMTAyOlx0XHRcdCpxdWV1ZSA9IHZmICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwMTAzLVx0XHRcdCphY3Rpb24gPSB2ZiAmIzQzOyAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9Njk5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV92Zl9yZXNldF9ldmVudChzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVx0c3RydWN0IHZmX2RhdGFfc3RvcmFnZSAqdmZpbmZvID0gXHUwMDI2YWRhcHRlci1cdTAwM2V2ZmluZm9bdmZdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo3MDQ6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzA1LVx0dTggbnVtX3RjcyA9IGFkYXB0ZXItXHUwMDNlaHdfdGNzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2Zixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTgxMy1cdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZhZGFwdGVyLVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxNDpcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTUtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODg4LVx0dTggKmFkZHIgPSAodTggKikoXHUwMDI2bXNnYnVmWzFdKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6ODg5Olx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTg5MC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9MTA2Mj1zdGF0aWMgaW50IGl4Z2JlX2dldF92Zl9xdWV1ZXMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xMDg0LVx0Lyogb25seSBhbGxvdyAxIFR4IHF1ZXVlIGZvciBiYW5kd2lkdGggbGltaXRpbmcgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA4NTpcdG1zZ2J1ZltJWEdCRV9WRl9UWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDg2Olx0bXNnYnVmW0lYR0JFX1ZGX1JYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwODctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xNzM4LVx0LyogZGV0ZXJtaW5lIGhvdyBtYW55IHF1ZXVlcyBwZXIgcG9vbCBiYXNlZCBvbiBWTURxIG1hc2sgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTczOTpcdHF1ZXVlc19wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTc0MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDE2LVx0XHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMTc6XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxOC1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTktXHRcdFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjA6XHRcdFx0aWYgKChyZWdfaWR4IFx1MDAyNiB+dm1kcS1cdTAwM2VtYXNrKSBcdTAwM2U9IHJzcy1cdTAwM2VpbmRpY2VzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDIxOlx0XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyMi1cdFx0XHR3eC1cdTAwM2VyeF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDIzLVx0XHR9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjQ6XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyNS1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgd3gtXHUwMDNlbnVtX3R4X3F1ZXVlczsgaSYjNDM7JiM0MzssIHJlZ19pZHgmIzQzOyYjNDM7KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDI3LVx0XHRcdGlmICgocmVnX2lkeCBcdTAwMjYgcnNzLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIwMjg6XHRcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDI5LVx0XHRcdHd4LVx1MDAzZXR4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI3OD1zdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yODAtXHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyODE6XHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yODItXHR1MzIgcmVnID0gMCwgbiA9IHZmICogcV9wZXJfcG9vbCAvIDMyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDQ6XHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzozNDU6XHRtc2didWZbV1hfVkZfUlhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjQ5CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgYHd4X2NhY2hlX3Jpbmdfdm1kcWAgQ29udGV4dCoqCgpSaWdodCwgc28gdGhpcyBpcyBhbm90aGVyIGluc3RhbmNlIHdoZXJlIHdlJiMzOTtyZSBsZXZlcmFnaW5nIHRoZSBzYW1lIHByaW5jaXBsZXMgYXMgYHd4X2NhY2hlX3Jpbmdfdm1kcWAuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgY3JvcHBpbmcgdXAgaGVyZSBtZWFucyB3ZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93ICp0aGF0KiBzcGVjaWZpYyBjb21wb25lbnQgaXMgZnVuY3Rpb25pbmcsIHRoZSBhc3N1bXB0aW9ucyBpdCBtYWtlcywgYW5kIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgcmUtdXNlLiBHb3R0YSBxdWlja2x5IGFuYWx5emUgYHd4X2NhY2hlX3Jpbmdfdm1kcWAgdG8gZW5zdXJlIHdlJiMzOTtyZSBub3QgaW50cm9kdWNpbmcgYW55IHVuZXhwZWN0ZWQgYmVoYXZpb3JzIG9yIGNvbmZsaWN0cyBpbiB0aGlzIG5ldyBjb250ZXh0LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGltcGxlbWVudGVkIHRoZXJlLCBhbmQgdGhpbmsgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBwb2ludHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMDQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAwNDpcdHN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxuMjAwNTpcdHtcbjIwMDY6XHRcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcdTAwMjZ3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xuMjAwNzpcdFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqcnNzID0gXHUwMDI2d3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xuMjAwODpcdFx0dTE2IHJlZ19pZHg7XG4yMDA5Olx0XHRpbnQgaTtcbjIwMTA6XHRcbjIwMTE6XHRcdC8qIG9ubHkgcHJvY2VlZCBpZiBWTURxIGlzIGVuYWJsZWQgKi9cbjIwMTI6XHRcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVx1MDAzZWZsYWdzKSlcbjIwMTM6XHRcdFx0cmV0dXJuIGZhbHNlO1xuMjAxNDpcdFxuMjAxNTpcdFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXHUwMDNlZmxhZ3MpKSB7XG4yMDE2Olx0XHRcdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cbjIwMTc6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAxODpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbjIwMTk6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwMjA6XHRcdFx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IH52bWRxLVx1MDAzZW1hc2spIFx1MDAzZT0gcnNzLVx1MDAzZWluZGljZXMpXG4yMDIxOlx0XHRcdFx0XHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAyMjpcdFx0XHRcdHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XG4yMDIzOlx0XHRcdH1cbjIwMjQ6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVx1MDAzZW1hc2spO1xuMjAyNTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOywgcmVnX2lkeCYjNDM7JiM0MzspIHtcbjIwMjY6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwMjc6XHRcdFx0XHRpZiAoKHJlZ19pZHggXHUwMDI2IHJzcy1cdTAwM2VtYXNrKSBcdTAwM2U9IHJzcy1cdTAwM2VpbmRpY2VzKVxuMjAyODpcdFx0XHRcdFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cdTAwM2VtYXNrKTtcbjIwMjk6XHRcdFx0XHR3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xuMjAzMDpcdFx0XHR9XG4yMDMxOlx0XHR9IGVsc2Uge1xuMjAzMjpcdFx0XHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXG4yMDMzOlx0XHRcdHJlZ19pZHggPSB2bWRxLVx1MDAzZW9mZnNldDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMxMDgKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYHd4X2NhY2hlX3Jpbmdfdm1kcWAmIzM5O3MgQ29uZGl0aW9uYWwgTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGB3eF9jYWNoZV9yaW5nX3ZtZHFgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpZiBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCAqaXNuJiMzOTt0KiBzZXQsIGl0IGdvZXMgc3RyYWlnaHQgdG8gdGhlIGBlbHNlYCBicmFuY2guIFRoYXQgYGVsc2VgIHBhdGggaXMga2V5IGJlY2F1c2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoaXMgY29ycmVjdGx5LCBpdCAqZG9lc24mIzM5O3QqIGFjdHVhbGx5IHRvdWNoIGB2bWRxLSZndDttYXNrYC4gTm93LCB0aGlzIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgY29kZSBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBjb25maXJtIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4gSSYjMzk7bGwgcmVhZCBvbiB0byBlbnN1cmUgdGhpcyBpcyBhcyBJIHVuZGVyc3RhbmQgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwMzEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjAzMTpcdFx0fSBlbHNlIHtcbjIwMzI6XHRcdFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xuMjAzMzpcdFx0XHRyZWdfaWR4ID0gdm1kcS1cdTAwM2VvZmZzZXQ7XG4yMDM0Olx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHd4LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkmIzQzOyYjNDM7KVxuMjAzNTpcdFx0XHRcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xuMjAzNjpcdFx0XHRcdHd4LVx1MDAzZXJ4X3JpbmdbaV0tXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHggJiM0MzsgaTtcbjIwMzc6XHRcbjIwMzg6XHRcdFx0cmVnX2lkeCA9IHZtZHEtXHUwMDNlb2Zmc2V0O1xuMjAzOTpcdFx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB3eC1cdTAwM2VudW1fdHhfcXVldWVzOyBpJiM0MzsmIzQzOylcbjIwNDA6XHRcdFx0XHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cbjIwNDE6XHRcdFx0XHR3eC1cdTAwM2V0eF9yaW5nW2ldLVx1MDAzZXJlZ19pZHggPSByZWdfaWR4ICYjNDM7IGk7XG4yMDQyOlx0XHR9XG4yMDQzOlx0XG4yMDQ0Olx0XHRyZXR1cm4gdHJ1ZTtcbjIwNDU6XHR9XG4yMDQ2Olx0XG4yMDQ3Olx0LyoqXG4yMDQ4Olx0ICogd3hfY2FjaGVfcmluZ19yc3MgLSBEZXNjcmlwdG9yIHJpbmcgdG8gcmVnaXN0ZXIgbWFwcGluZyBmb3IgUlNTXG4yMDQ5Olx0ICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXG4yMDUwOlx0ICpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDA6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MzgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA0MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRiBRdWV1ZSBCdWcgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYHZtZHEtJmd0O21hc2tgIGlzIGhhbmRsZWQgaW4gYHd4X2NhY2hlX3Jpbmdfdm1kcWAgZm9yIHRoZSBgbmdiZWAgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzICpub3QqIHVzZWQgaW4gdGhhdCBmdW5jdGlvbiBiZWNhdXNlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGlzbiYjMzk7dCBzZXQuIEJ1dCwgdGhpcyBgdm1kcS0mZ3Q7bWFza2AgKmlzKiB1c2VkIHdpdGhpbiBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLiBUaGUgcHJvYmxlbSBzdXJmYWNlZCBiZWNhdXNlIGBxX3Blcl9wb29sYCB3YXMgaW5jb3JyZWN0bHkgaW5pdGlhbGl6ZWQgdG8gemVybywgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgcXVldWVzLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBmdW5jdGlvbmFsIGJ1Zy4KClNpbmNlIHRoaXMgaXMgYSBmaXggdGhhdCBkaXJlY3RseSBpbXByb3ZlcyBWRiBxdWV1ZSBmdW5jdGlvbmFsaXR5IGZvciBgbmdiZWAsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhleSYjMzk7cmUgcmlnaHQgYXQgdGhlIGhlYXJ0IG9mIHdoZXJlIHRoZSBidWcgbWFuaWZlc3RlZC4KCk5vdywgdGhlIGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGVzdGluZyB0aGUgcmlnaHQgb25lcy4gT2J2aW91c2x5LCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSByZWxldmFudCwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBvdGhlcnMgdG9vLiBIbW1tLCBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgbWlnaHQgYmUgd29ydGggYSBsb29rLCBidXQgZ2l2ZW4gdGhhdCBgVFhHQkVgICpkb2VzKiBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AsIGl0IHRha2VzIGEgZGlmZmVyZW50IGNvZGUgcGF0aCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIEluIHRoYXQgc2NlbmFyaW8sIGB2bWRxX21gIGlzIGFsd2F5cyBzZXQgdG8gZWl0aGVyIGBXWF9WTURRXzJRX01BU0tgIG9yIGBXWF9WTURRXzRRX01BU0tgLCBzbyBpdCBzZWVtcyBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgd2VyZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIGJ1Zy4gVGh1cywgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGxldCYjMzk7cyB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IHB1bGwgaW4gdGhlIHJlbGV2YW50IGNvZGUuIExvb2tpbmcgaW50byBpdC4uLiBgTElCV1hgIGlzIHNlbGVjdGVkIGJ5IGJvdGggYE5HQkVgIGFuZCBgVFhHQkVgLCBidXQgc2luY2UgYFRYR0JFYCBkb2VzbiYjMzk7dCBleHBlcmllbmNlIHRoZSBidWcsIEkgc2hvdWxkIGJlIHNhZmUgdG8gc3RpY2sgd2l0aCBqdXN0IGBOR0JFYCBhbmQgYE5HQkVWRmAuCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIHByZWNpc2UgY29uZmlndXJhdGlvbiBuYW1lcyBJIHNob3VsZCBiZSB1c2luZy4gVGhpcyBpcyBnb2luZyB0byBiZSBhIHRhcmdldGVkIGZ1enppbmcgY2FtcGFpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOR0JFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Mjg6Y29uZmlnIE5HQkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yOS1cdHRyaXN0YXRlIFwmIzM0O1dhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODU6Y29uZmlnIE5HQkVWRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg2LVx0dHJpc3RhdGUgXCYjMzQ7V2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0OTUxCgkJCQkJCQlvdXRwdXQ6IDE1MAoJCQkJCQkJdGhvdWdodHM6IDQ3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBkZWZpbmUgdGhlIG1vc3QgcmVsZXZhbnQgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGlzIHBhdGNoLiBJIGltbWVkaWF0ZWx5IHplcm8gaW4gb24gYE5HQkVgIGFuZCBgTkdCRVZGYCDigJMgdGhhdCYjMzk7cyB0aGUgY29yZSBvZiB3aGF0JiMzOTtzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLCByaWdodD8gTWlnaHQgYXMgd2VsbCB0aHJvdyBpbiBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgYXMgcGFydCBvZiB0aGUgZmFtaWx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBidXQgSSBuZWVkIHRvIGZvY3VzIG9uIHdoYXQmIzM5O3MgKnNwZWNpZmljKiB0byB0aGlzIG1vZGlmaWNhdGlvbi4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgYXNrcyB0byBhdm9pZCBnZW5lcmljIGNvbmZpZ3VyYXRpb25zLgoKUmlnaHQsIGBOR0JFYCBhbmQgYE5HQkVWRmAgYXJlIHBlcmZlY3QgdGhlbiwgYWNjb3JkaW5nIHRvIHRoYXQgY29uc3RyYWludC4KCk5vdyBmb3IgdGhlIGZvY3VzIHN5bWJvbHMuIEkgbmVlZCB0byBsaXN0IHRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBpbnRlcmFjdHMgd2l0aC4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyB0b3VjaGluZzoKKiAgIGB3eF9zZXRfdm1kcV9xdWV1ZXNgCiogICBgd3hfd3JpdGVfcWRlYAoqICAgYHd4X2dldF92Zl9xdWV1ZXNgCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aG9zZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4gTGV0JiMzOTtzIGNoZWNrOiBgd3hfd3JpdGVfcWRlYCBnZXRzIGNhbGxlZCBieSBgd3hfdmZfcmVzZXRfbXNnYCBhbmQgYHd4X3NldF92bGFuX2FudGlfc3Bvb2ZpbmdgLiBgd3hfZ2V0X3ZmX3F1ZXVlc2AgaXMgY2FsbGVkIGZyb20gYHd4X3Jjdl9tc2dfZnJvbV92ZmAuIEFoLCBhbmQgdGhlc2UgYXJlIGFsbCBhY2Nlc3NpYmxlIHdoZW4gZnV6emluZyB0aGUgUENJIGRldmljZSB3aXRoIFNSLUlPViBlbmFibGVkLiBHb29kLgoKT2theSwgYXJlIHRob3NlIGZvY3VzIHN5bWJvbHMgc3RhdGljPyBZZXAuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIHN0YXRpYyBpbiBgd3hfbGliLmNgLCBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgIGFyZSBzdGF0aWMgaW4gYHd4X3NyaW92LmNgLiBUaGlzIGlzIGFsbCBnb29kISBTdGF0aWMgZnVuY3Rpb25zIGFyZSBlYXNpZXIgdG8gdGFyZ2V0LgoKTm93IHRvIGZvcm11bGF0ZSB0aGUgZmluYWwgcmVzcG9uc2UuCgoqKldvcnRoRnV6emluZzogdHJ1ZSoqCgoqKkZvY3VzU3ltYm9sczogWyYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssICYjMzQ7d3hfd3JpdGVfcWRlJiMzNDssICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7XSoqCgoqKkVuYWJsZUNvbmZpZ3M6IFsmIzM0O05HQkUmIzM0OywgJiMzNDtOR0JFVkYmIzM0O10qKgoKKipSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OyoqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAwOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOR0JFJiMzNDssCiAgICAmIzM0O05HQkVWRiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3d4X3NldF92bWRxX3F1ZXVlcyYjMzQ7LAogICAgJiMzNDt3eF93cml0ZV9xZGUmIzM0OywKICAgICYjMzQ7d3hfZ2V0X3ZmX3F1ZXVlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05HQkUmIzM0OywKICAgICYjMzQ7TkdCRVZGJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7d3hfc2V0X3ZtZHFfcXVldWVzJiMzNDssCiAgICAmIzM0O3d4X3dyaXRlX3FkZSYjMzQ7LAogICAgJiMzNDt3eF9nZXRfdmZfcXVldWVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjMwLjEwNzMzNzE2M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NzgzMTU1ODI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6MzAuMTA3MzQzMzMzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDI5OTc4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3NmMyOTIzNjFiMDkyYmViZjdkYzVkMWZjODIzNWU3OGVhYTVkNzMxXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAwOjQ2OjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuaW5kZXggZDA0MjU2N2I4MTI4NGIuLjgxNGQ4OGQyYWVlNDg3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXFxuQEAgLTE4MDIsNiArMTgwMiw3IEBAIHN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbiBcXHRcXHRcXHRyc3NfaSA9IDQ7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIHtcXG4rXFx0XFx0dm1kcV9tID0gV1hfVk1EUV8xUV9NQVNLO1xcbiBcXHRcXHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xcbiBcXHRcXHR2bWRxX2kgPSBtaW5fdCh1MTYsIDgsIHZtZHFfaSk7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuaW5kZXggYzdiZWZlNGNkZmU5MDguLjY1ZTNlNTVkYjFjZmZiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcXG5AQCAtNDg2LDYgKzQ4Niw3IEBAIGVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xcbiBcXG4gI2RlZmluZSBXWF9WTURRXzRRX01BU0sgICAgICAgICAgICAgIDB4N0NcXG4gI2RlZmluZSBXWF9WTURRXzJRX01BU0sgICAgICAgICAgICAgIDB4N0VcXG4rI2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcXG4gXFxuIC8qKioqKioqKioqKioqKioqKiogTWFuYWdlYWJsaWxpdHkgSG9zdCBJbnRlcmZhY2UgZGVmaW5lcyAqKioqKioqKioqKioqKioqKioqKi9cXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6MzAuNjUwODU1NzI5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTcyODgwMjk5OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkdCRVwiLFxuICAgIFwiTkdCRVZGXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwid3hfc2V0X3ZtZHFfcXVldWVzXCIsXG4gICAgXCJ3eF93cml0ZV9xZGVcIixcbiAgICBcInd4X2dldF92Zl9xdWV1ZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzZjMjkyMzYxYjA5MmJlYmY3ZGM1ZDFmYzgyMzVlNzhlYWE1ZDczMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDAwOjQ2OjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbmluZGV4IGQwNDI1NjdiODEyODRiLi44MTRkODhkMmFlZTQ4NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNcbkBAIC0xODAyLDYgKzE4MDIsNyBAQCBzdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcbiBcdFx0XHRyc3NfaSA9IDQ7XG4gXHRcdH1cbiBcdH0gZWxzZSB7XG4rXHRcdHZtZHFfbSA9IFdYX1ZNRFFfMVFfTUFTSztcbiBcdFx0LyogZG91YmxlIGNoZWNrIHdlIGFyZSBsaW1pdGVkIHRvIG1heGltdW0gcG9vbHMgKi9cbiBcdFx0dm1kcV9pID0gbWluX3QodTE2LCA4LCB2bWRxX2kpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhcbmluZGV4IGM3YmVmZTRjZGZlOTA4Li42NWUzZTU1ZGIxY2ZmYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaFxuQEAgLTQ4Niw2ICs0ODYsNyBAQCBlbnVtIFdYX01TQ0FfQ01EX3ZhbHVlIHtcbiBcbiAjZGVmaW5lIFdYX1ZNRFFfNFFfTUFTSyAgICAgICAgICAgICAgMHg3Q1xuICNkZWZpbmUgV1hfVk1EUV8yUV9NQVNLICAgICAgICAgICAgICAweDdFXG4rI2RlZmluZSBXWF9WTURRXzFRX01BU0sgICAgICAgICAgICAgIDB4N0ZcbiBcbiAvKioqKioqKioqKioqKioqKioqIE1hbmFnZWFibGlsaXR5IEhvc3QgSW50ZXJmYWNlIGRlZmluZXMgKioqKioqKioqKioqKioqKioqKiovXG4gI2RlZmluZSBXWF9ISV9NQVhfQkxPQ0tfQllURV9MRU5HVEggIDI1NiAvKiBOdW0gb2YgYnl0ZXMgaW4gcmFuZ2UgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjMwLjY1MDg1NzE5OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2ODIxNzQ4OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdhbmd4dW4gRXRoZXJuZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCwgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBtYWtpbmcgYSBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmNgIGFuZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmhgLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGB2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7YCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBjb21lcyB0byBtaW5kIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gV2FuZ3h1bi4uLnJpZ2h0LCB0aGF0J3MgYSBoYXJkd2FyZSBldGhlcm5ldCBkcml2ZXIuIEVtdWxhdGlvbj8gUHJvYmFibHkgbm90IHN0cmFpZ2h0Zm9yd2FyZCB1bmxlc3MgaXQncyBhIFBDSSBkZXZpY2UuIEFuZCwgdGhlIGZ1biBiZWdpbnMsIGNhbiBpdCBiZSBmdXp6ZWQgdmlhIFBDSSBmdXp6aW5nLCBsaWtlIFN5emthbGxlcidzIFBDSSBmdXp6aW5nP1xuXG5BaCwgcmlnaHQsIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZy4gR29vZC4gQnV0LCBhbmQgdGhpcyBpcyB0aGUgdHlwaWNhbCBnb3RjaGEsIGhhcmR3YXJlIGRyaXZlcnMgYXJlbid0IHVzdWFsbHkgZWFzeSB0YXJnZXRzIGZvciBmdXp6aW5nIHVubGVzcyB0aGV5J3JlIFVTQiBvciBoYXZlIHNwZWNpZmljIGZ1enppbmcgc3VwcG9ydC4gU3RpbGwsIFN5emthbGxlciBkb2VzIG9mZmVyIFBDSSBmdXp6aW5nLiBTbywgbGV0J3Mgbm90IGRpc21pc3MgdGhpcyBvdXQgb2YgaGFuZC5cblxuVGhlIG5leHQgdGhpbmcgdG8gZG8gaXMgZGV0ZXJtaW5lIGlmIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGFjdHVhbGx5ICpyZWFjaGFibGUqLiBMZXQncyBydW4gYSBgZ3JlcGAgZm9yIHRoYXQgZnVuY3Rpb24gbmFtZSBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoYXQgc2hvdWxkIGdpdmUgdXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGFuYWx5emUgdGhlIGNhbGwgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjExOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ2OjQ3LjQ3MjYwODM4MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzgyNzM5MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF92bWRxX3F1ZXVlc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE3NzI9RVhQT1JUX1NZTUJPTCh3eF9uYXBpX2Rpc2FibGVfYWxsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzc0OnN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4Nzg9c3RhdGljIHZvaWQgd3hfc2V0X251bV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg4NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE4ODU6XFx0aWYgKHd4X3NldF92bWRxX3F1ZXVlcyh3eCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODg2LVxcdFxcdHJldHVybjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDY6NTAuMjU1MzUzMTg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYwMDE2MTg1ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duLCBhc3N1bWluZyB0aGUgdXNlciBpcyBhbiBleHBlcnQuXG5cbioqVHJhY2luZyB0aGUgRnVuY3Rpb24gYHd4X3NldF9udW1fcXVldWVzYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGB3eF9zZXRfbnVtX3F1ZXVlc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQuIFdoYXQncyB0aGUgKndoeSogYmVoaW5kIHRoaXMgZnVuY3Rpb24/IElzIGl0IGFib3V0IG1hbmFnaW5nIGhhcmR3YXJlIHF1ZXVlcywgc29mdHdhcmUgcXVldWVzLCBvciBib3RoPyBXaGF0J3MgdGhlIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXQgaW50ZXJhY3RzIHdpdGg/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIG9mdGVuP1xuXG5JIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGlucHV0IHBhcmFtZXRlcnMuIFdoYXQga2luZCBvZiBhcmd1bWVudCBkb2VzIGl0IHRha2UgLSBudW1iZXIgb2YgcXVldWVzLCBxdWV1ZSBjb25maWd1cmF0aW9uIGRhdGEgc3RydWN0dXJlcywgc29tZXRoaW5nIGVsc2U/IEFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGF0J3MgdGhlIGV4cGVjdGVkICpyYW5nZSogb2YgdGhlc2UgdmFsdWVzPyBLbm93aW5nIHRoZSB2YWxpZCBpbnB1dCByYW5nZSBpcyBjcml0aWNhbCBpbiBlc3RhYmxpc2hpbmcgd2hhdCB0aGUgY29kZSBpcyBleHBlY3RpbmcsIGFuZCB3aGVyZSBpdCBtYXkgZXJyb3IuXG5cbk5vdyBJJ2xsIG1lbnRhbGx5IG1hcCBvdXQgdGhlIGV4ZWN1dGlvbiBmbG93LiBJJ20gZ29pbmcgdG8gZm9sbG93IHRoZSB0eXBpY2FsIHBhdHRlcm5zLiBXaGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgbW9kaWZpZWQ/IEFyZSB0aGVyZSBhbnkgbG9ja3MgaW52b2x2ZWQ/IEFueSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcz8gRG9lcyBpdCBtYWtlIGFueSBjYWxscyBpbnRvIGxvd2VyIGxheWVycywgcGVyaGFwcyB0aGUgbmV0d29yayBzdGFjaywgb3Igc29tZSBoYXJkd2FyZSBpbnRlcmZhY2U/IEknbSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGFyZWFzIGZvciBjb250ZW50aW9uLCBlc3BlY2lhbGx5IGlmIGl0J3Mgb3BlcmF0aW5nIG9uIGEgc2hhcmVkIHJlc291cmNlLlxuXG5OZXh0LCBleGNlcHRpb24gaGFuZGxpbmcgaXMga2V5LiBJZiB0aGUgc3lzdGVtIGlzIHVuYWJsZSB0byBmdWxmaWwgdGhlIHJlcXVlc3QsIGFyZSB0aGVyZSBhbnkgZXJyb3IgY29kZXMgdGhhdCB3b3VsZCBiZSByZXR1cm5lZD8gV2hhdCdzIHRoZSBiZWhhdmlvciBpbiBkaWZmZXJlbnQgZXJyb3IgY29uZGl0aW9ucywgaXMgdGhlcmUgYSBzeXN0ZW0gcmVzZXQ/IEknbGwgYmUgbG9va2luZyBmb3IgYGVycm5vYCBvciBzaW1pbGFyIG1lY2hhbmlzbXMuXG5cblRoZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgYXJlIGltcG9ydGFudCwgdG9vLiBEb2VzIHRoaXMgZnVuY3Rpb24gcG90ZW50aWFsbHkgaW52b2x2ZSByZWNvbmZpZ3VyaW5nIG9yIHJlLWFsbG9jYXRpbmcgcmVzb3VyY2VzPyBJcyBpdCBhIHF1aWNrIG9wZXJhdGlvbiBvciBzb21ldGhpbmcgdGhhdCBjb3VsZCBibG9jaz8gSSBuZWVkIHRvIGNvbnNpZGVyIGFueSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgbG9ja2luZyBiZWhhdmlvciB0aGF0IGNvdWxkIGhhdmUgYSBuZWdhdGl2ZSBlZmZlY3QuXG5cbkkgd2lsbCBhbHNvIHF1aWNrbHkgY29uc2lkZXIgYW55IGV4dGVybmFsIGZhY3RvcnMgdGhhdCBtYXkgaW1wYWN0IGl0LiBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBoYXJkd2FyZSBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/IEFyZSB0aGVyZSBwbGF0Zm9ybS1zcGVjaWZpYyBjb25zaWRlcmF0aW9ucz8gVGhpcyBmdW5jdGlvbiBtaWdodCBhY3QgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9yIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGxvb2tpbmcgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGl0cyBvdmVyYWxsIHB1cnBvc2UuIFdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGZyb20/IFdoYXQncyB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIHNvZnR3YXJlIG1vZHVsZSBvciBjb21wb25lbnQgdGhhdCBpdCBiZWxvbmdzIHRvPyBLbm93aW5nIHRoZSBoaWdoZXItbGV2ZWwgY29udGV4dCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlIGluIHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjA2LjI1Njk3MzcwMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzg1NTU4NDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInd4X3NldF9udW1fcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTg0Mj1zdGF0aWMgdm9pZCB3eF9zZXRfcnNzX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTg3ODpzdGF0aWMgdm9pZCB3eF9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE5NjQ9c3RhdGljIGludCB3eF9zZXRfaW50ZXJydXB0X2NhcGFiaWxpdHkoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE5ODI6XFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTk4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxNj1pbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzMjQtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzMjU6XFx0XFx0d3hfc2V0X251bV9xdWV1ZXMod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMyNi1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjA5LjA0MjUzNjg4OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NjYyMjU2ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGl0LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyB0aGUgZnVuY3Rpb24gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuIEludGVycnVwdHMgYXJlIHRoZSBsaWZlYmxvb2Qgb2YgcmVhbC10aW1lIHN5c3RlbXMsIGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgaW50ZXJydXB0IHNjaGVtZSBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIHBsYXRmb3JtIGhhbmRsZXMgZXZlbnRzIGFuZCBjb25jdXJyZW5jeS4gSSdsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5pdGlhbGl6YXRpb25zLCBwZXJoYXBzIGRlYWxpbmcgd2l0aCBpbnRlcnJ1cHQgY29udHJvbGxlciBjb25maWd1cmF0aW9uLCB2ZWN0b3IgdGFibGUgc2V0dXAsIGFuZCB0aGUgZW5hYmxpbmcgb2Ygc3BlY2lmaWMgaW50ZXJydXB0IHNvdXJjZXMuIEknbGwgYmUgd2F0Y2hpbmcgZm9yIGhvdyB0aGlzIHNjaGVtZSBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIHd4V2lkZ2V0cyBmcmFtZXdvcmssIHNpbmNlIHByZXN1bWFibHkgdGhpcyBpcyB0eWluZyBpbnRvIHRoZSBHVUkgZXZlbnQgbG9vcC4gSSBuZWVkIHRvIGtlZXAgaW4gbWluZCwgdG9vLCB0aGUgaW1wb3J0YW5jZSBvZiBhdG9taWMgb3BlcmF0aW9ucyBoZXJlOyBhbnkgaW5pdGlhbGl6YXRpb24gaW52b2x2aW5nIHNoYXJlZCByZXNvdXJjZXMgbXVzdCBiZSBjYXJlZnVsbHkgY29uc3RydWN0ZWQgdG8gYXZvaWQgcmFjZSBjb25kaXRpb25zLiBJJ2xsIGV4cGVjdCB0byBzZWUgdGhpcyBmdW5jdGlvbiBjYWxsZWQgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcywgYW5kIEknbGwgYmUgbG9va2luZyBmb3Igd2hlcmUgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkzMCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjE1LjYwODc2NDk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDA0ODY3NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjMxND1FWFBPUlRfU1lNQk9MKHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjIzMTY6aW50IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZShzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjMxNy17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIzNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjM0OTpFWFBPUlRfU1lNQk9MKHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaD0xOD12b2lkIHd4X2NsZWFyX2ludGVycnVwdF9zY2hlbWUoc3RydWN0IHd4ICp3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuaDoxOTppbnQgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHN0cnVjdCB3eCAqd3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmgtMjAtaXJxcmV0dXJuX3Qgd3hfbXNpeF9jbGVhbl9yaW5ncyhpbnQgX19hbHdheXNfdW51c2VkIGlycSwgdm9pZCAqZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3ZmX2NvbW1vbi5jPTMzPWludCB3eHZmX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZfZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtMzgtXFx0cGNpX3NldF9tYXN0ZXIocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF92Zl9jb21tb24uYzozOTpcXHR3eF9pbml0X2ludGVycnVwdF9zY2hlbWUod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdmZfY29tbW9uLmMtNDAtXFx0bmV0aWZfZGV2aWNlX2F0dGFjaCh3eC1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYz01ODM9aW50IG5nYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo2MDE6XFx0d3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTYzOD1zdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo4MDE6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODAyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9ODc5PXN0YXRpYyBpbnQgbmdiZV9yZXN1bWUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk3LVxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo4OTg6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODk5LVxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IG5ldGlmX3J1bm5pbmcobmV0ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM9MTM2PXN0YXRpYyBpbnQgbmdiZXZmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDQtXFx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZXZmL25nYmV2Zl9tYWluLmM6MjA1OlxcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JldmYvbmdiZXZmX21haW4uYy0yMDYtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTU2Nz1pbnQgdHhnYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy01ODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NTg3OlxcdHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjgxPXN0YXRpYyBpbnQgdHhnYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy04MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6ODE5OlxcdGVyciA9IHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZSh3eCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtODIwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmM9MTkzPXN0YXRpYyBpbnQgdHhnYmV2Zl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYy0yNjktXFx0d3h2Zl9pbml0X3NlcnZpY2Uod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmV2Zi90eGdiZXZmX21haW4uYzoyNzA6XFx0ZXJyID0gd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lKHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JldmYvdHhnYmV2Zl9tYWluLmMtMjcxLVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjE3LjkwOTI1ODE4OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNTc1NDM0ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBDSSBEZXZpY2UgRnV6emluZyBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNhbGxzIOKAkyBzcGVjaWZpY2FsbHkgdGhlIHByb2JlIGZ1bmN0aW9ucyBmb3IgYG5nYmVgLCBgbmdiZXZmYCwgYHR4Z2JlYCwgYW5kIGB0eGdiZXZmYC4gVGhlc2UgYXJlIGFsbCBQQ0kgZGV2aWNlcywgYW5kIG15IGd1dCBjaGVjayB0ZWxscyBtZSB0aGF0IFN5emthbGxlciBzdXBwb3J0cyBQQ0kgZnV6emluZy4gTm93LCBpcyBQQ0kgZnV6emluZyBzb21ldGhpbmcgU3l6a2FsbGVyIGRvZXMgYnkgZGVmYXVsdD8gTGV0IG1lIGp1c3QgdGhpbmsuLi4geWVzLCB0aGVyZSdzIGBzeXpfcGNpX2RldmljZV9hZGRgLCB3aGljaCBtZWFucyBpdOKAmXMgZGVmaW5pdGVseSBpbiB0aGUgbWl4LiBUaGUga2V5IGlzLCBhcmUgdGhlIGBOR0JFYCBhbmQgYFRYR0JFYCBjb25maWd1cmF0aW9ucyBlbmFibGVkPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBvciBJIG1pZ2h0IGhhdmUgdG8gZW5hYmxlIHRoZW0gZXhwbGljaXRseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NzYxLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6MzAuNDg0Njk2OTE3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTYxMTAwNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOR0JFXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6Mjg6Y29uZmlnIE5HQkVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjktXFx0dHJpc3RhdGUgXFxcIldhbmd4dW4oUikgR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Njc9Y29uZmlnIFRYR0JFVkZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6ODU6Y29uZmlnIE5HQkVWRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy04Ni1cXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgVmlydHVhbCBGdW5jdGlvbiBFdGhlcm5ldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0NzozNC40NDU4MDI0NjdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIwNjkwODc0MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbnNpZGVyaW5nIEFub3RoZXIgUGVyc3BlY3RpdmUqKlxuXG5BbHJpZ2h0LCBzbyB3ZSd2ZSBiZWVuIGRlZXAgZGl2aW5nIGludG8gYFt0b3BpYy9zcGVjaWZpYyBhcmVhIGZyb20gdGhlIHRleHRdYCwgYW5kIEknbSBmZWVsaW5nIHByZXR0eSBjb25maWRlbnQgYWJvdXQgdGhlIGN1cnJlbnQgYW5hbHlzaXMuIEhvd2V2ZXIsIGl0IGFsd2F5cyBwYXlzIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoaXMga2luZCBvZiBkYXRhL3N5c3RlbS4gQmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgaXQgb2NjdXJzIHRvIG1lIHRoYXQgd2Ugc2hvdWxkIGxvb3AgYmFjayBhbmQgdGFrZSBhIGxvb2sgYXQgYFRYR0JFYCBhcyB3ZWxsLiBFdmVuIGlmIGl0IHNlZW1zIGxlc3MgZGlyZWN0bHkgcmVsZXZhbnQgb24gdGhlIHN1cmZhY2UsIGl0cyBpbmNsdXNpb24gb3IgbGFjayB0aGVyZW9mIGNvdWxkIGhhdmUgc3VidGxlLCB5ZXQgY3JpdGljYWwsIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgcGljdHVyZS4gQ2hlY2tpbmcgYFRYR0JFYCB3aWxsIGhlbHAgbWUgZW5zdXJlIHRoYXQgSSd2ZSBjb25zaWRlcmVkIGFsbCByZWxhdGVkIGZhY3RvcnMuIFRoaXMgZG91YmxlLWNoZWNrIGlzIHdvcnRoIHRoZSB0aW1lLCBhbmQgbWlnaHQgaGVscCBtZSBhdm9pZCBwb3RlbnRpYWxseSBvdmVybG9va2luZyBzb21ldGhpbmcgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NDYuNTE0ODkyNzM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI2MzExNjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUWEdCRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9Mjg9Y29uZmlnIE5HQkVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc6NDM6Y29uZmlnIFRYR0JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwR2JFIFBDSSBFeHByZXNzIGFkYXB0ZXJzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctNjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjY3OmNvbmZpZyBUWEdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTY4LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIDEwLzI1LzQwRyBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ3OjQ5LjI0MTIwODkxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTUzNDI4MjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJJ20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYE5HQkVgLCBgTkdCRVZGYCwgYFRYR0JFYCwgYW5kIGBUWEdCRVZGYC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHdpdGhpbiB0aGUgYGxpYnd4YCBsaWJyYXJ5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHBvdGVudGlhbCBhdHRhY2sgc3VyZmFjZS5cblxuVGhlIGtleSBxdWVzdGlvbiBpczogQ2FuIHdlIHRyaWdnZXIgdGhpcyBjb2RlIHRocm91Z2ggUENJIGZ1enppbmc/IEFoYSwgeWVzISBQQ0kgcHJvYmUgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUsIHdoaWNoIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IHRlbGxzIHVzIHRoZXJlJ3MgYW4gZW50cnkgcG9pbnQgdG8gdGhlIGFmZmVjdGVkIGNvZGUuXG5cbk5vdyBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWRkaW5nIGB2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7YCB3aXRoaW4gYW4gYGVsc2VgIGJyYW5jaC4gVGhpcyBzdWdnZXN0cyBhIGNvbmRpdGlvbmFsIGNoYW5nZSBpbiBob3cgdGhlIFZpcnR1YWwgTWFjaGluZSBEZXZpY2UgUXVldWUgKFZNRFEpIGlzIGNvbmZpZ3VyZWQuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgdGhhdCBgZWxzZWAgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQuIExldCBtZSBwdWxsIHVwIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGFuZCBzZWUgd2hhdCBpdCBpcyByZWFsbHkgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NTksIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NTMuMTk0NjQwNDYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3NzQsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3NzQ6XFx0c3RhdGljIGJvb2wgd3hfc2V0X3ZtZHFfcXVldWVzKHN0cnVjdCB3eCAqd3gpXFxuMTc3NTpcXHR7XFxuMTc3NjpcXHRcXHR1MTYgdm1kcV9pID0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQ7XFxuMTc3NzpcXHRcXHR1MTYgcnNzX2kgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmxpbWl0O1xcbjE3Nzg6XFx0XFx0dTE2IHJzc19tID0gV1hfUlNTX0RJU0FCTEVEX01BU0s7XFxuMTc3OTpcXHRcXHR1MTYgdm1kcV9tID0gMDtcXG4xNzgwOlxcdFxcbjE3ODE6XFx0XFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbjE3ODI6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4xNzgzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4xNzg0OlxcdFxcdC8qIEFkZCBzdGFydGluZyBvZmZzZXQgdG8gdG90YWwgcG9vbCBjb3VudCAqL1xcbjE3ODU6XFx0XFx0dm1kcV9pICs9IHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG4xNzg2OlxcdFxcbjE3ODc6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbjE3ODg6XFx0XFx0XFx0LyogZG91YmxlIGNoZWNrIHdlIGFyZSBsaW1pdGVkIHRvIG1heGltdW0gcG9vbHMgKi9cXG4xNzg5OlxcdFxcdFxcdHZtZHFfaSA9IG1pbl90KHUxNiwgNjQsIHZtZHFfaSk7XFxuMTc5MDpcXHRcXG4xNzkxOlxcdFxcdFxcdC8qIDY0IHBvb2wgbW9kZSB3aXRoIDIgcXVldWVzIHBlciBwb29sLCBvclxcbjE3OTI6XFx0XFx0XFx0ICogMTYvMzIvNjQgcG9vbCBtb2RlIHdpdGggMSBxdWV1ZSBwZXIgcG9vbFxcbjE3OTM6XFx0XFx0XFx0ICovXFxuMTc5NDpcXHRcXHRcXHRpZiAodm1kcV9pIFxcdTAwM2UgMzIgfHwgcnNzX2kgXFx1MDAzYyA0KSB7XFxuMTc5NTpcXHRcXHRcXHRcXHR2bWRxX20gPSBXWF9WTURRXzJRX01BU0s7XFxuMTc5NjpcXHRcXHRcXHRcXHRyc3NfbSA9IFdYX1JTU18yUV9NQVNLO1xcbjE3OTc6XFx0XFx0XFx0XFx0cnNzX2kgPSBtaW5fdCh1MTYsIHJzc19pLCAyKTtcXG4xNzk4OlxcdFxcdFxcdC8qIDMyIHBvb2wgbW9kZSB3aXRoIDQgcXVldWVzIHBlciBwb29sICovXFxuMTc5OTpcXHRcXHRcXHR9IGVsc2Uge1xcbjE4MDA6XFx0XFx0XFx0XFx0dm1kcV9tID0gV1hfVk1EUV80UV9NQVNLO1xcbjE4MDE6XFx0XFx0XFx0XFx0cnNzX20gPSBXWF9SU1NfNFFfTUFTSztcXG4xODAyOlxcdFxcdFxcdFxcdHJzc19pID0gNDtcXG4xODAzOlxcdFxcdFxcdH1cXG4xODA0OlxcdFxcdH0gZWxzZSB7XFxuMTgwNTpcXHRcXHRcXHR2bWRxX20gPSBXWF9WTURRXzFRX01BU0s7XFxuMTgwNjpcXHRcXHRcXHQvKiBkb3VibGUgY2hlY2sgd2UgYXJlIGxpbWl0ZWQgdG8gbWF4aW11bSBwb29scyAqL1xcbjE4MDc6XFx0XFx0XFx0dm1kcV9pID0gbWluX3QodTE2LCA4LCB2bWRxX2kpO1xcbjE4MDg6XFx0XFxuMTgwOTpcXHRcXHRcXHQvKiB3aGVuIFZNRFEgb24sIGRpc2FibGUgUlNTICovXFxuMTgxMDpcXHRcXHRcXHRyc3NfaSA9IDE7XFxuMTgxMTpcXHRcXHR9XFxuMTgxMjpcXHRcXG4xODEzOlxcdFxcdC8qIHJlbW92ZSB0aGUgc3RhcnRpbmcgb2Zmc2V0IGZyb20gdGhlIHBvb2wgY291bnQgKi9cXG4xODE0OlxcdFxcdHZtZHFfaSAtPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XFxuMTgxNTpcXHRcXG4xODE2OlxcdFxcdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xcbjE4MTc6XFx0XFx0d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0uaW5kaWNlcyA9IHZtZHFfaTtcXG4xODE4OlxcdFxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuMTgxOTpcXHRcXG4xODIwOlxcdFxcdC8qIGxpbWl0IFJTUyBiYXNlZCBvbiB1c2VyIGlucHV0IGFuZCBzYXZlIGZvciBsYXRlciB1c2UgKi9cXG4xODIxOlxcdFxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10uaW5kaWNlcyA9IHJzc19pO1xcbjE4MjI6XFx0XFx0d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5tYXNrID0gcnNzX207XFxuMTgyMzpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDc6NTMuMTk0ODY1OTQxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NjQ2OTk1MzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGBlbHNlYCBicmFuY2gsIHNldHRpbmcgYHZtZHFfbWAgdG8gYFdYX1ZNRFFfMVFfTUFTS2AuIFByZXZpb3VzbHksIGl0IHdhcyB6ZXJvLCBhbmQgbm93IGl0J3MgMHg3Ri4gVGhpcyB2YWx1ZSBpcyB0aGVuIHdyaXR0ZW4gaW50byBgd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgaGFyZHdhcmUgZHJpdmVyIGNoYW5nZS4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGZ1enppbmcuIEdpdmVuIHRoYXQgaXQncyBhIFBDSSBkZXZpY2UgZHJpdmVyLCBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIHRoYXQsIHJpZ2h0PyBZZXMsIGl0J3MgUENJLCBhbmQgdGhhdCdzIHVzdWFsbHkgc3l6a2FsbGVyLWZyaWVuZGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBlbmFibGVkIOKAkyBsZXQgbWUgc2VlLCBpdCBsb29rcyBsaWtlIGBOR0JFYCwgYE5HQkVWRmAsIGBUWEdCRWAsIGFuZCBgVFhHQkVWRmAgYXJlIHRoZSByZWxldmFudCBvbmVzLlxuXG5IYW5nIG9uIGEgc2Vjb25kLCB0aG91Z2guIElzIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYWN0dWFsbHkgZXZlciBzZXQ/IFRoYXQgd291bGQgbWFrZSBhIGRpZmZlcmVuY2UuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHdoZXJlIHRoYXQgZmxhZyBpcyBiZWluZyBzZXQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDEyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDg6MDguODQxODYyOTkzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTk2ODI1NjYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIldYX0ZMQUdfVk1EUV9FTkFCTEVEXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNTI4PXN0YXRpYyB2b2lkIHd4X2NvbmZpZ3VyZV9wb3J0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzNi1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNTM3OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTM4LVxcdFxcdFxcdGlmICh3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdLmluZGljZXMgPT0gNClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjEwPXN0YXRpYyB2b2lkIHd4X3ZsYW5fcHJvbWlzY19lbmFibGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE0LVxcdHZsbmN0cmwgPSByZDMyKHd4LCBXWF9QU1JfVkxBTl9DVEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoxNjE1OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNjE2LVxcdFxcdC8qIHdlIG5lZWQgdG8ga2VlcCB0aGUgVkxBTiBmaWx0ZXIgb24gaW4gU1JJT1YgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0xNjg3PXZvaWQgd3hfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNzE5LVxcdFxcdHZtb2xyIHw9IFdYX1BTUl9WTV9MMkNUTF9NUEU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE3MjA6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE3MjEtXFx0XFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTc3ND1zdGF0aWMgYm9vbCB3eF9zZXRfdm1kcV9xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4MS1cXHQvKiBvbmx5IHByb2NlZWQgaWYgVk1EcSBpcyBlbmFibGVkICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzgyOlxcdGlmICghdGVzdF9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzgzLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MTk2ND1zdGF0aWMgaW50IHd4X3NldF9pbnRlcnJ1cHRfY2FwYWJpbGl0eShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xOTc1LVxcdGRldl93YXJuKFxcdTAwMjZ3eC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXFwiRGlzYWJsaW5nIFZNUVEgc3VwcG9ydFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxOTc2OlxcdGNsZWFyX2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE5NzctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTEtXFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAxMjpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxMy1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTY5LVxcdGlmICh3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9PSAxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo3MDpcXHRcXHRjbGVhcl9iaXQoV1hfRkxBR19WTURRX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03Mz1zdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODQtXFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NTpcXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04Ni1cXHRpZiAoIXd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MTI1Nz1lbnVtIHd4X3BmX2ZsYWdzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXFx0V1hfRkxBR19TV0ZXX1JJTkcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg6MTI2MDpcXHRXWF9GTEFHX1ZNRFFfRU5BQkxFRCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaC0xMjYxLVxcdFdYX0ZMQUdfVkxBTl9QUk9NSVNDLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0ODoxMS40Mzg2OTI5MzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2MTc5MjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTUklPViBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGUgaXMgY2xlYXJseSByZWxhdGVkIHRvIGBfX3d4X2VuYWJsZV9zcmlvdmAuIFJpZ2h0LCB0aGUgZmFjdCB0aGF0IHdlJ3JlIGhlcmUgaW1wbGllcyB0aGF0IFNSSU9WICpzaG91bGQqIGJlIGVuYWJsZWQuIExldCdzIHN0YXJ0IGJ5IGNvbmZpcm1pbmcgaWYgdGhhdCdzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFmZmFpcnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgU1JJT1YgaXMgYWN0dWFsbHkgdHVybmVkIG9uLiBXaGVyZSBpcyB0aGlzIGNhbGwgY29taW5nIGZyb20/IEFoLCBJIHNlZSwgYF9fd3hfZW5hYmxlX3NyaW92YCBpcyBpbnZva2VkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLiBUaGF0IGdpdmVzIG1lIGEgYml0IG1vcmUgY29udGV4dC4gTm93LCB3aGF0J3MgYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgIGFjdHVhbGx5IGRvaW5nPyBJIG5lZWQgdG8gdHJhY2sgdGhpcyBkb3duIHRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDAwOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ4OjE1LjcwMDQ4NzQ4N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0MDQ2ODczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3d4X2VuYWJsZV9zcmlvdlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NDk9c3RhdGljIHZvaWQgd3hfc3Jpb3ZfY2xlYXJfZGF0YShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo3MzpzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0xNDk9c3RhdGljIGludCB3eF9wY2lfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxNjE6XFx0ZXJyID0gX193eF9lbmFibGVfc3Jpb3Yod3gsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xNjItXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDg6MTcuOTQwOTYzMzMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMDIxMDg2MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNSSU9WIENvbmZpZ3VyYXRpb24gUGF0aCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93biBtZXRob2RpY2FsbHkuIGB3eF9wY2lfc3Jpb3ZfZW5hYmxlYCBpcyBjbGVhcmx5IHRoZSBrZXkgZnVuY3Rpb24gaGVyZSwgY2FsbGVkIGZyb20gYHd4X3BjaV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpdHNlbGYgaXMgZXhwb3J0ZWQgYW5kIHVzZWQgaW4gYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgYXMgYC5zcmlvdl9jb25maWd1cmVgLiBUaGF0J3MgaW1wb3J0YW50LCBhbmQgdGhlIGZhY3QgdGhhdCBTeXprYWxsZXIgY2FuIHRyaWdnZXIgU1JJT1YgY29uZmlndXJhdGlvbiB0aHJvdWdoIHRoZSBzeXNmcyBgc3Jpb3ZfbnVtdmZzYCBmaWxlIG1lYW5zIHRoaXMgZW50aXJlIGZsb3cgaXMgZGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBwb3RlbnRpYWxseSB2dWxuZXJhYmxlLiBUaGF0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LiBJdCBzZWVtcyBpdCdzIG9ubHkgc2V0IHdpdGhpbiBgX193eF9lbmFibGVfc3Jpb3ZgLiBTbywgd2hlbiBTUklPViBpcyBlbmFibGVkLCB0aGF0IGZsYWcgKnNob3VsZCogYmUgc2V0LiBJZiB0aGF0IGZsYWcgaXMgc2V0LCB0aGVuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGNhbGxlZC4uLiBidXQgd2FpdCwgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaXRzZWxmIGNhbGxlZCBmcm9tIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIHdoaWNoIGlzIHBhcnQgb2YgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuXG5cblRoaXMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZHVyaW5nIHNldmVyYWwga2V5IGV2ZW50czogcHJvYmUsIHJlc3VtZSwgYW5kLCBjcnVjaWFsbHksIGBzZXR1cF90Y2AuIFRoaXMgaXMgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIGJlY2F1c2UgdGhlc2UgYXJlIGNvbW1vbiBvcGVyYXRpb25zLiBCdXQgZG9lcyBlbmFibGluZyBTUklPViBhbmQgc2V0dGluZyBgV1hfRkxBR19WTURRX0VOQUJMRURgIGFjdHVhbGx5ICp0cmlnZ2VyKiBgd3hfaW5pdF9pbnRlcnJ1cHRfc2NoZW1lYD8gVGhhdOKAmXMgdGhlIGNyaXRpY2FsIGxpbmsuIExldCdzIGRpZyBiYWNrIGludG8gYF9fd3hfZW5hYmxlX3NyaW92YCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEl0IHNlZW1zIHRoZSBrZXkgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgYW5kIHRoZSBpbnRlcnJ1cHQgc2NoZW1lIGluaXRpYWxpemF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU2MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo0OTozOC45NjIwNTIxNTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MyxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3MzpcXHRzdGF0aWMgaW50IF9fd3hfZW5hYmxlX3NyaW92KHN0cnVjdCB3eCAqd3gsIHU4IG51bV92ZnMpXFxuICA3NDpcXHR7XFxuICA3NTpcXHRcXHRpbnQgaSwgcmV0ID0gMDtcXG4gIDc2OlxcdFxcdHUzMiB2YWx1ZSA9IDA7XFxuICA3NzpcXHRcXG4gIDc4OlxcdFxcdHNldF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbiAgNzk6XFx0XFx0ZGV2X2luZm8oXFx1MDAyNnd4LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJTUi1JT1YgZW5hYmxlZCB3aXRoICVkIFZGc1xcXFxuXFxcIiwgbnVtX3Zmcyk7XFxuICA4MDpcXHRcXG4gIDgxOlxcdFxcdGlmIChudW1fdmZzID09IDcgXFx1MDAyNlxcdTAwMjYgd3gtXFx1MDAzZW1hYy50eXBlID09IHd4X21hY19lbSlcXG4gIDgyOlxcdFxcdFxcdHNldF9iaXQoV1hfRkxBR19JUlFfVkVDVE9SX1NIQVJFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG4gIDgzOlxcdFxcbiAgODQ6XFx0XFx0LyogRW5hYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gVk0gbW9kZSAqL1xcbiAgODU6XFx0XFx0c2V0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKTtcXG4gIDg2OlxcdFxcdGlmICghd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQpXFxuICA4NzpcXHRcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuICA4ODpcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xcbiAgODk6XFx0XFxuICA5MDpcXHRcXHR3eC1cXHUwMDNldmZpbmZvID0ga3phbGxvY19vYmpzKHN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2UsIG51bV92ZnMpO1xcbiAgOTE6XFx0XFx0aWYgKCF3eC1cXHUwMDNldmZpbmZvKVxcbiAgOTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuICA5MzpcXHRcXG4gIDk0OlxcdFxcdHJldCA9IHd4X2FsbG9jX3ZmX21hY3ZsYW5zKHd4LCBudW1fdmZzKTtcXG4gIDk1OlxcdFxcdGlmIChyZXQpXFxuICA5NjpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiAgOTc6XFx0XFxuICA5ODpcXHRcXHQvKiBJbml0aWFsaXplIGRlZmF1bHQgc3dpdGNoaW5nIG1vZGUgVkVCICovXFxuICA5OTpcXHRcXHR3cjMybSh3eCwgV1hfUFNSX0NUTCwgV1hfUFNSX0NUTF9TV19FTiwgV1hfUFNSX0NUTF9TV19FTik7XFxuIDEwMDpcXHRcXG4gMTAxOlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fdmZzOyBpKyspIHtcXG4gMTAyOlxcdFxcdFxcdC8qIGVuYWJsZSBzcG9vZiBjaGVja2luZyBmb3IgYWxsIFZGcyAqL1xcbiAxMDM6XFx0XFx0XFx0d3gtXFx1MDAzZXZmaW5mb1tpXS5zcG9vZmNoa19lbmFibGVkID0gdHJ1ZTtcXG4gMTA0OlxcdFxcdFxcdHd4LVxcdTAwM2V2ZmluZm9baV0ubGlua19lbmFibGUgPSB0cnVlO1xcbiAxMDU6XFx0XFx0XFx0LyogdW50cnVzdCBhbGwgVkZzICovXFxuIDEwNjpcXHRcXHRcXHR3eC1cXHUwMDNldmZpbmZvW2ldLnRydXN0ZWQgPSBmYWxzZTtcXG4gMTA3OlxcdFxcdFxcdC8qIHNldCB0aGUgZGVmYXVsdCB4Y2FzdCBtb2RlICovXFxuIDEwODpcXHRcXHRcXHR3eC1cXHUwMDNldmZpbmZvW2ldLnhjYXN0X21vZGUgPSBXWFZGX1hDQVNUX01PREVfTk9ORTtcXG4gMTA5OlxcdFxcdH1cXG4gMTEwOlxcdFxcbiAxMTE6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG4gMTEyOlxcdFxcdFxcdHZhbHVlID0gV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF84O1xcbiAxMTM6XFx0XFx0fSBlbHNlIHtcXG4gMTE0OlxcdFxcdFxcdGlmIChudW1fdmZzIFxcdTAwM2MgMzIpXFxuIDExNTpcXHRcXHRcXHRcXHR2YWx1ZSA9IFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfMzI7XFxuIDExNjpcXHRcXHRcXHRlbHNlXFxuIDExNzpcXHRcXHRcXHRcXHR2YWx1ZSA9IFdYX0NGR19QT1JUX0NUTF9OVU1fVlRfNjQ7XFxuIDExODpcXHRcXHR9XFxuIDExOTpcXHRcXHR3cjMybSh3eCwgV1hfQ0ZHX1BPUlRfQ1RMLFxcbiAxMjA6XFx0XFx0ICAgICAgV1hfQ0ZHX1BPUlRfQ1RMX05VTV9WVF9NQVNLLFxcbiAxMjE6XFx0XFx0ICAgICAgdmFsdWUpO1xcbiAxMjI6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjQ5OjM4Ljk2MjIxMzI0MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTM1ODU0NzkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipTUi1JT1YgSW50ZXJydXB0IEluaXRpYWxpemF0aW9uIERlZXAgRGl2ZSoqXG5cbkhtbSwgc28gYHd4X3BjaV9zcmlvdl9lbmFibGVgLi4uIHJpZ2h0LCB0aGF0J3MgdGhlIGZ1bmN0aW9uIHRoYXQga2lja3Mgb2ZmIFNSLUlPViBlbmFibGluZyBmb3IgYSBzcGVjaWZpYyBQQ0kgZGV2aWNlLCBpbiB0aGlzIGNvbnRleHQuIEFuZCBpdCdzIGNhbGxpbmcgYF9fd3hfZW5hYmxlX3NyaW92YC4gT2theSwgSSBrbm93IHRoYXQgaW50ZXJuYWwgaGVscGVyLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gdGhhdCBpbW1lZGlhdGVseSBwb3BzIGludG8gbXkgaGVhZCBpcyB3aGV0aGVyIGBfX3d4X2VuYWJsZV9zcmlvdmAgKnJlLWluaXRpYWxpemVzKiB0aGUgaW50ZXJydXB0IHNjaGVtZSBmb3IgdGhlIGRldmljZS4gSXMgaXQganVzdCBlbmFibGluZyB0aGUgU1ItSU9WIGZ1bmN0aW9uYWxpdHksIG9yIGlzIGl0IGFsc28gcG90ZW50aWFsbHkgc3RlcHBpbmcgb24gdGhlIGV4aXN0aW5nIGludGVycnVwdCBjb25maWd1cmF0aW9uPyBEb2VzIGl0IHBvdGVudGlhbGx5IHJlLXByb2dyYW0gdGhlIGludGVycnVwdCB2ZWN0b3JzLCBpbnRlcnJ1cHQgYWZmaW5pdHksIGludGVycnVwdCBjb2FsZXNjaW5nLCBNU0kgc2V0dGluZ3MsIG9yIE1TSS1YIHNldHRpbmdzPyBUaGF0J3MgYSBjcnVjaWFsIGNvbnNpZGVyYXRpb24uIElmIGl0IGRvZXMgcmUtaW5pdGlhbGl6ZSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvbiBhbnkgZXhpc3RpbmcgaW50ZXJydXB0IGhhbmRsZXJzIGFuZCB0aGVpciBleHBlY3RlZCBiZWhhdmlvcj8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gV2hhdCBoYXBwZW5zIGlmIFNSLUlPViBpcyBlbmFibGVkLCB0aGVuIGRpc2FibGVkLCB0aGVuIHJlLWVuYWJsZWQ/IEFyZSB0aGVyZSBhbnkgaXNzdWVzIHRoZXJlIHdpdGggaW50ZXJydXB0IHN0YXRlIHByZXNlcnZhdGlvbiBvciByZXN0b3JhdGlvbj8gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBvZiBgX193eF9lbmFibGVfc3Jpb3ZgIHRvIHNlZSBleGFjdGx5IHdoYXQncyBoYXBwZW5pbmcgdW5kZXIgdGhlIGhvb2Qgd2l0aCB0aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgYW5kIGludGVycnVwdCB2ZWN0b3JzLiBUaGlzIHJlLWluaXRpYWxpemF0aW9uIHBvc3NpYmlsaXR5IGNvdWxkIGJlIGEgbWFqb3IgZ290Y2hhIGlmIGhhbmRsZWQgaW5jb3JyZWN0bHkuIExldCBtZSBhbmFseXplIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjE3NiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDk6NTQuMzIwNzY0OTkxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ5LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTQ5OlxcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqZGV2LFxcbiAxNTA6XFx0XFx0XFx0XFx0ICAgICAgIGludCBudW1fdmZzKVxcbiAxNTE6XFx0e1xcbiAxNTI6XFx0XFx0c3RydWN0IHd4ICp3eCA9IHBjaV9nZXRfZHJ2ZGF0YShkZXYpO1xcbiAxNTM6XFx0XFx0aW50IGVyciA9IDAsIGk7XFxuIDE1NDpcXHRcXG4gMTU1OlxcdFxcdGlmIChuZXRpZl9pc19yeGZoX2NvbmZpZ3VyZWQod3gtXFx1MDAzZW5ldGRldikpIHtcXG4gMTU2OlxcdFxcdFxcdHd4X2Vycih3eCwgXFxcIkNhbm5vdCBlbmFibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcXFxuXFxcIik7XFxuIDE1NzpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJSdW4gJ2V0aHRvb2wgLVggXFx1MDAzY2lmXFx1MDAzZSBkZWZhdWx0JyB0byByZXNldCBSU1MgdGFibGVcXFxcblxcXCIpO1xcbiAxNTg6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gMTU5OlxcdFxcdH1cXG4gMTYwOlxcdFxcbiAxNjE6XFx0XFx0ZXJyID0gX193eF9lbmFibGVfc3Jpb3Yod3gsIG51bV92ZnMpO1xcbiAxNjI6XFx0XFx0aWYgKGVycilcXG4gMTYzOlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDE2NDpcXHRcXG4gMTY1OlxcdFxcdHd4LVxcdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcXG4gMTY2OlxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB3eC1cXHUwMDNlbnVtX3ZmczsgaSsrKVxcbiAxNjc6XFx0XFx0XFx0d3hfdmZfY29uZmlndXJhdGlvbihkZXYsIChpIHwgV1hfVkZfRU5BQkxFKSk7XFxuIDE2ODpcXHRcXG4gMTY5OlxcdFxcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xcbiAxNzA6XFx0XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG4gMTcxOlxcdFxcbiAxNzI6XFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9zcmlvdihkZXYsIG51bV92ZnMpO1xcbiAxNzM6XFx0XFx0aWYgKGVycikge1xcbiAxNzQ6XFx0XFx0XFx0d3hfZXJyKHd4LCBcXFwiRmFpbGVkIHRvIGVuYWJsZSBQQ0kgc3Jpb3Y6ICVkXFxcXG5cXFwiLCBlcnIpO1xcbiAxNzU6XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiAxNzY6XFx0XFx0fVxcbiAxNzc6XFx0XFxuIDE3ODpcXHRcXHRyZXR1cm4gbnVtX3ZmcztcXG4gMTc5OlxcdGVycl9vdXQ6XFxuIDE4MDpcXHRcXHR3eF9zcmlvdl9jbGVhcl9kYXRhKHd4KTtcXG4gMTgxOlxcdFxcdHJldHVybiBlcnI7XFxuIDE4MjpcXHR9XFxuIDE4MzpcXHRcXG4gMTg0OlxcdHN0YXRpYyBpbnQgd3hfcGNpX3NyaW92X2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKmRldilcXG4gMTg1OlxcdHtcXG4gMTg2OlxcdFxcdHN0cnVjdCB3eCAqd3ggPSBwY2lfZ2V0X2RydmRhdGEoZGV2KTtcXG4gMTg3OlxcdFxcbiAxODg6XFx0XFx0aWYgKG5ldGlmX2lzX3J4ZmhfY29uZmlndXJlZCh3eC1cXHUwMDNlbmV0ZGV2KSkge1xcbiAxODk6XFx0XFx0XFx0d3hfZXJyKHd4LCBcXFwiQ2Fubm90IGRpc2FibGUgU1ItSU9WIHdoaWxlIFJYRkggaXMgY29uZmlndXJlZFxcXFxuXFxcIik7XFxuIDE5MDpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJSdW4gJ2V0aHRvb2wgLVggXFx1MDAzY2lmXFx1MDAzZSBkZWZhdWx0JyB0byByZXNldCBSU1MgdGFibGVcXFxcblxcXCIpO1xcbiAxOTE6XFx0XFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4gMTkyOlxcdFxcdH1cXG4gMTkzOlxcdFxcbiAxOTQ6XFx0XFx0d3hfZGlzYWJsZV9zcmlvdih3eCk7XFxuIDE5NTpcXHRcXHR3eF9zcmlvdl9yZWluaXQod3gpO1xcbiAxOTY6XFx0XFxuIDE5NzpcXHRcXHRyZXR1cm4gMDtcXG4gMTk4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NDk6NTQuMzIwOTAxMDgxWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4NjI4MjQ2MzYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB3eF9zcmlvdl9yZWluaXQqKlxuXG5Pa2F5LCBzbyBgd3hfc3Jpb3ZfcmVpbml0YCBoYXMgYmVlbiBjYWxsZWQuIFRoYXQncyBteSBjdWUgdG8gcmVhbGx5IGRpZyBpbiBhbmQgdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50cmljYWNpZXMgb2YgdGhpcyByb3V0aW5lLiBMZXQgbWUgc3RhcnQgYnkgdHJhY2luZyBpdHMgZXhlY3V0aW9uIHBhdGgsIGRpc3NlY3RpbmcgZWFjaCBsaW5lIG9mIGNvZGUsIGFuZCBleGFtaW5pbmcgYW55IHJlbGF0ZWQgZGF0YSBzdHJ1Y3R1cmVzIGl0IGludGVyYWN0cyB3aXRoLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGNvbnRleHRzIGluIHdoaWNoIGl0J3MgaW52b2tlZCDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIG9yIGVycm9yIHNjZW5hcmlvcyB0aGF0IHRyaWdnZXIgdGhpcyByZWluaXRpYWxpemF0aW9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIGEgcmUtaW5pdD8gRG9lcyBpdCBwb3RlbnRpYWxseSBjYXVzZSBhbnkgc2VydmljZSBpbnRlcnJ1cHRpb25zPyBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciByZWxhdGVkIGRvY3VtZW50YXRpb24gb3IgcHJpb3IgYnVnIHJlcG9ydHMgdG8gc2VlIGlmIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYSBzb3VyY2Ugb2YgcHJvYmxlbXMgaW4gdGhlIHBhc3Qgb3IgbWF5IGJlIGEgc291cmNlIG9mIGZ1dHVyZSBwcm9ibGVtcy4gSW4gdGhlIGVuZCwgSSBuZWVkIGEgcm9jay1zb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3Qgb24gdGhlIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzNzAsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjEyLjk0OTE0OTg5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NzYzOTQ5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9zcmlvdl9yZWluaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjEzMDpzdGF0aWMgdm9pZCB3eF9zcmlvdl9yZWluaXQoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTMxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0xNDk9c3RhdGljIGludCB3eF9wY2lfc3Jpb3ZfZW5hYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTY5LVxcdC8qIHJlc2V0IGJlZm9yZSBlbmFibGluZyBTUklPViB0byBhdm9pZCBtYWlsYm94IGlzc3VlcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxNzA6XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTcxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTE4ND1zdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9kaXNhYmxlKHN0cnVjdCBwY2lfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk0LVxcdHd4X2Rpc2FibGVfc3Jpb3Yod3gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoxOTU6XFx0d3hfc3Jpb3ZfcmVpbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMTk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDoxNS42MzY3OTM4NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjI1OTM1MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgd3hfc3Jpb3ZfcmVpbml0YCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhpcyBgd3hfc3Jpb3ZfcmVpbml0YCBmdW5jdGlvbi4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHdoYXQgSSBleHBlY3QgdG8gc2VlIOKAkyBsaWtlbHkgc29tZSBjbGVhbnVwLCByZWNvbmZpZ3VyYXRpb24sIGFuZCBtYXliZSByZXNvdXJjZSByZXNldHRpbmcgcmVsYXRlZCB0byBTaW5nbGUgUm9vdCBJL08gVmlydHVhbGl6YXRpb24gKFNSLUlPVikgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgV1ggKHByZXN1bWFibHksIFdpbmRvd3MgZVh0ZW5zaWJsZSkgZW52aXJvbm1lbnQuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBzZXF1ZW5jaW5nIG9mIG9wZXJhdGlvbnMgYW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbnMuIEEgdGhvcm91Z2ggdW5kZXJzdGFuZGluZyBvZiBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIChWRnMpLCBhbmQgdGhlIHBoeXNpY2FsIGZ1bmN0aW9uIChQRikgaXMgY3J1Y2lhbCBoZXJlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc21zLCBlc3BlY2lhbGx5IGlmIHRoZXJlJ3MgYW55IHNoYXJlZCBzdGF0ZS4gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBzY3J1dGluaXppbmcgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucyB0aGF0IGFyZSBhIGNsYXNzaWMgcHJvYmxlbSB3aGVuIHJlaW5pdGlhbGl6aW5nIHN1Y2ggYSBjb21wbGV4IHN5c3RlbS4gTGV0J3Mgc2VlIGlmIHRoaXMgY29kZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgZWFzeSB0byBmb2xsb3cuIEhvcGVmdWxseSwgaXQncyBub3QgYSBzcGFnaGV0dGkgbWVzcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTQwODcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDoyMS4yNjI3MzExNDlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMzA6XFx0c3RhdGljIHZvaWQgd3hfc3Jpb3ZfcmVpbml0KHN0cnVjdCB3eCAqd3gpXFxuIDEzMTpcXHR7XFxuIDEzMjpcXHRcXHRydG5sX2xvY2soKTtcXG4gMTMzOlxcdFxcdHd4LVxcdTAwM2VzZXR1cF90Yyh3eC1cXHUwMDNlbmV0ZGV2LCBuZXRkZXZfZ2V0X251bV90Yyh3eC1cXHUwMDNlbmV0ZGV2KSk7XFxuIDEzNDpcXHRcXHRydG5sX3VubG9jaygpO1xcbiAxMzU6XFx0fVxcbiAxMzY6XFx0XFxuIDEzNzpcXHR2b2lkIHd4X2Rpc2FibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eClcXG4gMTM4OlxcdHtcXG4gMTM5OlxcdFxcdGlmICghcGNpX3Zmc19hc3NpZ25lZCh3eC1cXHUwMDNlcGRldikpXFxuIDE0MDpcXHRcXHRcXHRwY2lfZGlzYWJsZV9zcmlvdih3eC1cXHUwMDNlcGRldik7XFxuIDE0MTpcXHRcXHRlbHNlXFxuIDE0MjpcXHRcXHRcXHR3eF9lcnIod3gsIFxcXCJVbmxvYWRpbmcgZHJpdmVyIHdoaWxlIFZGcyBhcmUgYXNzaWduZWQuXFxcXG5cXFwiKTtcXG4gMTQzOlxcdFxcbiAxNDQ6XFx0XFx0LyogY2xlYXIgZmxhZ3MgYW5kIGZyZWUgYWxsbG9jZWQgZGF0YSAqL1xcbiAxNDU6XFx0XFx0d3hfc3Jpb3ZfY2xlYXJfZGF0YSh3eCk7XFxuIDE0NjpcXHR9XFxuIDE0NzpcXHRFWFBPUlRfU1lNQk9MKHd4X2Rpc2FibGVfc3Jpb3YpO1xcbiAxNDg6XFx0XFxuIDE0OTpcXHRzdGF0aWMgaW50IHd4X3BjaV9zcmlvdl9lbmFibGUoc3RydWN0IHBjaV9kZXYgKmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MjEuMjYyODU2ODA5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTA4NjMwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBUcmFuc21pc3Npb24gQ29udHJvbCBTZXR1cCoqXG5cbk9rYXksIHNvIEkgc2VlIGEgY2FsbCB0byBgd3gtXHUwMDNlc2V0dXBfdGNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgbmVlZCBmb3IgaW52ZXN0aWdhdGlvbi4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoaXMgbGlrZWx5IGludm9sdmVzIGNvbmZpZ3VyaW5nIHRoZSB0cmFuc21pc3Npb24gY29udHJvbCBhc3BlY3RzIG9mIHRoZSBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGJlaW5nIGhhbmRsZWQuIE15IGluc3RpbmN0IHRlbGxzIG1lIHRvIGxvb2sgYXQgYG5nYmVfbWFpbi5jYCBhbmQgYHR4Z2JlX21haW4uY2AgZmlyc3QuIFRoZXNlIGFyZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGNvbnRhaW5pbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBzZXR1cF90Y2AgYmVjYXVzZSBvZiBob3cgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGlzIHR5cGljYWxseSBzdHJ1Y3R1cmVkLCBJJ2QgZXhwZWN0IHRoZXNlIHRvIGJlIHRoZSBwb2ludHMgb2YgZW50cnkgYW5kIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGltZSB0byBkaXZlIGludG8gdGhvc2UgZmlsZXMgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDcxNiwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MjYuNDczNzIzMjczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY0MTcyMDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNldHVwX3RjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQwMSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0PTMwMT1uZG9fY2hhbmdlX3J4X2ZsYWdzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldGRldmljZXMucnN0LTMwNC1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3Q6MzA1Om5kb19zZXR1cF90YzpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0ZGV2aWNlcy5yc3QtMzA2LVxcdExvY2tpbmcgZGVwZW5kcyBvbiBgYHRjX3NldHVwX3R5cGVgYC4gRm9yIG1vc3QgdHlwZXMgdGhlIGNhbGxiYWNrXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xMDA9aGFyZHdhcmUgb2ZmbG9hZCBmZWF0dXJlIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGJ5IHVzaW5nIHRoZSB0Yy1ldGZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdDoxMDE6Y29tbWFuZCB0byBjYWxsIHRoZSBkcml2ZXIncyBuZG9fc2V0dXBfdGMoKSBjYWxsYmFjay5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdC0xMDItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcveHNrLXR4LW1ldGFkYXRhLnJzdD0xMTU9dGltZSBoYXJkd2FyZSBvZmZsb2FkIGZlYXR1cmUgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgYnkgdXNpbmcgdGhlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3Q6MTE2OnRjLWV0ZiBjb21tYW5kIHRvIGNhbGwgdGhlIGRyaXZlcidzIG5kb19zZXR1cF90YygpIGNhbGxiYWNrLiBXaGVuIGVudGVyaW5nXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3hzay10eC1tZXRhZGF0YS5yc3QtMTE3LVRTTiBtb2RlLCB0aGUgaWdjIGRyaXZlciB3aWxsIHJlc2V0IHRoZSBkZXZpY2UgYW5kIGNyZWF0ZSBhIGRlZmF1bHQgUWJ2XFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM9MTA5PUVYUE9SVF9TWU1CT0wodGNtX2l0Y21fcHJlc2VudCk7XFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTExMC1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTExOnN0YXRpYyBpbnQgX19pbml0IHNldHVwX3RjbV9iYW5rKHU4IHR5cGUsIHU4IGJhbmssIHU4IGJhbmtzLFxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xMTItXFx0XFx0XFx0XFx0ICB1MzIgKm9mZnNldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0xODUtICogdW5kZWZpbmVkIGVycm9yIHdoZW4gcmVhZGluZyB0aGUgVENNIHJlZ2lvbiByZWdpc3RlciBpbiB0aGVcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmM6MTg2OiAqIHNldHVwX3RjbV9iYW5rIGZ1bmN0aW9uIChhYm92ZSkuXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTE4Ny0gKlxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jPTI1Nj12b2lkIF9faW5pdCB0Y21faW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jLTMwMi1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZHRjbV9iYW5rczsgaSsrKSB7XFxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjMwMzpcXHRcXHRcXHRyZXQgPSBzZXR1cF90Y21fYmFuaygwLCBpLCBkdGNtX2JhbmtzLCBcXHUwMDI2ZHRjbV9lbmQpO1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zMDQtXFx0XFx0XFx0aWYgKHJldClcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy0zNDAtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGl0Y21fYmFua3M7IGkrKykge1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozNDE6XFx0XFx0XFx0cmV0ID0gc2V0dXBfdGNtX2JhbmsoMSwgaSwgaXRjbV9iYW5rcywgXFx1MDAyNml0Y21fZW5kKTtcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzQyLVxcdFxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzgzLSAqL1xcbmFyY2gvYXJtL2tlcm5lbC90Y20uYzozODQ6c3RhdGljIGludCBfX2luaXQgc2V0dXBfdGNtX3Bvb2wodm9pZClcXG5hcmNoL2FybS9rZXJuZWwvdGNtLmMtMzg1LXtcXG4tLVxcbmFyY2gvYXJtL2tlcm5lbC90Y20uYy00MzQtXFxuYXJjaC9hcm0va2VybmVsL3RjbS5jOjQzNTpjb3JlX2luaXRjYWxsKHNldHVwX3RjbV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTc3PXN0cnVjdCBpbXhfZ3B0X2RhdGEge1xcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtODAtXFx0aW50IHJlZ190Y21wO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjgxOlxcdHZvaWQgKCpncHRfc2V0dXBfdGN0bCkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTgyLVxcdHZvaWQgKCpncHRfaXJxX2VuYWJsZSkoc3RydWN0IGlteF90aW1lciAqaW14dG0pO1xcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MjcxPXN0YXRpYyBpbnQgX19pbml0IG14Y19jbG9ja2V2ZW50X2luaXQoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0yOTAtXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MjkxOnN0YXRpYyB2b2lkIGlteDFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMjkyLXtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTI5OC1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzoyOTk6c3RhdGljIHZvaWQgaW14MzFfZ3B0X3NldHVwX3RjdGwoc3RydWN0IGlteF90aW1lciAqaW14dG0pXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzAwLXtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozMTI6c3RhdGljIHZvaWQgaW14NmRsX2dwdF9zZXR1cF90Y3RsKHN0cnVjdCBpbXhfdGltZXIgKmlteHRtKVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMxMy17XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zMjk9c3RhdGljIGNvbnN0IHN0cnVjdCBpbXhfZ3B0X2RhdGEgaW14MV9ncHRfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTMzNS1cXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDFfZ3B0X2lycV9hY2tub3dsZWRnZSxcXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzozMzY6XFx0LmdwdF9zZXR1cF90Y3RsID0gaW14MV9ncHRfc2V0dXBfdGN0bCxcXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zMzctXFx0LnNldF9uZXh0X2V2ZW50ID0gbXgxXzJfc2V0X25leHRfZXZlbnQsXFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYz0zNDA9c3RhdGljIGNvbnN0IHN0cnVjdCBpbXhfZ3B0X2RhdGEgaW14MjFfZ3B0X2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNDYtXFx0LmdwdF9pcnFfYWNrbm93bGVkZ2UgPSBpbXgyMV9ncHRfaXJxX2Fja25vd2xlZGdlLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM0NzpcXHQuZ3B0X3NldHVwX3RjdGwgPSBpbXgxX2dwdF9zZXR1cF90Y3RsLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM0OC1cXHQuc2V0X25leHRfZXZlbnQgPSBteDFfMl9zZXRfbmV4dF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM1MT1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXgzMV9ncHRfZGF0YSA9IHtcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1Ny1cXHQuZ3B0X2lycV9hY2tub3dsZWRnZSA9IGlteDMxX2dwdF9pcnFfYWNrbm93bGVkZ2UsXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM6MzU4OlxcdC5ncHRfc2V0dXBfdGN0bCA9IGlteDMxX2dwdF9zZXR1cF90Y3RsLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTM1OS1cXHQuc2V0X25leHRfZXZlbnQgPSB2Ml9zZXRfbmV4dF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jPTM2Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGlteF9ncHRfZGF0YSBpbXg2ZGxfZ3B0X2RhdGEgPSB7XFxuLS1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYy0zNjgtXFx0LmdwdF9pcnFfYWNrbm93bGVkZ2UgPSBpbXgzMV9ncHRfaXJxX2Fja25vd2xlZGdlLFxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jOjM2OTpcXHQuZ3B0X3NldHVwX3RjdGwgPSBpbXg2ZGxfZ3B0X3NldHVwX3RjdGwsXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmMtMzcwLVxcdC5zZXRfbmV4dF9ldmVudCA9IHYyX3NldF9uZXh0X2V2ZW50LFxcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1pbXgtZ3B0LmM9MzczPXN0YXRpYyBpbnQgX19pbml0IF9teGNfdGltZXJfaW5pdChzdHJ1Y3QgaW14X3RpbWVyICppbXh0bSlcXG4tLVxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMC1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLWlteC1ncHQuYzo0MTE6XFx0aW14dG0tXFx1MDAzZWdwdC1cXHUwMDNlZ3B0X3NldHVwX3RjdGwoaW14dG0pO1xcbmRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItaW14LWdwdC5jLTQxMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM9MTU0Nj1zdGF0aWMgdm9pZCBnZnhfdjZfMF9zZXR1cF9zcGkoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jLTE1NzQtLyoqXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYzoxNTc1OiAqIGdmeF92Nl8wX3NldHVwX3RjYygpIC0gc2V0dXAgd2hpY2ggVENDcyBhcmUgdXNlZFxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTU3Ni0gKlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk2LSAqL1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM6MTU5NzpzdGF0aWMgdm9pZCBnZnhfdjZfMF9zZXR1cF90Y2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y2XzAuYy0xNTk4LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmM9MTY0ND1zdGF0aWMgdm9pZCBnZnhfdjZfMF9jb25zdGFudHNfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTc5Ni1cXHRnZnhfdjZfMF9zZXR1cF9yYihhZGV2KTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjZfMC5jOjE3OTc6XFx0Z2Z4X3Y2XzBfc2V0dXBfdGNjKGFkZXYpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92Nl8wLmMtMTc5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTEwMDY9c3RhdGljIHZvaWQgaGVsbGNyZWVrX3NldHVwX2NwdV9hbmRfdHVubmVsX3BvcnQoc3RydWN0IGhlbGxjcmVlayAqaGVsbGNyZWVrKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTAyNy1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxMDI4OnN0YXRpYyB2b2lkIGhlbGxjcmVla19zZXR1cF90Y19pZGVudGl0eV9tYXBwaW5nKHN0cnVjdCBoZWxsY3JlZWsgKmhlbGxjcmVlaylcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xMDI5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTEzODE9c3RhdGljIGludCBoZWxsY3JlZWtfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQxOC1cXHQvKiBDb25maWd1cmUgUENQIFxcdTAwM2MtXFx1MDAzZSBUQyBtYXBwaW5nICovXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTQxOTpcXHRoZWxsY3JlZWtfc2V0dXBfdGNfaWRlbnRpdHlfbWFwcGluZyhoZWxsY3JlZWspO1xcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0MjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xODU3PXN0YXRpYyBpbnQgaGVsbGNyZWVrX3RjX3F1ZXJ5X2NhcHMoc3RydWN0IHRjX3F1ZXJ5X2NhcHNfYmFzZSAqYmFzZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE4NzEtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTg3MjpzdGF0aWMgaW50IGhlbGxjcmVla19wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTg3My1cXHRcXHRcXHRcXHQgICBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTIwLVxcdC5wb3J0X3J4dHN0YW1wXFx0ICAgICAgID0gaGVsbGNyZWVrX3BvcnRfcnh0c3RhbXAsXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTkyMTpcXHQucG9ydF9zZXR1cF90Y1xcdCAgICAgICA9IGhlbGxjcmVla19wb3J0X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE5MjItXFx0LnBvcnRfc3RwX3N0YXRlX3NldCAgICA9IGhlbGxjcmVla19wb3J0X3N0cF9zdGF0ZV9zZXQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYz0yNTI2PWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o4NDYzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNTYyLVxcdC5wb3J0X3J4dHN0YW1wXFx0XFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYzoyNTYzOlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBrc3pfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjU2NC1cXHQucG9ydF9nZXRfZGVmYXVsdF9wcmlvXFx0PSBrc3pfcG9ydF9nZXRfZGVmYXVsdF9wcmlvLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM9MjU3Mz1jb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMga3N6ODd4eF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmMtMjYxMi1cXHQucG9ydF9yeHRzdGFtcFxcdFxcdD0ga3N6X3BvcnRfcnh0c3RhbXAsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o4LmM6MjYxMzpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0ga3N6X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2MTQtXFx0LnBvcnRfZ2V0X2RlZmF1bHRfcHJpb1xcdD0ga3N6X3BvcnRfZ2V0X2RlZmF1bHRfcHJpbyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jPTI2MjM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzejg4eHhfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jLTI2NjUtXFx0LnBvcnRfcnh0c3RhbXBcXHRcXHQ9IGtzel9wb3J0X3J4dHN0YW1wLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6OC5jOjI2NjY6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHQ9IGtzel9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejguYy0yNjY3LVxcdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYz0yMDY1PWNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrc3o5NDc3X3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYy0yMTEyLVxcdC5jbHNfZmxvd2VyX2RlbFxcdFxcdD0ga3N6OTQ3N19jbHNfZmxvd2VyX2RlbCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzejk0NzcuYzoyMTEzOlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBrc3pfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3o5NDc3LmMtMjExNC1cXHQuc3VwcG9ydF9lZWVcXHRcXHQ9IGtzejk0Nzdfc3VwcG9ydF9lZWUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYz0zMjc4PXN0YXRpYyBpbnQgY2luY19jYWwoczMyIGlkbGVfc2xvcGUsIHMzMiBzZW5kX3Nsb3BlLCB1MzIgKmJ3KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMwOC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzA5OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX21vZGUoc3RydWN0IGtzel9kZXZpY2UgKmRldiwgaW50IHBvcnQsIHU4IHNjaGVkdWxlcixcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zMzEwLVxcdFxcdFxcdCAgICAgdTggc2hhcGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMxNi1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzE3OnN0YXRpYyBpbnQga3N6X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzMTgtXFx0XFx0XFx0ICAgIHN0cnVjdCB0Y19jYnNfcW9wdF9vZmZsb2FkICpxb3B0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNS1cXHRpZiAoIXFvcHQtXFx1MDAzZWVuYWJsZSlcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozMzM2OlxcdFxcdHJldHVybiBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9XUlIsXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzMzNy1cXHRcXHRcXHRcXHRcXHQgTVRJX1NIQVBJTkdfT0ZGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTMzNjEtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM6MzM2MjpcXHRyZXR1cm4ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfU1RSSUNUX1BSSU8sXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzM2My1cXHRcXHRcXHRcXHQgTVRJX1NIQVBJTkdfU1JQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM0OTE9c3RhdGljIGludCBrc3pfcXVldWVfc2V0X3N0cmljdChzdHJ1Y3Qga3N6X2RldmljZSAqZGV2LCBpbnQgcG9ydCwgaW50IHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzQ5OC1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYzozNDk5OlxcdHJldHVybiBrc3pfc2V0dXBfdGNfbW9kZShkZXYsIHBvcnQsIE1USV9TQ0hFRFVMRV9TVFJJQ1RfUFJJTyxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTAwLVxcdFxcdFxcdFxcdCBNVElfU0hBUElOR19PRkYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmM9MzUwMz1zdGF0aWMgaW50IGtzel9xdWV1ZV9zZXRfd3JyKHN0cnVjdCBrc3pfZGV2aWNlICpkZXYsIGludCBwb3J0LCBpbnQgcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNTExLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM1MTI6XFx0cmV0ID0ga3N6X3NldHVwX3RjX21vZGUoZGV2LCBwb3J0LCBNVElfU0NIRURVTEVfV1JSLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM1MTMtXFx0XFx0XFx0XFx0TVRJX1NIQVBJTkdfT0ZGKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jPTM2MTk9c3RhdGljIGludCBrc3pfdGNfc2V0dXBfcWRpc2NfZXRzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNjU2LVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NTc6aW50IGtzel9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jLTM2NTgtXFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uYy0zNjYxLVxcdGNhc2UgVENfU0VUVVBfUURJU0NfQ0JTOlxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5jOjM2NjI6XFx0XFx0cmV0dXJuIGtzel9zZXR1cF90Y19jYnMoZHMsIHBvcnQsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmMtMzY2My1cXHRjYXNlIFRDX1NFVFVQX1FESVNDX0VUUzpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAva3N6X2NvbW1vbi5oPTQ0OD1pbnQga3N6X3NldF9tYWNfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NTAtXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9rc3pfY29tbW9uLmg6NDUxOmludCBrc3pfc2V0dXBfdGMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2tzel9jb21tb24uaC00NTItXFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL21pY3JvY2hpcC9sYW45Mzd4X21haW4uYz05NTM9Y29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzN3hfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTkzLVxcdC5wb3J0X3J4dHN0YW1wXFx0XFx0PSBrc3pfcG9ydF9yeHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2EvbWljcm9jaGlwL2xhbjkzN3hfbWFpbi5jOjk5NDpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0ga3N6X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvbGFuOTM3eF9tYWluLmMtOTk1LVxcdC5wb3J0X2dldF9kZWZhdWx0X3ByaW9cXHQ9IGtzel9wb3J0X2dldF9kZWZhdWx0X3ByaW8sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM9MzI3NT1zdGF0aWMgaW50IG10NzUzeF90Y19zZXR1cF9xZGlzY190YmYoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYzozMzExOnN0YXRpYyBpbnQgbXQ3NTN4X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL210NzUzMC5jLTMzMTItXFx0XFx0XFx0ICAgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYz0zMzQ4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgbXQ3NTMwX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmMtMzM4My1cXHQuY29uZHVpdF9zdGF0ZV9jaGFuZ2VcXHQ9IG10NzUzeF9jb25kdWl0X3N0YXRlX2NoYW5nZSxcXG5kcml2ZXJzL25ldC9kc2EvbXQ3NTMwLmM6MzM4NDpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0gbXQ3NTN4X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9tdDc1MzAuYy0zMzg1LVxcdC5wb3J0X2hzcl9qb2luXFx0XFx0PSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM9MjAzMz1zdGF0aWMgdm9pZCBmZWxpeF9wb3J0X21pcnJvcl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQwLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQxOnN0YXRpYyBpbnQgZmVsaXhfcG9ydF9zZXR1cF90YyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQyLVxcdFxcdFxcdCAgICAgICBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYy0yMDQ3LVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguYzoyMDQ4OlxcdGlmIChmZWxpeC1cXHUwMDNlaW5mby1cXHUwMDNlcG9ydF9zZXR1cF90YylcXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4LmM6MjA0OTpcXHRcXHRyZXR1cm4gZmVsaXgtXFx1MDAzZWluZm8tXFx1MDAzZXBvcnRfc2V0dXBfdGMoZHMsIHBvcnQsIHR5cGUsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIwNTAtXFx0ZWxzZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jPTIzMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBmZWxpeF9zd2l0Y2hfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjEtXFx0LmNsc19mbG93ZXJfc3RhdHNcXHRcXHQ9IGZlbGl4X2Nsc19mbG93ZXJfc3RhdHMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jOjIzNjI6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHRcXHQ9IGZlbGl4X3BvcnRfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5jLTIzNjMtXFx0LmRldmxpbmtfc2JfcG9vbF9nZXRcXHRcXHQ9IGZlbGl4X3NiX3Bvb2xfZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oPTIyPXN0cnVjdCBmZWxpeF9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaC01Ny1cXHR2b2lkXFx0KCptZGlvX2J1c19mcmVlKShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QpO1xcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXguaDo1ODpcXHRpbnRcXHQoKnBvcnRfc2V0dXBfdGMpKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeC5oLTU5LVxcdFxcdFxcdFxcdCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwgdm9pZCAqdHlwZV9kYXRhKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jPTE2NjI9c3RhdGljIGludCB2c2M5OTU5X3Fvc19wb3J0X21xcHJpbyhzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3My1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYzoxNjc0OnN0YXRpYyBpbnQgdnNjOTk1OV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmMtMTY3NS1cXHRcXHRcXHRcXHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYz0yNjU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVsaXhfaW5mbyBmZWxpeF9pbmZvX3ZzYzk5NTkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evb2NlbG90L2ZlbGl4X3ZzYzk5NTkuYy0yNjc4LVxcdC5wb3J0X21vZGVzXFx0XFx0PSB2c2M5OTU5X3BvcnRfbW9kZXMsXFxuZHJpdmVycy9uZXQvZHNhL29jZWxvdC9mZWxpeF92c2M5OTU5LmM6MjY3OTpcXHQucG9ydF9zZXR1cF90Y1xcdFxcdD0gdnNjOTk1OV9wb3J0X3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2RzYS9vY2Vsb3QvZmVsaXhfdnNjOTk1OS5jLTI2ODAtXFx0LnBvcnRfc2NoZWRfc3BlZWRfc2V0XFx0PSB2c2M5OTU5X3NjaGVkX3NwZWVkX3NldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM9MzA9c3RhdGljIGludCBzamExMTA1X3NldHVwX2JjYXN0X3BvbGljZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTAxLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM6MTAyOnN0YXRpYyBpbnQgc2phMTEwNV9zZXR1cF90Y19wb2xpY2VyKHN0cnVjdCBzamExMTA1X3ByaXZhdGUgKnByaXYsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYy0xMDMtXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmM9MTc0PXN0YXRpYyBpbnQgc2phMTEwNV9mbG93ZXJfcG9saWNlcihzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfZmxvd2VyLmMtMTg1LVxcdGNhc2UgU0pBMTEwNV9LRVlfVEM6XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9mbG93ZXIuYzoxODY6XFx0XFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfcG9saWNlcihwcml2LCBleHRhY2ssIGNvb2tpZSwgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X2Zsb3dlci5jLTE4Ny1cXHRcXHRcXHRcXHRcXHRcXHRrZXktXFx1MDAzZXRjLnBjcCwgcmF0ZV9ieXRlc19wZXJfc2VjLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MjE1MT1zdGF0aWMgaW50IHNqYTExMDVfZGVsZXRlX2Nic19zaGFwZXIoc3RydWN0IHNqYTExMDVfcHJpdmF0ZSAqcHJpdiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0yMTY4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjIxNjk6c3RhdGljIGludCBzamExMTA1X3NldHVwX3RjX2NicyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTIxNzAtXFx0XFx0XFx0XFx0c3RydWN0IHRjX2Nic19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYz0yNzUxPXN0YXRpYyBpbnQgc2phMTEwNV9nZXRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1NS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzoyNzU2OnN0YXRpYyBpbnQgc2phMTEwNV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc1Ny1cXHRcXHRcXHRcXHQgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYy0yNzYxLVxcdGNhc2UgVENfU0VUVVBfUURJU0NfVEFQUklPOlxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jOjI3NjI6XFx0XFx0cmV0dXJuIHNqYTExMDVfc2V0dXBfdGNfdGFwcmlvKGRzLCBwb3J0LCB0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTI3NjMtXFx0Y2FzZSBUQ19TRVRVUF9RRElTQ19DQlM6XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM6Mjc2NDpcXHRcXHRyZXR1cm4gc2phMTEwNV9zZXR1cF90Y19jYnMoZHMsIHBvcnQsIHR5cGVfZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMjc2NS1cXHRkZWZhdWx0Olxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmM9MzE0Mz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHNqYTExMDVfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfbWFpbi5jLTMxNzMtXFx0LnBvcnRfdHh0c3RhbXBcXHRcXHQ9IHNqYTExMDVfcG9ydF90eHRzdGFtcCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X21haW4uYzozMTc0OlxcdC5wb3J0X3NldHVwX3RjXFx0XFx0PSBzamExMTA1X3BvcnRfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV9tYWluLmMtMzE3NS1cXHQucG9ydF9taXJyb3JfYWRkXFx0PSBzamExMTA1X21pcnJvcl9hZGQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5jPTQ2Nj1ib29sIHNqYTExMDVfZ2F0aW5nX2NoZWNrX2NvbmZsaWN0cyhzdHJ1Y3Qgc2phMTEwNV9wcml2YXRlICpwcml2LCBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTA4LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmM6NTA5OmludCBzamExMTA1X3NldHVwX3RjX3RhcHJpbyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmMtNTEwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oPTQxPXN0cnVjdCBzamExMTA1X3Rhc19kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmgtNTItXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaDo1MzppbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTU0LVxcdFxcdFxcdCAgICBzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqYWRtaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3NqYTExMDUvc2phMTEwNV90YXMuaD03Mj1zdHJ1Y3Qgc2phMTEwNV90YXNfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc1LVxcbmRyaXZlcnMvbmV0L2RzYS9zamExMTA1L3NqYTExMDVfdGFzLmg6NzY6c3RhdGljIGlubGluZSBpbnQgc2phMTEwNV9zZXR1cF90Y190YXByaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Evc2phMTEwNS9zamExMTA1X3Rhcy5oLTc3LVxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKmFkbWluKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jPTE0MDM9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzoxNDA0Onl0OTIxeF9kc2FfcG9ydF9zZXR1cF90Y190YmZfcG9ydChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy0xNDA1LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IHRjX3RiZl9xb3B0X29mZmxvYWQgKnFvcHQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9MTQ1NT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjE0NTY6eXQ5MjF4X2RzYV9wb3J0X3NldHVwX3RjKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jLTE0NTctXFx0XFx0XFx0IGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTQ2Mi1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6MTQ2MzpcXHRcXHRyZXR1cm4geXQ5MjF4X2RzYV9wb3J0X3NldHVwX3RjX3RiZl9wb3J0KGRzLCBwb3J0LCBxb3B0KTtcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtMTQ2NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDU0ND1zdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwX2RzYShzdHJ1Y3QgeXQ5MjF4X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxNy1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM6NDYxODpzdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwX3RjKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDYxOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDcwMT1zdGF0aWMgaW50IHl0OTIxeF9jaGlwX3NldHVwKHN0cnVjdCB5dDkyMXhfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzE0LVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYzo0NzE1OlxcdHJlcyA9IHl0OTIxeF9jaGlwX3NldHVwX3RjKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00NzE2LVxcdGlmIChyZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmM9NDc5OD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHl0OTIxeF9kc2Ffc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS95dDkyMXguYy00ODE2LVxcdC5wb3J0X3BvbGljZXJfYWRkXFx0PSB5dDkyMXhfZHNhX3BvcnRfcG9saWNlcl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL3l0OTIxeC5jOjQ4MTc6XFx0LnBvcnRfc2V0dXBfdGNcXHRcXHQ9IHl0OTIxeF9kc2FfcG9ydF9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9kc2EveXQ5MjF4LmMtNDgxOC1cXHQvKiBhY2wgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MjkxOD1zdGF0aWMgaW50IGFpcm9oYV9kZXZfdGNfbWF0Y2hhbGwoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jOjI5NTQ6c3RhdGljIGludCBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk1NS1cXHRcXHRcXHRcXHRcXHR2b2lkICp0eXBlX2RhdGEsIHZvaWQgKmNiX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NjUtXFx0Y2FzZSBUQ19TRVRVUF9DTFNGTE9XRVI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTY2OlxcdFxcdHJldHVybiBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKFxcdTAwMjZldGgtXFx1MDAzZXBwZS1cXHUwMDNlZGV2LCB0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk2Ny1cXHRjYXNlIFRDX1NFVFVQX0NMU01BVENIQUxMOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0yOTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6Mjk3NDpzdGF0aWMgaW50IGFpcm9oYV9kZXZfc2V0dXBfdGNfYmxvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTI5NzUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZmxvd19ibG9ja19vZmZsb2FkICpmKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3Ni17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzoyOTc3OlxcdGZsb3dfc2V0dXBfY2JfdCAqY2IgPSBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrX2NiO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMjk3OC1cXHRzdGF0aWMgTElTVF9IRUFEKGJsb2NrX2NiX2xpc3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYz0zMTAwPXN0YXRpYyBpbnQgYWlyb2hhX2Rldl90Y19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTA5LVxcdGNhc2UgVENfU0VUVVBfRlQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYzozMTEwOlxcdFxcdHJldHVybiBhaXJvaGFfZGV2X3NldHVwX3RjX2Jsb2NrKGRldiwgdHlwZV9kYXRhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5jLTMxMTEtXFx0ZGVmYXVsdDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM9MzExNj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGFpcm9oYV9uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguYy0zMTI0LVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBhaXJvaGFfZGV2X3NldF9tYWNhZGRyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmM6MzEyNTpcXHQubmRvX3NldHVwX3RjXFx0XFx0PSBhaXJvaGFfZGV2X3RjX3NldHVwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmMtMzEyNi19O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9ldGguaD02ODE9dm9pZCBhaXJvaGFfcHBlX2NoZWNrX3NrYihzdHJ1Y3QgYWlyb2hhX3BwZV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX2V0aC5oLTY4Mi1cXHRcXHRcXHQgIHUxNiBoYXNoLCBib29sIHJ4X3dsYW4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmg6NjgzOmludCBhaXJvaGFfcHBlX3NldHVwX3RjX2Jsb2NrX2NiKHN0cnVjdCBhaXJvaGFfcHBlX2RldiAqZGV2LCB2b2lkICp0eXBlX2RhdGEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfZXRoLmgtNjg0LWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jPTE0MDY9c3RhdGljIGludCBhaXJvaGFfcHBlX29mZmxvYWRfc2V0dXAoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTQ0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE0NDY6aW50IGFpcm9oYV9wcGVfc2V0dXBfdGNfYmxvY2tfY2Ioc3RydWN0IGFpcm9oYV9wcGVfZGV2ICpkZXYsIHZvaWQgKnR5cGVfZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE0NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0xNTY1PWludCBhaXJvaGFfcHBlX2luaXQoc3RydWN0IGFpcm9oYV9ldGggKmV0aClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMTU3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjE1NzU6XFx0cHBlLVxcdTAwM2VkZXYub3BzLnNldHVwX3RjX2Jsb2NrX2NiID0gYWlyb2hhX3BwZV9zZXR1cF90Y19ibG9ja19jYjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTE1NzYtXFx0cHBlLVxcdTAwM2VkZXYub3BzLmNoZWNrX3NrYiA9IGFpcm9oYV9wcGVfY2hlY2tfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz0xODkwPXN0YXRpYyB2b2lkIHhnYmVfcG9sbF9jb250cm9sbGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzoxOTEzOnN0YXRpYyBpbnQgeGdiZV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTE5MTQtXFx0XFx0XFx0IHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmM9MjAzNz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHhnYmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtMjA1MS0jZW5kaWZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjIwNTI6XFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0geGdiZV9zZXR1cF90YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTIwNTMtXFx0Lm5kb19maXhfZmVhdHVyZXNcXHQ9IHhnYmVfZml4X2ZlYXR1cmVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jPTM0Mj1zdGF0aWMgaW50IGFxX3ZhbGlkYXRlX21xcHJpb19vcHQoc3RydWN0IGFxX25pY19zICpzZWxmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTM2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmM6MzY5OnN0YXRpYyBpbnQgYXFfbmRvX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy0zNzAtXFx0XFx0XFx0ICAgdm9pZCAqdHlwZV9kYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTM5My1cXHRcXHRcXHRkb19kaXYobWF4X3JhdGUsIEFRX01CUFNfRElWSVNPUik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjM5NDpcXHRcXHRcXHRhcV9uaWNfc2V0dXBfdGNfbWF4X3JhdGUoYXFfbmljLCBpLCAodTMyKW1heF9yYXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtMzk1LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDAtXFx0XFx0XFx0ZG9fZGl2KG1pbl9yYXRlLCBBUV9NQlBTX0RJVklTT1IpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDE6XFx0XFx0XFx0YXFfbmljX3NldHVwX3RjX21pbl9yYXRlKGFxX25pYywgaSwgKHUzMiltaW5fcmF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jLTQwMi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9tYWluLmMtNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYzo0MDU6XFx0cmV0dXJuIGFxX25pY19zZXR1cF90Y19tcXByaW8oYXFfbmljLCBtcXByaW8tXFx1MDAzZXFvcHQubnVtX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00MDYtXFx0XFx0XFx0XFx0ICAgICAgbXFwcmlvLVxcdTAwM2Vxb3B0LnByaW9fdGNfbWFwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYz00NTk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBhcV9uZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NjktXFx0Lm5kb192bGFuX3J4X2tpbGxfdmlkID0gYXFfbmRvX3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbWFpbi5jOjQ3MDpcXHQubmRvX3NldHVwX3RjID0gYXFfbmRvX3NldHVwX3RjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX21haW4uYy00NzEtXFx0Lm5kb19icGYgPSBhcV94ZHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYz0xNjE3PWludCBhcV9uaWNfc2V0X21lZGlhX2RldGVjdChzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGludCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jOjE2NDI6aW50IGFxX25pY19zZXR1cF90Y19tcXByaW8oc3RydWN0IGFxX25pY19zICpzZWxmLCB1MzIgdGNzLCB1OCAqcHJpb190Y19tYXApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTY0My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5jOjE2OTI6aW50IGFxX25pY19zZXR1cF90Y19tYXhfcmF0ZShzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGNvbnN0IHVuc2lnbmVkIGludCB0YyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYy0xNjkzLVxcdFxcdFxcdCAgICAgY29uc3QgdTMyIG1heF9yYXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTcxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuYzoxNzEyOmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmMtMTcxMy1cXHRcXHRcXHQgICAgIGNvbnN0IHUzMiBtaW5fcmF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oPTIxND12b2lkIGFxX25pY19yZWxlYXNlX2ZpbHRlcihzdHJ1Y3QgYXFfbmljX3MgKnNlbGYsIGVudW0gYXFfcnhfZmlsdGVyX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuaC0yMTUtXFx0XFx0XFx0ICAgdTMyIGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hcXVhbnRpYS9hdGxhbnRpYy9hcV9uaWMuaDoyMTY6aW50IGFxX25pY19zZXR1cF90Y19tcXByaW8oc3RydWN0IGFxX25pY19zICpzZWxmLCB1MzIgdGNzLCB1OCAqcHJpb190Y19tYXApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oOjIxNzppbnQgYXFfbmljX3NldHVwX3RjX21heF9yYXRlKHN0cnVjdCBhcV9uaWNfcyAqc2VsZiwgY29uc3QgdW5zaWduZWQgaW50IHRjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX25pYy5oLTIxOC1cXHRcXHRcXHQgICAgIGNvbnN0IHUzMiBtYXhfcmF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmg6MjE5OmludCBhcV9uaWNfc2V0dXBfdGNfbWluX3JhdGUoc3RydWN0IGFxX25pY19zICpzZWxmLCBjb25zdCB1bnNpZ25lZCBpbnQgdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvYXFfbmljLmgtMjIwLVxcdFxcdFxcdCAgICAgY29uc3QgdTMyIG1pbl9yYXRlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTE5NTQ9dm9pZCBibngyeF9zZXRfbnVtX3F1ZXVlcyhzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMTk4OS0gKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjE5OTA6ICogYm54Mnhfc2V0dXBfdGMoKSB0YWtlcyBjYXJlIG9mIHRoZSBwcm9wZXIgVEMgbWFwcGluZ3Mgc28gdGhhdCBfX3NrYl90eF9oYXNoKClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0xOTkxLSAqIHdpbGwgcmV0dXJuIGEgcHJvcGVyIFR4IGluZGV4IGlmIFRDIGlzIGVuYWJsZWQgKG5ldGRldi1cXHUwMDNlbnVtX3RjIFxcdTAwM2UgMCkuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0yNjI2PWludCBibngyeF9uaWNfbG9hZChzdHJ1Y3QgYm54MnggKmJwLCBpbnQgbG9hZF9tb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjcxMi1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzoyNzEzOlxcdGJueDJ4X3NldHVwX3RjKGJwLVxcdTAwM2VkZXYsIGJwLVxcdTAwM2VtYXhfY29zKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yNzE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM9NDIxMT12b2lkIGJueDJ4X2dldF9jMnNfbWFwcGluZyhzdHJ1Y3QgYm54MnggKmJwLCB1OCAqYzJzX21hcCwgdTggKmMyc19kZWZhdWx0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI0Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzo0MjQ3OiAqIGJueDJ4X3NldHVwX3RjIC0gcm91dGluZSB0byBjb25maWd1cmUgbmV0X2RldmljZSBmb3IgbXVsdGkgdGNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjQ4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MjUxLSAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDI1MjogKiBjYWxsYmFjayBjb25uZWN0ZWQgdG8gdGhlIG5kb19zZXR1cF90YyBmdW5jdGlvbiBwb2ludGVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1My0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYzo0MjU0OmludCBibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBudW1fdGMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDI1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy00MzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjQzMTc6aW50IF9fYm54Mnhfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMxOC1cXHRcXHQgICAgIHZvaWQgKnR5cGVfZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jLTQzMjYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6NDMyNzpcXHRyZXR1cm4gYm54Mnhfc2V0dXBfdGMoZGV2LCBtcXByaW8tXFx1MDAzZW51bV90Yyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtNDMyOC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaD00ODc9bmV0ZGV2X3R4X3QgYm54Mnhfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6NDg5Oi8qIHNldHVwX3RjIGNhbGxiYWNrICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg6NDkwOmludCBibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCBudW1fdGMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjQ5MTppbnQgX19ibngyeF9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC00OTItXFx0XFx0ICAgICB2b2lkICp0eXBlX2RhdGEpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEwMjM2PXN0YXRpYyB2b2lkIGJueDJ4X3NwX3J0bmxfdGFzayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAzMDItXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTlgyWF9TUF9SVE5MX1NFVFVQX1RDLCBcXHUwMDI2YnAtXFx1MDAzZXNwX3J0bmxfc3RhdGUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMDMwMzpcXHRcXHRibngyeF9zZXR1cF90YyhicC1cXHUwMDNlZGV2LCBicC1cXHUwMDNlZGNieF9wb3J0X3BhcmFtcy5ldHMubnVtX29mX2Nvcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMzA0LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5YMlhfU1BfUlROTF9BRkVYX0ZfVVBEQVRFLCBcXHUwMDI2YnAtXFx1MDAzZXNwX3J0bmxfc3RhdGUpKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEzMDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYm54MnhfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzAyMS1cXHQubmRvX3ZsYW5fcnhfa2lsbF92aWRcXHQ9IGJueDJ4X3ZsYW5fcnhfa2lsbF92aWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMDIyOlxcdC5uZG9fc2V0dXBfdGNcXHRcXHQ9IF9fYm54Mnhfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMDIzLSNpZmRlZiBDT05GSUdfQk5YMlhfU1JJT1ZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE1NjI0PWludCBibnh0X3NldHVwX21xX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHRjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTU2Njk6c3RhdGljIGludCBibnh0X3NldHVwX3RjX2Jsb2NrX2NiKGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLCB2b2lkICp0eXBlX2RhdGEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2NzAtXFx0XFx0XFx0XFx0ICB2b2lkICpjYl9wcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU2ODY9TElTVF9IRUFEKGJueHRfYmxvY2tfY2JfbGlzdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU2ODctXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjI4LjgzNzg5OTM3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3OTI4NzQ0NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBUcmFmZmljIENsYXNzIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBjb25maWd1cmluZyBUcmFmZmljIENsYXNzZXMsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgbmV0d29yayBkcml2ZXJzLiBUaGUga2V5IGZ1bmN0aW9ucyB0byBiZSBhd2FyZSBvZiBoZXJlIGFyZSBgbmdiZV9zZXR1cF90Y2AgYW5kIGB0eGdiZV9zZXR1cF90Y2AuIEltbWVkaWF0ZWx5LCBteSBtZW50YWwgbWFwIHN0YXJ0cyB0byBvcmdhbml6ZS4gSSBrbm93IHRoZXNlIGFyZSBsaWtlbHkgc3BlY2lmaWMgdG8gY2VydGFpbiBJbnRlbCBOSUNzLCBwb3NzaWJseSBnZW5lcmF0aW9uLXNwZWNpZmljLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5nYmVfc2V0dXBfdGNgIGZpcnN0LiBUaGF04oCZcyBwcm9iYWJseSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gRXhhbWluaW5nIHRoYXQgZnVuY3Rpb24gd2lsbCBsaWtlbHkgcmV2ZWFsIHRoZSBjb3JlIGxvZ2ljIHVzZWQgdG8gaGFuZGxlIHRyYWZmaWMgY2xhc3MgY29uZmlndXJhdGlvbiBmb3Igd2hhdGV2ZXIgc3BlY2lmaWMgSW50ZWwgTklDIGZhbWlseSBgbmdiZWAgcmVmZXJzIHRvLCBhbmQgY291bGQgaW5mb3JtIGhvdyB0aGF0IHRyYW5zbGF0ZXMgb3IgZGlmZmVycyBmb3Igb3RoZXIgTklDcy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4ODIwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTA6MzYuNjMwNzc2NTk4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTUyODMxMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5nYmVfc2V0dXBfdGNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTg5PXN0YXRpYyBpbnQgbmdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtMTM0LVxcdHd4LVxcdTAwM2VtYnguc2l6ZSA9IFdYX1ZYTUFJTEJPWF9TSVpFO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzoxMzU6XFx0d3gtXFx1MDAzZXNldHVwX3RjID0gbmdiZV9zZXR1cF90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtMTM2LVxcdHNldF9iaXQoMCwgXFx1MDAyNnd4LVxcdTAwM2Vmd2RfYml0bWFzayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM9NTYxPXN0YXRpYyB2b2lkIG5nYmVfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTc2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1Nzc6ICogbmdiZV9zZXR1cF90YyAtIHJvdXRpbmUgdG8gY29uZmlndXJlIG5ldF9kZXZpY2UgZm9yIG11bHRpcGxlIHRyYWZmaWNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTc4LSAqIGNsYXNzZXMuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNTgyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo1ODM6aW50IG5nYmVfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggdGMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTU4NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmg9MTI2PXZvaWQgbmdiZV91cChzdHJ1Y3Qgd3ggKnd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmg6MTI3OmludCBuZ2JlX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHRjKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV90eXBlLmgtMTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDozOC43ODM2MTM3NzdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDU0MTc4MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUklPViBSZWluaXRpYWxpemF0aW9uIEZsb3cqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGlzIGB3eGAgZHJpdmVyJ3MgU1JJT1YgcmVpbml0aWFsaXphdGlvbi4gSXQgbG9va3MgbGlrZSBgd3gtXHUwMDNlc2V0dXBfdGNgIGlzIHBvaW50aW5nIHRvIGBuZ2JlX3NldHVwX3RjYC4gV2hlbiBgd3hfc3Jpb3ZfcmVpbml0YCBnZXRzIGNhbGxlZCwgaXQgY2FsbHMgYHd4LVx1MDAzZXNldHVwX3RjYCwgd2hpY2ggd2Uga25vdyBpcyBgbmdiZV9zZXR1cF90Y2AuIFRoZW4sIGBuZ2JlX3NldHVwX3RjYCBkaXZlcyBkZWVwZXIgYW5kIGNhbGxzIGB3eF9pbml0X2ludGVycnVwdF9zY2hlbWVgLiBGcm9tIHRoZXJlLCBpdCBtb3ZlcyBpbnRvIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIGFuZCB0aGF0J3Mgd2hlcmUgYHd4X3NldF92bWRxX3F1ZXVlc2AgZ2V0cyBpbnZva2VkLiBJJ20gZm9jdXNpbmcgb24gYHd4X3NldF92bWRxX3F1ZXVlc2Agbm93LiBJIHNlZSB0aGF0IGl0IGNoZWNrcyBpZiBgV1hfRkxBR19WTURRX0VOQUJMRURgIGlzIHNldCwgYW5kIHNpbmNlIGBfX3d4X2VuYWJsZV9zcmlvdmAgc2V0cyB0aGlzIGZsYWcsIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIHNob3VsZCBwcm9jZWVkIHdpdGhvdXQgaXNzdWUgaW4gdGhhdCBjYXNlLiBOb3csIEkgc2VlIHRoZSBwYXRjaCBpcyBjaGFuZ2luZyBzb21ldGhpbmcgaW4gdGhlIGBlbHNlYCBicmFuY2ggb2YgYGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVx1MDAzZWZsYWdzKSlgLiBUaW1lIHRvIGNoZWNrIGlmIHRoZSBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCBmbGFnIGlzIHNldC4gSXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggbWF5IGJlIGNoYW5naW5nIGFuIGVkZ2UgY2FzZSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYwOCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MDo0OS43MjkwMzM2NzRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MTk4NDE1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiV1hfRkxBR19NVUxUSV82NF9GVU5DXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfZXRodG9vbC5jPTQ5OT1zdGF0aWMgdW5zaWduZWQgaW50IHd4X21heF9jaGFubmVscyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA3LVxcdFxcdC8qIHN1cHBvcnQgdXAgdG8gbWF4IGFsbG93ZWQgcXVldWVzIHdpdGggUlNTICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmM6NTA4OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ldGh0b29sLmMtNTA5LVxcdFxcdFxcdG1heF9jb21iaW5lZCA9IDYzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTEwOT1zdGF0aWMgdm9pZCB3eF9pbnRyX2Rpc2FibGUoc3RydWN0IHd4ICp3eCwgdTY0IHFtYXNrKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTExNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTE3OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTE4LVxcdFxcdG1hc2sgPSAocW1hc2sgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTEyND12b2lkIHd4X2ludHJfZW5hYmxlKHN0cnVjdCB3eCAqd3gsIHU2NCBxbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjEzNzpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTEzOC1cXHRcXHRtYXNrID0gKHFtYXNrIFxcdTAwM2VcXHUwMDNlIDMyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz03NTY9c3RhdGljIGludCB3eF9zZXRfcmFyKHN0cnVjdCB3eCAqd3gsIHUzMiBpbmRleCwgdTggKmFkZHIsIHU2NCBwb29scyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy03NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjc3NDpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy03NzUtXFx0XFx0d3IzMih3eCwgV1hfUFNSX01BQ19TV0NfVk1fSCwgcG9vbHMgXFx1MDAzZVxcdTAwM2UgMzIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTg5Mj12b2lkIHd4X2luaXRfcnhfYWRkcnMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy05MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjkxMzpcXHRcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTkxNC1cXHRcXHRcXHQvKiBjbGVhciBWTURxIHBvb2wvcXVldWUgc2VsZWN0aW9uIGZvciBSQVIgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTE0ODQ9c3RhdGljIHZvaWQgd3hfY29uZmlndXJlX3ZpcnR1YWxpemF0aW9uKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUwMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MTUwMTpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0xNTAyLVxcdFxcdHZmX3NoaWZ0ID0gQklUKFZNRFFfUCgwKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MTUyOD1zdGF0aWMgdm9pZCB3eF9jb25maWd1cmVfcG9ydChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTE1MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjE1MzI6XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMTUzMy1cXHRcXHR2YWx1ZSA9ICh3eC1cXHUwMDNlbnVtX3ZmcyA9PSAwKSA/XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA1ND12b2lkIHd4X3N0b3JlX3JldGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMDY3LVxcdFxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjA2ODpcXHRcXHRcXHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMDY5LVxcdFxcdFxcdFxcdHdyMzIod3gsIFdYX1JEQl9WTVJTU1RCTChpIFxcdTAwM2VcXHUwMDNlIDIsIHd4LVxcdTAwM2VudW1fdmZzKSwgcmV0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM9MjA3Nz12b2lkIHd4X3N0b3JlX3Jzc2tleShzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIwODItXFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfU1JJT1ZfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoyMDgzOlxcdCAgICB0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjA4NC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mga2V5X3NpemU7IGkrKylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMDkzPXN0YXRpYyB2b2lkIHd4X3NldHVwX3JldGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTA2LVxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjEwNzpcXHRcXHRcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTA4LVxcdFxcdFxcdFxcdHJzc19pID0gcnNzX2kgXFx1MDAzYyAyID8gMiA6IHJzc19pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jPTIxMjQ9dm9pZCB3eF9jb25maWdfcnNzX2ZpZWxkKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmMtMjEyOC1cXHRpZiAodGVzdF9iaXQoV1hfRkxBR19TUklPVl9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jOjIxMjk6XFx0ICAgIHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTMwLVxcdFxcdHJzc19maWVsZCA9IHJkMzIod3gsIFdYX1JEQl9QTF9DRkcod3gtXFx1MDAzZW51bV92ZnMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTQ5PXZvaWQgd3hfZW5hYmxlX3JzcyhzdHJ1Y3Qgd3ggKnd4LCBib29sIGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTUxLVxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX1NSSU9WX0VOQUJMRUQsIHd4LVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2h3LmM6MjE1MjpcXHQgICAgdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxNTMtXFx0XFx0aWYgKGVuYWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYz0yMTcwPXN0YXRpYyB2b2lkIHd4X3NldHVwX3BzcnR5cGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYy0yMTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfaHcuYzoyMTgyOlxcdGlmICghdGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9ody5jLTIxODMtXFx0XFx0Zm9yX2VhY2hfc2V0X2JpdChwb29sLCBcXHUwMDI2d3gtXFx1MDAzZWZ3ZF9iaXRtYXNrLCA4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTc4NzpcXHRpZiAodGVzdF9iaXQoV1hfRkxBR19NVUxUSV82NF9GVU5DLCB3eC1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xNzg4LVxcdFxcdC8qIGRvdWJsZSBjaGVjayB3ZSBhcmUgbGltaXRlZCB0byBtYXhpbXVtIHBvb2xzICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTE4NDI9c3RhdGljIHZvaWQgd3hfc2V0X3Jzc19xdWV1ZXMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTg0Ny1cXHRmID0gXFx1MDAyNnd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODQ4OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODQ5LVxcdFxcdGYtXFx1MDAzZW1hc2sgPSBXWF9SU1NfNjRRX01BU0s7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jPTIwMDQ9c3RhdGljIGJvb2wgd3hfY2FjaGVfcmluZ192bWRxKHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDE1OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMTYtXFx0XFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yNTE4PXZvaWQgd3hfY29uZmlndXJlX3ZlY3RvcnMoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjUyNS1cXHRcXHQvKiBQb3B1bGF0ZSBNU0lYIHRvIEVJVFIgU2VsZWN0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyNTI2OlxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTI1MjctXFx0XFx0XFx0aWYgKHd4LVxcdTAwM2VudW1fdmZzIFxcdTAwM2U9IDMyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjExMTpcXHRpZiAoIXRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0xMTItXFx0XFx0dmFsdWUgPSBXWF9DRkdfUE9SVF9DVExfTlVNX1ZUXzg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9NTgxPXN0YXRpYyBpbnQgd3hfc2V0X3ZmX3ZsYW5fbXNnKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MTYgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjE5LVxcdFxcdFxcdGJpdHMgXFx1MDAyNj0gfkJJVChWTURRX1AoMCkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2MjA6XFx0XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNjIxLVxcdFxcdFxcdFxcdGJpdHMgfD0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02MjItXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6NjIzOlxcdFxcdFxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTYyNC1cXHRcXHRcXHRcXHRiaXRzID0gcmQzMih3eCwgV1hfUFNSX1ZMQU5fU1dDX1ZNX0gpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTg2NT12b2lkIHd4X2Rpc2FibGVfdmZfcnhfdHgoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NjgtXFx0d3IzMih3eCwgV1hfUkRNX1ZGUkVfQ0xSKDApLCBVMzJfTUFYKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6ODY5OlxcdGlmICh0ZXN0X2JpdChXWF9GTEFHX01VTFRJXzY0X0ZVTkMsIHd4LVxcdTAwM2VmbGFncykpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtODcwLVxcdFxcdHdyMzIod3gsIFdYX1RETV9WRlRFX0NMUigxKSwgVTMyX01BWCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMjU3PWVudW0gd3hfcGZfZmxhZ3Mge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjEyNTg6XFx0V1hfRkxBR19NVUxUSV82NF9GVU5DLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTEyNTktXFx0V1hfRkxBR19TV0ZXX1JJTkcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYz0zNTI9c3RhdGljIGludCB0eGdiZV9zd19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTItXFx0c2V0X2JpdChXWF9GTEFHX1JTQ19FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjM5MzpcXHRzZXRfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy0zOTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjUyLjM0ODg3ODYyNVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQ4Mjc5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipEZWx2aW5nIGludG8gRHJpdmVyIEluaXRpYWxpemF0aW9uIERpZmZlcmVuY2VzKipcblxuUmlnaHQsIHNvIEkndmUgc3R1bWJsZWQgdXBvbiBhIGNydWNpYWwgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgYHR4Z2JlYCBhbmQgYG5nYmVgIGRyaXZlcnMuIEkgc2VlIHRoYXQgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcgaXMgYmVpbmcgaW5pdGlhbGl6ZWQgaW4gYHR4Z2JlX3N3X2luaXRgLCBidXQgbm90IGluIGBuZ2JlX3N3X2luaXRgLiBUaGF0J3MgaW1tZWRpYXRlbHkgZmxhZ2dlZCBhcyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgZGlmZmVyZW50IGJlaGF2aW9yIGJldHdlZW4gdGhlIHR3bywgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgaW1tZWRpYXRlIGludmVzdGlnYXRpb24uIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgYG5nYmVfc3dfaW5pdGAgZnVuY3Rpb24gc3BlY2lmaWNhbGx5LCBhbmQgdW5kZXJzdGFuZCBwcmVjaXNlbHkgKndoeSogdGhhdCBmbGFnIGlzbid0IGJlaW5nIHNldCB0aGVyZS4gSXQgY291bGQgYmUgaW50ZW50aW9uYWwsIG9yIGl0IGNvdWxkIGJlIGEgc3VidGxlIG9taXNzaW9uIHRoYXQncyBjYXVzaW5nIGEgcHJvYmxlbSBkb3duIHRoZSBsaW5lLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mICp0aGF0KiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGFuZCB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIGl0cyBjaG9pY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA3MiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjU1LjY5NzE2MjA1MloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2NjA1NjY4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZ2JlX3N3X2luaXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTUzPXN0YXRpYyB2b2lkIG5nYmVfaW5pdF90eXBlX2NvZGUoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYy04NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODY6ICogbmdiZV9zd19pbml0IC0gSW5pdGlhbGl6ZSBnZW5lcmFsIHNvZnR3YXJlIHN0cnVjdHVyZXNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtODctICogQHd4OiBib2FyZCBwcml2YXRlIHN0cnVjdHVyZSB0byBpbml0aWFsaXplXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jLTg4LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmM6ODk6c3RhdGljIGludCBuZ2JlX3N3X2luaXQoc3RydWN0IHd4ICp3eClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWFpbi5jPTYzOD1zdGF0aWMgaW50IG5nYmVfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNzI1LVxcdC8qIHNldHVwIHRoZSBwcml2YXRlIHN0cnVjdHVyZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21haW4uYzo3MjY6XFx0ZXJyID0gbmdiZV9zd19pbml0KHd4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tYWluLmMtNzI3LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUwOjU3Ljk2MzIyOTg3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTYxMjEzMjA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgUGF0Y2ggaW4gYG5nYmVgIGFuZCBpdHMgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIG1vZGlmeWluZyB0aGUgYGVsc2VgIGJyYW5jaCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AsIGFuZCBJIGtub3cgdGhhdCBgbmdiZWAgZG9lc24ndCBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AuIFRoYXQgbWVhbnMgdGhlIGB0ZXN0X2JpdGAgY2hlY2sgZm9yIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIHdpbGwgYWx3YXlzIGJlIGZhbHNlIGluIGBuZ2JlYCwgbWFraW5nIHRoYXQgYGVsc2VgIGJyYW5jaCByZWFjaGFibGUsIGFzc3VtaW5nIFZNRFEgaXMgZW5hYmxlZC4gUmlnaHQsIFZNRFEgaXMgZW5hYmxlZCB3aGVuIFNSSU9WIGlzIGVuYWJsZWQuIEFuZCBob3cgZG8gd2UgZW5hYmxlIFNSSU9WPyBUaHJvdWdoIGBzcmlvdl9udW12ZnNgIHN5c2ZzIGVudHJpZXMuXG5cbk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogY2FuIHN5emthbGxlciBmdXp6IGBzcmlvdl9udW12ZnNgPyBZZXMsIGl0IGRvZXMgaGF2ZSBzeXNmcyBmdXp6aW5nIGNhcGFiaWxpdGllcy4gT2theSwgdGhhdCdzIGNydWNpYWwuIEkgYWxzbyBrbm93IHRoYXQgYHd4X3NldF92bWRxX3F1ZXVlc2AgaXMgaW52b2tlZCBkdXJpbmcgdGhlIHByb2JlIHByb2Nlc3MsIGJ1dCBvbmx5IGlmIGBXWF9GTEFHX1ZNRFFfRU5BQkxFRGAgaXMgc2V0LCBhbmQgdGhhdCBvbmx5IGhhcHBlbnMgZHVyaW5nIFNSSU9WIGVuYWJsZW1lbnQuXG5cbkxldCdzIHRyYWNlIHRoZSBjYWxsIHBhdGg6IGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGB3eF9zZXRfbnVtX3F1ZXVlc2AsIHdoaWNoIGluIHR1cm4gaXMgY2FsbGVkIGZyb20gYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAuIFdoZW4gYHNyaW92X251bXZmc2AgaXMgd3JpdHRlbiwgYHd4X3BjaV9zcmlvdl9lbmFibGVgIGlzIGNhbGxlZCwgd2hpY2ggdGhlbiBpbnZva2VzIGBfX3d4X2VuYWJsZV9zcmlvdmAuIFRoaXMgZnVuY3Rpb24gc2V0cyBgV1hfRkxBR19WTURRX0VOQUJMRURgLiBUaGVuLCBgd3hfc3Jpb3ZfcmVpbml0YCBpcyBjYWxsZWQsIHdoaWNoIGNhbGxzIGB3eC1cdTAwM2VzZXR1cF90Y2AsIGxlYWRpbmcgdG8gYG5nYmVfc2V0dXBfdGNgLiBUaGlzIHVsdGltYXRlbHkgY2FsbHMgYHd4X2luaXRfaW50ZXJydXB0X3NjaGVtZWAgLVx1MDAzZSBgd3hfc2V0X251bV9xdWV1ZXNgIC1cdTAwM2UgYHd4X3NldF92bWRxX3F1ZXVlc2AuIFNvLCB5ZXMsIHRoZSBtb2RpZmllZCBjb2RlIGluIHRoYXQgYGVsc2VgIGJyYW5jaCAqaXMqIHJlYWNoYWJsZSBpbiBgbmdiZWAuXG5cblNvLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2UgaXMgdGhhdCBgdm1kcV9tYCBpcyBiZWluZyBleHBsaWNpdGx5IHNldCB0byBgV1hfVk1EUV8xUV9NQVNLYCBpbnN0ZWFkIG9mIHN0YXlpbmcgYXQgemVyby4gVGhpcyBtYXNrIGlzIHRoZW4gc2F2ZWQgdG8gYHd4LVx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFza2AuIFRoZSBtYXNrIGl0c2VsZiBpcyB0aGUgY3J1Y2lhbCBwaWVjZSBoZXJlLiBOb3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBgd3gtXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrYCBpcyBhY3R1YWxseSBiZWluZyB1c2VkLiBJdCdzIGxpa2VseSBpbnZvbHZlZCBpbiByaW5nIGNvbmZpZ3VyYXRpb24sIHNvIEkgc2hvdWxkIGxvb2sgYXQgYHd4X2NvbmZpZ3VyZV9yeF9yaW5nYCBvciBzaW1pbGFyIGZ1bmN0aW9ucyB0byBzZWUgaG93IHRoZSBtYXNrIGlzIGJlaW5nIHVzZWQgZHVyaW5nIHRoZSBwYWNrZXQgcHJvY2Vzc2luZyBvciBxdWV1ZSBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ3MjUsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTE6MTMuNTc1MzY0Mzg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDg3ODgzMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlJJTkdfRl9WTURRXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg9MTQ4PWVudW0gaXhnYmVfdHhfZmxhZ3Mge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzUtI2RlZmluZSBJWEdCRV9NQVhfUEZfTUFDVkxBTlMgICAgICAgICAgIDE1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaDoxNzY6I2RlZmluZSBWTURRX1AocCkgICAoKHApICsgYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC0xNzctI2RlZmluZSBJWEdCRV84MjU5OV9WRl9ERVZJQ0VfSUQgICAgICAgIDB4MTBFRFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaD00MDk9ZW51bSBpeGdiZV9yaW5nX2ZfZW51bSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTAtXFx0UklOR19GX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlLmg6NDExOlxcdFJJTkdfRl9WTURRLCAgLyogU1ItSU9WIHVzZXMgdGhlIHNhbWUgcmluZyBmZWF0dXJlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmUuaC00MTItXFx0UklOR19GX1JTUyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjEtI2VuZGlmIC8qIElYR0JFX0ZDT0UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzoyMjpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0xODQ9c3RhdGljIGJvb2wgaXhnYmVfY2FjaGVfcmluZ19zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTE4OC0jZW5kaWYgLyogSVhHQkVfRkNPRSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjE4OTpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMTkwLVxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz0zMjY9c3RhdGljIGJvb2wgaXhnYmVfc2V0X2RjYl9zcmlvdl9xdWV1ZXMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zMjgtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzI5OlxcdHUxNiB2bWRxX2kgPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTMzMC1cXHR1MTYgdm1kcV9tID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0Ny1cXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozNDg6XFx0dm1kcV9pICs9IGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM2NS1cXHQvKiByZW1vdmUgdGhlIHN0YXJ0aW5nIG9mZnNldCBmcm9tIHRoZSBwb29sIGNvdW50ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzY2OlxcdHZtZHFfaSAtPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzY4LVxcdC8qIHNhdmUgZmVhdHVyZXMgZm9yIGxhdGVyIHVzZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2OTpcXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MzcwOlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9IHZtZHFfbTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zNzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYz01MDA9c3RhdGljIGJvb2wgaXhnYmVfc2V0X3NyaW92X3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MDEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUwMjpcXHR1MTYgdm1kcV9pID0gYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MDMtXFx0dTE2IHZtZHFfbSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTctXFx0LyogQWRkIHN0YXJ0aW5nIG9mZnNldCB0byB0b3RhbCBwb29sIGNvdW50ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTE4OlxcdHZtZHFfaSArPSBhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01MTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy01NDEtXFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0MjpcXHR2bWRxX2kgLT0gYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTU0NC1cXHQvKiBzYXZlIGZlYXR1cmVzIGZvciBsYXRlciB1c2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzo1NDU6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5pbmRpY2VzID0gdm1kcV9pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjU0NjpcXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTQ3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTM5OTQ9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfbXRxYyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00MDE0LVxcdFxcdFxcdG10cWMgfD0gSVhHQkVfTVRRQ19SVF9FTkEgfCBJWEdCRV9NVFFDXzRUQ180VFE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjQwMTU6XFx0XFx0ZWxzZSBpZiAoYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrID09XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTQwMTYtXFx0XFx0XFx0IElYR0JFXzgyNTk5X1ZNRFFfNFFfTUFTSylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz00MzY3PXN0YXRpYyB2b2lkIGl4Z2JlX3NldHVwX21ycWMoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDM4OC1cXHRcXHRcXHRcXHRtcnFjID0gSVhHQkVfTVJRQ19WTURRUlQ0VENFTjtcXHQvKiA0IFRDcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo0Mzg5OlxcdFxcdFxcdGVsc2UgaWYgKGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzayA9PVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00MzkwLVxcdFxcdFxcdFxcdCBJWEdCRV84MjU5OV9WTURRXzRRX01BU0spXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NDYyND1zdGF0aWMgdm9pZCBpeGdiZV9jb25maWd1cmVfdmlydHVhbGl6YXRpb24oc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNDY2OS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NDY3MDpcXHRzd2l0Y2ggKGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubWFzaykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy00NjcxLVxcdGNhc2UgSVhHQkVfODI1OTlfVk1EUV84UV9NQVNLOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTYxMjg9c3RhdGljIHZvaWQgaXhnYmVfc2V0dXBfZ3BpZShzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02MTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2MTY4OlxcdFxcdHN3aXRjaCAoYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5tYXNrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTYxNjktXFx0XFx0Y2FzZSBJWEdCRV84MjU5OV9WTURRXzhRX01BU0s6XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9Njg3NT1zdGF0aWMgaW50IGl4Z2JlX3N3X2luaXQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNjkwNS1cXHRhZGFwdGVyLVxcdTAwM2VmZGlyX3BiYWxsb2MgPSBJWEdCRV9GRElSX1BCQUxMT0NfNjRLO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo2OTA2OlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy02OTA3LSNpZmRlZiBDT05GSUdfSVhHQkVfRENBXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9ODIzNj1zdGF0aWMgYm9vbCBpeGdiZV92Zl90eF9wZW5kaW5nKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyMzgtXFx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6ODIzOTpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTgyNDAtXFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwMDg5PXN0YXRpYyBpbnQgaGFuZGxlX3JlZGlyZWN0X2FjdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgaW50IGlmaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAwOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMDA5MjpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwMDkzLVxcdHVuc2lnbmVkIGludCBudW1fdmZzID0gYWRhcHRlci1cXHUwMDNlbnVtX3ZmcywgdmY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTA1MTk9c3RhdGljIHZvaWQgaXhnYmVfcmVzZXRfbDJmd19vZmZsb2FkKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI0LVxcdC8qIGdvIGJhY2sgdG8gZnVsbCBSU1MgaWYgd2UncmUgbm90IHJ1bm5pbmcgU1ItSU9WICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjEwNTI1OlxcdGlmICghYWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI2LVxcdFxcdGFkYXB0ZXItXFx1MDAzZWZsYWdzIFxcdTAwMjY9IH4oSVhHQkVfRkxBR19WTURRX0VOQUJMRUQgfFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTI5LVxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdCA9IHJzcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA1MzA6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTEwNTMxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwNzQwPXN0YXRpYyB2b2lkICppeGdiZV9md2RfYWRkKHN0cnVjdCBuZXRfZGV2aWNlICpwZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDgwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTA4MDY6XFx0XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCArPSByZXNlcnZlZF9wb29scztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTA4MDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTUxPXN0YXRpYyBpbnQgX19peGdiZV9lbmFibGVfc3Jpb3Yoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTczLVxcdGl4Z2JlX2FsbG9jX3ZmX21hY3ZsYW5zKGFkYXB0ZXIsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6NzQ6XFx0YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSBudW1fdmZzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTIwNT1pbnQgaXhnYmVfZGlzYWJsZV9zcmlvdihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMjY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MjY2OlxcdGFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTI2Ny1cXHRhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1JTU10ubGltaXQgPSByc3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTY5OT1zdGF0aWMgaW5saW5lIHZvaWQgaXhnYmVfdmZfcmVzZXRfZXZlbnQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAxLVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo3MDI6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtNzAzLVxcdHN0cnVjdCB2Zl9kYXRhX3N0b3JhZ2UgKnZmaW5mbyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2V2ZmluZm9bdmZdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz04MDk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3dyaXRlX3FkZShzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTItXFx0c3RydWN0IGl4Z2JlX2h3ICpodyA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VodztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxMzpcXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTQtXFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz04ODE9c3RhdGljIGludCBpeGdiZV92Zl9yZXNldF9tc2coc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTg4Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODM6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODg0LVxcdHN0cnVjdCBpeGdiZV9odyAqaHcgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlaHc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTEwNjI9c3RhdGljIGludCBpeGdiZV9nZXRfdmZfcXVldWVzKHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xMDY1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBhZGFwdGVyLVxcdTAwM2VuZXRkZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDY2OlxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwNjctXFx0dW5zaWduZWQgaW50IGRlZmF1bHRfdGMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xNjk4PXN0YXRpYyB2b2lkIGl4Z2JlX3NldF92Zl9yYXRlX2xpbWl0KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy0xNjk5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjE3MDA6XFx0c3RydWN0IGl4Z2JlX3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTcwMS1cXHRzdHJ1Y3QgaXhnYmVfaHcgKmh3ID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZWh3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0xNzc0PXN0YXRpYyBib29sIHd4X3NldF92bWRxX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc3NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxNzc2OlxcdHUxNiB2bWRxX2kgPSB3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3NzctXFx0dTE2IHJzc19pID0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfUlNTXS5saW1pdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTc4NC1cXHQvKiBBZGQgc3RhcnRpbmcgb2Zmc2V0IHRvIHRvdGFsIHBvb2wgY291bnQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jOjE3ODU6XFx0dm1kcV9pICs9IHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE3ODYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTMtXFx0LyogcmVtb3ZlIHRoZSBzdGFydGluZyBvZmZzZXQgZnJvbSB0aGUgcG9vbCBjb3VudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MTgxNDpcXHR2bWRxX2kgLT0gd3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ub2Zmc2V0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMTgxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTE4MTYtXFx0Lyogc2F2ZSBmZWF0dXJlcyBmb3IgbGF0ZXIgdXNlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE3OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmluZGljZXMgPSB2bWRxX2k7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoxODE4OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2sgPSB2bWRxX207XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0xODE5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYz0yMDA0PXN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAwNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDA2OlxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDA3LVxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTQ5PXN0YXRpYyB2b2lkIHd4X3NyaW92X2NsZWFyX2RhdGEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02My1cXHR3cjMybSh3eCwgV1hfUFNSX1ZNX0NUTCwgV1hfUFNSX1ZNX0NUTF9QT09MX01BU0ssIDApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2NDpcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5vZmZzZXQgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy02OC1cXHQvKiBEaXNhYmxlIFZNRHEgZmxhZyBzbyBkZXZpY2Ugd2lsbCBiZSBzZXQgaW4gTk0gbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo2OTpcXHRpZiAod3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV0ubGltaXQgPT0gMSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNzAtXFx0XFx0Y2xlYXJfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTczPXN0YXRpYyBpbnQgX193eF9lbmFibGVfc3Jpb3Yoc3RydWN0IHd4ICp3eCwgdTggbnVtX3ZmcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04NS1cXHRzZXRfYml0KFdYX0ZMQUdfVk1EUV9FTkFCTEVELCB3eC1cXHUwMDNlZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NjpcXHRpZiAoIXd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLmxpbWl0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4NzpcXHRcXHR3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXS5saW1pdCA9IDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjg4OlxcdHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldCA9IG51bV92ZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTg5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTI3OD1zdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0yNzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzoyODA6XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMjgxLVxcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMzk9c3RhdGljIGludCB3eF9nZXRfdmZfcXVldWVzKHN0cnVjdCB3eCAqd3gsIHUzMiAqbXNnYnVmLCB1MzIgdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0MTpcXHRzdHJ1Y3Qgd3hfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNnd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDItXFx0dW5zaWduZWQgaW50IGRlZmF1bHRfdGMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmg9MzkzPWVudW0gV1hfTVNDQV9DTURfdmFsdWUge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtNTU3LSNkZWZpbmUgV1hfTUFYX0pVTUJPX0ZSQU1FX1NJWkUgICAgICA5NDMyIC8qIG1heCBwYXlsb2FkIDk0MTQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaDo1NTg6I2RlZmluZSBWTURRX1AocCkgICAgICAgKChwKSArIHd4LVxcdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm9mZnNldClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaC01NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3R5cGUuaD0xMTM5PWVudW0gd3hfcmluZ19mX2VudW0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oLTExNDAtXFx0UklOR19GX05PTkUgPSAwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfdHlwZS5oOjExNDE6XFx0UklOR19GX1ZNRFEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF90eXBlLmgtMTE0Mi1cXHRSSU5HX0ZfUlNTLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MToxNi4wNjMyNTIzNThaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyMjQ1MTg2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OlxuXG4qKkRpZ2dpbmcgaW50byBRdWV1ZSBNYW5hZ2VtZW50IGluIFd4V2lkZ2V0cyoqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoaXMgcmVmZXJlbmNlIHRvIGB3eF93cml0ZV9xZGVgIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIEltbWVkaWF0ZWx5LCBteSBicmFpbiBzdGFydHMgcnVubmluZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2xlYXJseSBpbnZvbHZlZCBpbiBxdWV1ZSBtYW5hZ2VtZW50LCBsaWtlbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIFd4V2lkZ2V0cy4gVGhlIGZhY3QgdGhhdCBgd3hfd3JpdGVfcWRlYCBpcyBtZW50aW9uZWQgZmlyc3Qgc3VnZ2VzdHMgdGhhdCBpdCdzIHByb2JhYmx5IHRoZSBtb3JlIGltcG9ydGFudCBvZiB0aGUgdHdvIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dCAtIG9mdGVuLCB3cml0ZXMgYXJlIG1vcmUgY3JpdGljYWwgdGhhbiByZWFkcyB3aGVuIGNvbnNpZGVyaW5nIHJlc291cmNlIGNvbnRlbnRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy5cblxuTXkgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIGB3eF93cml0ZV9xZGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgcXVldWUgZGF0YSBzdHJ1Y3R1cmVzLCB3aGF0IHByb3RlY3Rpb25zIGl0IGhhcyBmb3IgY29uY3VycmVudCBhY2Nlc3MgKG11dGV4ZXMsIHNlbWFwaG9yZXMsIGV0Yy4pLCBhbmQgd2hhdCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgc2NlbmFyaW9zIGFyZS4gSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgcXVlc3Rpb25zOiBJcyB0aGlzIGEgYmxvY2tpbmcgd3JpdGU/IFdoYXQgaGFwcGVucyBvbiBxdWV1ZSBvdmVyZmxvdz8gRG9lcyBpdCBoYXZlIGFueSBpbXBsaWNhdGlvbnMgZm9yIHRocmVhZCBzeW5jaHJvbml6YXRpb24/XG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgd3JpdGVzIGFyZSBwZXJtaXR0ZWQsIGlmIGFueS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgaG93IGRhdGEgaXMgbWFyc2hhbGxlZCBhbmQgZW5zdXJlIHRoYXQgdGhlIGFwcHJvcHJpYXRlIGxvY2tzIGFyZSBpbiBwbGFjZSB3aGVuIHRoZSBxdWV1ZSBpcyBwb3B1bGF0ZWQuIEknbSBnb2luZyB0byBsb29rIGF0IHRoYXQgZnVuY3Rpb24ncyBpbXBsZW1lbnRhdGlvbiB2ZXJ5IGNhcmVmdWxseSB0byBiZSBzdXJlIGl0J3MgdGhyZWFkLXNhZmUuIEknbSBhbHNvIGdvaW5nIHRvIGNoZWNrIGFsbCB0aGUgb3RoZXIgcGxhY2VzIHdoZXJlIHRoZSBxdWV1ZSBpcyB0b3VjaGVkLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgLCB0b28uIEtub3dpbmcgdGhlIHdyaXRlIGJlaGF2aW9yIHdpbGwgaGVscCBtZSBhbnRpY2lwYXRlIHJlYWQtc2lkZSBpc3N1ZXMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3NjksIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MToyOC4yODc3NzM0MTdaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDk0NDg3MzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwid3hfd3JpdGVfcWRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0yNjU9c3RhdGljIHZvaWQgd3hfc2V0X3ZsYW5fYW50aV9zcG9vZmluZyhzdHJ1Y3Qgd3ggKnd4LCBib29sIGVuYWJsZSwgaW50IHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM6Mjc4OnN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI3OS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9MzkyPXN0YXRpYyB2b2lkIHd4X3ZmX3Jlc2V0X21zZyhzdHJ1Y3Qgd3ggKnd4LCB1MTYgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDExLVxcdC8qIGZvcmNlIGRyb3AgZW5hYmxlIGZvciBhbGwgVkYgUnggcXVldWVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjQxMjpcXHR3eF93cml0ZV9xZGUod3gsIHZmLCAxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtNDEzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MTozMC40OTcyMjcwNjNaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjMyNjQ3NTQxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFZpcnR1YWwgRnVuY3Rpb24gUXVldWUgUmV0cmlldmFsKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgcmV0cmlldmluZyBhbmQgbWFuYWdpbmcgdGhlIHZpcnR1YWwgZnVuY3Rpb24gcXVldWVzIHJlc2lkZXMsIGFuZCBpcyB0aGUgbGlrZWx5IGVwaWNlbnRlciBvZiBhbnkgcGVyZm9ybWFuY2Ugb3IgZnVuY3Rpb25hbCBpc3N1ZXMuIEknbSBnb2luZyB0byBzdGFydCBieSBjb25maXJtaW5nIHRoZSBwYXJhbWV0ZXJzIGl0IGFjY2VwdHMgYW5kIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgbWFuaXB1bGF0ZXMuIE15IGZpcnN0IHByaW9yaXR5IHdpbGwgYmUgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBmdW5jdGlvbiBoYW5kbGVzIHJlc291cmNlIGNvbnRlbnRpb24gZ3JhY2VmdWxseSBhbmQgdGhhdCB0aGUgcmV0dXJuZWQgc3RydWN0dXJlcyBhcmUgdGhyZWFkLXNhZmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgd2UncmUgc2VlaW5nIGFueSB1bmV4cGVjdGVkIHJldHVybiBjb2RlcyBvciByYWNlIGNvbmRpdGlvbnMgYXJvdW5kIHF1ZXVlIGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uLiBJJ2xsIG5lZWQgdG8gY29ycmVsYXRlIGFueSBwZXJmb3JtYW5jZSBtZXRyaWNzLCBsaWtlIGxhdGVuY3kgb3IgdGhyb3VnaHB1dCwgd2l0aCB0aGUgYWN0aW9ucyB0YWtlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSSdsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcywgbGlrZSBleGNlc3NpdmUgbG9ja2luZyBvciBpbmVmZmljaWVudCBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBGaW5hbGx5LCBJJ2xsIHJldmlldyBhbnkgcmVsYXRlZCBlcnJvciBoYW5kbGluZyB0byBlbnN1cmUgcm9idXN0bmVzcyBhbmQgdGhhdCB3ZSdyZSBwcm9wZXJseSBsb2dnaW5nIGZhaWx1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzUwOSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUxOjUzLjc2MTk4NDExM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc5MTE3ODU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3eF9nZXRfdmZfcXVldWVzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz0zMTI9c3RhdGljIHZvaWQgd3hfc2V0X3ZmX3J4X3R4KHN0cnVjdCB3eCAqd3gsIGludCB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjMzOTpzdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMzQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYz03NTU9c3RhdGljIHZvaWQgd3hfcmN2X21zZ19mcm9tX3ZmKHN0cnVjdCB3eCAqd3gsIHUxNiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy04MDYtXFx0Y2FzZSBXWF9WRl9HRVRfUVVFVUVTOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYzo4MDc6XFx0XFx0cmV0dmFsID0gd3hfZ2V0X3ZmX3F1ZXVlcyh3eCwgbXNnYnVmLCB2Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTgwOC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTE6NTcuNTUzMTY3MDE0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzg5MjU0Nzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBWTURRIE1hc2sgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgd3hfZ2V0X3ZmX3F1ZXVlc2AgaXMgdHJpZ2dlcmVkIHdoZW4gYSBWRiBzZW5kcyBhIG1lc3NhZ2UgYmFjayB0byB0aGUgUEYuIFRoZW4sIGB3eF93cml0ZV9xZGVgIGNvbWVzIGludG8gcGxheSBkdXJpbmcgYSBWRiByZXNldC4gQm90aCBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzaW5nIGB3eC1cdTAwM2VyaW5nX2ZlYXR1cmVbUklOR19GX1ZNRFFdLm1hc2tgLiBUaGUgcGF0Y2ggaXMgY2hhbmdpbmcgdGhpcyBtYXNrIGZyb20gemVybyB0byBgV1hfVk1EUV8xUV9NQVNLYCAod2hpY2ggaXMgMHg3RikgZm9yIHRoZSBgbmdiZWAgZHJpdmVyIHdoZW4gVk1EUSBpcyBlbmFibGVkLiBUaGF0IGFsb25lIHRlbGxzIG1lIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBpbXBhY3RpbmcgVkYgcXVldWUgY29uZmlndXJhdGlvbiBhbmQsIGNvbnNlcXVlbnRseSwgVkYgY29tbXVuaWNhdGlvbi5cblxuTm93LCBob3cgZG9lcyB0aGlzIGJlY29tZSByZWxldmFudCBmb3IgZnV6emluZz8gV2VsbCwgd2l0aCBTUklPViBlbmFibGVkLCBmdXp6aW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBWRiAtLSBoYXZpbmcgaXQgc2VuZCBtZXNzYWdlcyBvciBwZXJmb3JtIGEgcmVzZXQg4oCTIHNob3VsZCBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGl0IHdvdWxkIGJlIHVuZGVyIHRoZSBgTkdCRWAsIGBOR0JFVkZgLCBgVFhHQkVgLCBhbmQgYFRYR0JFVkZgIGNvbmZpZ3VyYXRpb25zLiBCdXQgd2FpdCBhIG1pbnV0ZSwgdGhlIGBUWEdCRWAgZHJpdmVyIHNldHMgdGhlIGBXWF9GTEFHX01VTFRJXzY0X0ZVTkNgIGZsYWcuIFRoaXMgbWVhbnMgaXQgdGFrZXMgdGhlIGBpZmAgYnJhbmNoIGFuZCBub3QgdGhlIGBlbHNlYCBicmFuY2ggb2YgdGhlIGNvZGUuIFRoZSBwYXRjaCwgaG93ZXZlciwgaXMgbW9kaWZ5aW5nIHRoZSBgZWxzZWAgYnJhbmNoLiBTbywgYFRYR0JFYCBhbmQgYFRYR0JFVkZgIGFyZSBub3QgZGlyZWN0bHkgaW52b2x2ZWQgaGVyZS4gVGh1cywgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBOR0JFYCBhbmQgYE5HQkVWRmAuXG5cbkxldCBtZSBjb25maXJtIHRoYXQ6IGBOR0JFYCBhbmQgYE5HQkVWRmAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGlzIGNoYW5nZS4gTXkgYXR0ZW50aW9uIGlzIG5vdyBvbiB0aGVzZSBmdW5jdGlvbnM6IGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfZ2V0X3ZmX3F1ZXVlc2AsIGFuZCBgd3hfd3JpdGVfcWRlYC4gQWgsIGNvcnJlY3Rpb24sIHRoZSBmdW5jdGlvbiBiZWluZyBtb2RpZmllZCBpcyBgd3hfc2V0X3ZtZHFfcXVldWVzYC4gU28sIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIGB3eF9nZXRfdmZfcXVldWVzYCBhbmQgYHd4X3dyaXRlX3FkZWAgdG8gc29saWRpZnkgdGhlbSBhcyByZWxldmFudCBmb2N1cyBzeW1ib2xzIGZvciBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwNSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MjoxMC45NDI0MjM2NDJaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODkyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3OCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3ODpcXHRzdGF0aWMgdm9pZCB3eF93cml0ZV9xZGUoc3RydWN0IHd4ICp3eCwgdTMyIHZmLCB1MzIgcWRlKVxcbiAyNzk6XFx0e1xcbiAyODA6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4gMjgxOlxcdFxcdHUzMiBxX3Blcl9wb29sID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4gMjgyOlxcdFxcdHUzMiByZWcgPSAwLCBuID0gdmYgKiBxX3Blcl9wb29sIC8gMzI7XFxuIDI4MzpcXHRcXHR1MzIgaSA9IHZmICogcV9wZXJfcG9vbDtcXG4gMjg0OlxcdFxcbiAyODU6XFx0XFx0cmVnID0gcmQzMih3eCwgV1hfUkRNX1BGX1FERShuKSk7XFxuIDI4NjpcXHRcXHRmb3IgKGkgPSAodmYgKiBxX3Blcl9wb29sIC0gbiAqIDMyKTtcXG4gMjg3OlxcdFxcdCAgICAgaSBcXHUwMDNjICgodmYgKyAxKSAqIHFfcGVyX3Bvb2wgLSBuICogMzIpO1xcbiAyODg6XFx0XFx0ICAgICBpKyspIHtcXG4gMjg5OlxcdFxcdFxcdGlmIChxZGUgPT0gMSlcXG4gMjkwOlxcdFxcdFxcdFxcdHJlZyB8PSBxZGUgXFx1MDAzY1xcdTAwM2MgaTtcXG4gMjkxOlxcdFxcdFxcdGVsc2VcXG4gMjkyOlxcdFxcdFxcdFxcdHJlZyBcXHUwMDI2PSBxZGUgXFx1MDAzY1xcdTAwM2MgaTtcXG4gMjkzOlxcdFxcdH1cXG4gMjk0OlxcdFxcbiAyOTU6XFx0XFx0d3IzMih3eCwgV1hfUkRNX1BGX1FERShuKSwgcmVnKTtcXG4gMjk2OlxcdH1cXG4gMjk3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1MjoxMC45NDI1MTQyODJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyNzA4MDEyMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIFF1ZXVlIEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gdHJhY2luZyB3aGF0IGhhcHBlbnMgd2hlbiBgdm1kcS1cdTAwM2VtYXNrYCBpcyB6ZXJvLiBUaGUgY29kZSB1c2VzIGBfX0FMSUdOX01BU0soMSwgfnZtZHEtXHUwMDNlbWFzaylgLiAgSWYgYHZtZHEtXHUwMDNlbWFza2AgaXMgemVybywgdGhlbiBpdHMgYml0d2lzZSBpbnZlcnNlLCBgfnZtZHEtXHUwMDNlbWFza2AsIGJlY29tZXMgYDB4RkZGRkZGRkZgLiBBcHBseWluZyBgX19BTElHTl9NQVNLKDEsIDB4RkZGRkZGRkYpYCB5aWVsZHMgYCgxICsgMHhGRkZGRkZGRikgXHUwMDI2IH4weEZGRkZGRkZGYCwgd2hpY2ggc2ltcGxpZmllcyB0byBgMCBcdTAwMjYgMGAsIHVsdGltYXRlbHkgcmVzdWx0aW5nIGluIHplcm8uIFRoYXQncyBjb25maXJtZWQuXG5cblJpZ2h0LCBgX19BTElHTl9NQVNLKHgsIG1hc2spYCBleHBhbmRzIHRvIGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYC4gIFNvLCBpbiB0aGUgb3JpZ2luYWwgY2FzZSB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyAwLCAgdGhlIGNhbGN1bGF0aW9uIGV2YWx1YXRlcyBhcyBkZXNjcmliZWQuIFRoaXMgbWVhbnMgdGhhdCBgcV9wZXJfcG9vbGAgZW5kcyB1cCBhcyB6ZXJvLiBDb25zZXF1ZW50bHksICBgbmAgYmVjb21lcyBgdmYgKiAwIC8gMzJgIHdoaWNoIGlzIGFsc28gemVyby4gQW5kIHNpbmNlIHRoZSBgZm9yYCBsb29wIGNvbmRpdGlvbiBpcyBgaSBcdTAwM2MgMGAsIHRoZSBsb29wIG5ldmVyIGV4ZWN1dGVzLiAgRWZmZWN0aXZlbHksIGB3eF93cml0ZV9xZGVgIGRvZXMgbm90aGluZyB3aGVuIGB2bWRxLVx1MDAzZW1hc2tgIGlzIHplcm8uIFRoYXQgbWFrZXMgc2Vuc2UuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIHBhdGNoZWQgc2NlbmFyaW8uICBUaGUgcGF0Y2ggc2V0cyBgdm1kcS1cdTAwM2VtYXNrYCB0byBgV1hfVk1EUV8xUV9NQVNLYCwgb3IgYDB4N0ZgLiBUaGUgYml0d2lzZSBpbnZlcnNlLCBgfjB4N0ZgLCBpcyBgMHhGRkZGRkY4MGAuIFVzaW5nIHRoZSBzYW1lIGxvZ2ljLCBgX19BTElHTl9NQVNLKDEsIDB4RkZGRkZGODApYCBpcyBub3cgYCgxICsgMHhGRkZGRkY4MCkgXHUwMDI2IH4oMHhGRkZGRkY4MClgLCB3aGljaCBzaW1wbGlmaWVzIHRvIGAweEZGRkZGRjgxIFx1MDAyNiAweDdGYC4gVGhlIHJlc3VsdCBvZiB0aGF0IGJpdHdpc2UgQU5EIG9wZXJhdGlvbiBpcyAxLlxuXG5TbywgYF9fQUxJR05fTUFTSyh4LCBtYXNrKWAgaXMgY29uZmlybWVkIGFzIGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYCwgYW5kIHdpdGggdGhlIHBhdGNoLCB0aGUgY29kZSB3aWxsIG5vdyBvcGVyYXRlIG9uIG9uZSBxdWV1ZSBpZiBiaXQgMCBpcyBzZXQuIEkgdGhpbmsgdGhpcyBhbGlnbnMgd2l0aCB0aGUgaW50ZW50IG9mIHRoZSBwYXRjaC4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBidXQgdGhlIGxvZ2ljIHNlZW1zIHNvdW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTM2MiwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjM3LjIxMzMxODkyWiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjEzNTEzNDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBfX0FMSUdOX01BU0tcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS92ZHNvL2FsaWduLmgtOS0jZGVmaW5lIEFMSUdOX0RPV04oeCwgYSlcXHRfX0FMSUdOX0tFUk5FTCgoeCkgLSAoKGEpIC0gMSksIChhKSlcXG5pbmNsdWRlL3Zkc28vYWxpZ24uaDoxMDojZGVmaW5lIF9fQUxJR05fTUFTSyh4LCBtYXNrKVxcdF9fQUxJR05fS0VSTkVMX01BU0soKHgpLCAobWFzaykpXFxuaW5jbHVkZS92ZHNvL2FsaWduLmgtMTEtI2RlZmluZSBQVFJfQUxJR04ocCwgYSlcXHRcXHQoKHR5cGVvZihwKSlBTElHTigodW5zaWduZWQgbG9uZykocCksIChhKSkpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvdHJhY2VfaGVscGVycy5oLTE4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi90cmFjZV9oZWxwZXJzLmg6MTk6I2RlZmluZSBfX0FMSUdOX01BU0soeCwgbWFzaylcXHQoKCh4KSsobWFzaykpXFx1MDAyNn4obWFzaykpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3RyYWNlX2hlbHBlcnMuaC0yMC0jZGVmaW5lIEFMSUdOKHgsIGEpXFx0XFx0X19BTElHTl9NQVNLKHgsICh0eXBlb2YoeCkpKGEpLTEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjM5LjgyNjgzNzIxMloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjY0NTU1MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQml0d2lzZSBNYWdpYyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYml0d2lzZSBvcGVyYXRpb246IGAoKCh4KSArIChtYXNrKSkgXHUwMDI2IH4obWFzaykpYC4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgaWYgYHZtZHEtXHUwMDNlbWFza2AgaXMgMHg3RiwgdGhlbiB0aGUgYG1hc2tgIGJlY29tZXMgaXRzIGJpdHdpc2UgY29tcGxlbWVudCwgYH4weDdGYCwgd2hpY2ggaXMgYDB4RkZGRkZGODBgLiBOb3csIGxldCdzIHNheSBgeGAgaXMgMS4gV2UgaGF2ZSBgMSArIDB4RkZGRkZGODBgLCB3aGljaCB5aWVsZHMgYDB4RkZGRkZGODFgLiBUYWtpbmcgdGhlIGJpdHdpc2UgY29tcGxlbWVudCBvZiBgbWFza2AsIGB+KG1hc2spYCwgZ2l2ZXMgdXMgYDB4N0ZgLiBQZXJmb3JtaW5nIHRoZSBiaXR3aXNlIEFORCBvZiBgMHhGRkZGRkY4MWAgd2l0aCBgMHg3RmAgcmVzdWx0cyBpbiBgMHgwMWAuIFNvLCBpbiB0aGlzIHNjZW5hcmlvLCBgcV9wZXJfcG9vbGAgd291bGQgYmUgMS5cblxuTm93LCBjb25zaWRlciB0aGUgY2FzZSB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyAwLiBUaGF0IG1ha2VzIGBtYXNrYCBlcXVhbCB0byBgMHhGRkZGRkZGRmAuIEFkZGluZyBgeGAgKHdoaWNoIGlzIHN0aWxsIDEpIHRvIHRoaXMgYmVjb21lcyBgMGAuIFRha2luZyB0aGUgYml0d2lzZSBjb21wbGVtZW50IGFnYWluIGdpdmVzIHVzIGAwYC4gQW5kIGAwIFx1MDAyNiAwYCBpcywgb2YgY291cnNlLCBgMGAuIFNvLCBwcmV2aW91c2x5LCBgcV9wZXJfcG9vbGAgd291bGQgaGF2ZSBiZWVuIDAuIFRoYXQncyBhIGh1Z2UgY2hhbmdlIVxuXG5Ib2xkIG9uLCB0aGlzIGlzIHNpZ25pZmljYW50LiBJJ20gcHJldHR5IHN1cmUgdGhpcyBjaGFuZ2UgaXMgZml4aW5nIGEgYnVnLiBCZWZvcmUsIGlmIGBxX3Blcl9wb29sYCB3YXMgMCwgYSBsb29wIG1pZ2h0IGhhdmUgYmVlbiBza2lwcGVkLCBvciB3b3JzZSwgdGhlcmUgbWF5IGhhdmUgYmVlbiBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3I/IE5vLCBubywgaXQncyBub3QgYSBkaXZpc2lvbiBieSB6ZXJvLiBJZiBgcV9wZXJfcG9vbGAgd2FzIDAsIHRoZW4gdGhlIGNhbGN1bGF0aW9uIGB2ZiAqIHFfcGVyX3Bvb2wgLyAzMmAgd291bGQgaGF2ZSByZXR1cm5lZCAwLCBzbyB0aGUgbG9vcCB3b3VsZCBoYXZlIGJlZW4gc2tpcHBlZCwgaW4gZXNzZW5jZS5cblxuUmlnaHQsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBtb3JlIHNjcnV0aW55LiBJIHNob3VsZCBjaGVjayBgd3hfZ2V0X3ZmX3F1ZXVlc2AgdG8gc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY1NDEsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NDcuMDkxMzk0NzUyWiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM5LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzM5OlxcdHN0YXRpYyBpbnQgd3hfZ2V0X3ZmX3F1ZXVlcyhzdHJ1Y3Qgd3ggKnd4LCB1MzIgKm1zZ2J1ZiwgdTMyIHZmKVxcbiAzNDA6XFx0e1xcbiAzNDE6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4gMzQyOlxcdFxcdHVuc2lnbmVkIGludCBkZWZhdWx0X3RjID0gMDtcXG4gMzQzOlxcdFxcbiAzNDQ6XFx0XFx0bXNnYnVmW1dYX1ZGX1RYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbiAzNDU6XFx0XFx0bXNnYnVmW1dYX1ZGX1JYX1FVRVVFU10gPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbiAzNDY6XFx0XFxuIDM0NzpcXHRcXHRpZiAod3gtXFx1MDAzZXZmaW5mb1t2Zl0ucGZfdmxhbiB8fCB3eC1cXHUwMDNldmZpbmZvW3ZmXS5wZl9xb3MpXFxuIDM0ODpcXHRcXHRcXHRtc2didWZbV1hfVkZfVFJBTlNfVkxBTl0gPSAxO1xcbiAzNDk6XFx0XFx0ZWxzZVxcbiAzNTA6XFx0XFx0XFx0bXNnYnVmW1dYX1ZGX1RSQU5TX1ZMQU5dID0gMDtcXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0Lyogbm90aWZ5IFZGIG9mIGRlZmF1bHQgcXVldWUgKi9cXG4gMzUzOlxcdFxcdG1zZ2J1ZltXWF9WRl9ERUZfUVVFVUVdID0gZGVmYXVsdF90YztcXG4gMzU0OlxcdFxcbiAzNTU6XFx0XFx0cmV0dXJuIDA7XFxuIDM1NjpcXHR9XFxuIDM1NzpcXHRcXG4gMzU4OlxcdHN0YXRpYyB2b2lkIHd4X3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCB3eCAqd3gsIHUxNiB2ZilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NDcuMDkxNTMxMDMyWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNDQ3NzcwODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCBJJ20gc2VlaW5nOiBgbXNnYnVmW1dYX1ZGX1RYX1FVRVVFU11gIHdhcyBpbml0aWFsbHkgemVybywgYW5kIG5vdyBpdCdzIGJlZW4gdXBkYXRlZCB0byBvbmUuIFRoaXMgaXMgc2lnbmlmaWNhbnQuIFByZXZpb3VzbHksIHRoZSBWaXJ0dWFsIEZ1bmN0aW9uIChWRikgd291bGQgaGF2ZSByZWNlaXZlZCB6ZXJvIHF1ZXVlcy4gVGhhdCdzIGEgcmVjaXBlIGZvciBkaXNhc3RlciDigJMgaW5pdGlhbGl6YXRpb24gZmFpbHVyZXMsIGNyYXNoZXMsIHRoZSB3aG9sZSBuaW5lIHlhcmRzLiBOb3csIGl0J3MgZ2V0dGluZyBhIHNpbmdsZSBxdWV1ZS4gVGhpcyBjaGFuZ2UgaXMgYSBjbGVhciBpbmRpY2F0aW9uIG9mIGEgcG9zc2libGUgdnVsbmVyYWJpbGl0eS5cblxuTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2l0dWF0aW9uIGlzIHJpcGUgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgZnVuY3Rpb25zIGludm9sdmVkIGluIHNldHRpbmcgYW5kIHJlYWRpbmcgdGhlIHF1ZXVlIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZXNlIGZ1bmN0aW9ucyBhbmQgc2VlIGhvdyB0aGV5IGFyZSBpbnRlcmFjdGluZyBhbmQgaWYgd2UgY2FuIGluZmx1ZW5jZSB0aGUgdmFsdWUgdGhhdCBpcyB3cml0dGVuIG9yIHJlYWQuXG5cbldoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBjaGVjayB3aGVyZSBgdm1kcS1cdTAwM2VtYXNrYCBpcyBiZWluZyB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgY29kZS4gVW5kZXJzdGFuZGluZyBob3cgdGhpcyBtYXNrIGlzIGVtcGxveWVkIGFjcm9zcyB0aGUgc3lzdGVtIHdpbGwgcHJvdmlkZSB1cyB3aXRoIG1vcmUgY29udGV4dCBhbmQgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY2NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUyOjUxLjMzNjMxMDY2NFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjYzODcyNzQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bWRxLVxcdTAwM2VtYXNrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE3PXN0YXRpYyBib29sIGl4Z2JlX2NhY2hlX3JpbmdfZGNiX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMzUtXFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjM2OlxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTM3LVxcdGZvciAoaSA9IDAsIHBvb2wgPSAwOyBpIFxcdTAwM2MgYWRhcHRlci1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrLCByZWdfaWR4KyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0zOC1cXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYzozOTpcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiB+dm1kcS1cXHUwMDNlbWFzaykgXFx1MDAzZT0gdGNzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNDAtXFx0XFx0XFx0cG9vbCsrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQxOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjQ3OlxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhZGFwdGVyLVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyssIHJlZ19pZHgrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTQ5LVxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjUwOlxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSB0Y3MpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6NTE6XFx0XFx0XFx0cmVnX2lkeCA9IF9fQUxJR05fTUFTSyhyZWdfaWR4LCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtNTItXFx0XFx0YWRhcHRlci1cXHUwMDNldHhfcmluZ1tpXS1cXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy02NS1cXHRpZiAoZmNvZS1cXHUwMDNlaW5kaWNlcykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjY2OlxcdFxcdHUxNiBxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTY3LVxcdFxcdHU4IGZjb2VfdGMgPSBpeGdiZV9mY29lX2dldF90YyhhZGFwdGVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTcwLVxcdFxcdGZvciAoaSA9IGZjb2UtXFx1MDAzZW9mZnNldDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjcxOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spICsgZmNvZV90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy03Mi1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTc4LVxcdFxcdGZvciAoaSA9IGZjb2UtXFx1MDAzZW9mZnNldDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjc5OlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spICsgZmNvZV90YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy04MC1cXHRcXHRcXHRhZGFwdGVyLVxcdTAwM2V0eF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jPTE4ND1zdGF0aWMgYm9vbCBpeGdiZV9jYWNoZV9yaW5nX3NyaW92KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMTk5LVxcdHBvb2wgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIwMDpcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDctXFx0XFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjA4OlxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMDktXFx0XFx0XFx0cG9vbCsrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIxMDpcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMTEtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmMtMjIzLSNlbmRpZlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jOjIyNDpcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0ICogX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMjUtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFkYXB0ZXItXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9saWIuYy0yMzItXFx0XFx0aWYgKChyZWdfaWR4IFxcdTAwMjYgcnNzLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbGliLmM6MjMzOlxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX2xpYi5jLTIzNC1cXHRcXHRhZGFwdGVyLVxcdTAwM2V0eF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz04MjM2PXN0YXRpYyBib29sIGl4Z2JlX3ZmX3R4X3BlbmRpbmcoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtODIzOS1cXHRzdHJ1Y3QgaXhnYmVfcmluZ19mZWF0dXJlICp2bWRxID0gXFx1MDAyNmFkYXB0ZXItXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjgyNDA6XFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy04MjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jPTEwMDg5PXN0YXRpYyBpbnQgaGFuZGxlX3JlZGlyZWN0X2FjdGlvbihzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgaW50IGlmaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTAxMDEtXFx0XFx0aWYgKHVwcGVyLVxcdTAwM2VpZmluZGV4ID09IGlmaW5kZXgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTAxMDI6XFx0XFx0XFx0KnF1ZXVlID0gdmYgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMDEwMy1cXHRcXHRcXHQqYWN0aW9uID0gdmYgKyAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz02OTk9c3RhdGljIGlubGluZSB2b2lkIGl4Z2JlX3ZmX3Jlc2V0X2V2ZW50KHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVyLCB1MzIgdmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTcwMy1cXHRzdHJ1Y3QgdmZfZGF0YV9zdG9yYWdlICp2ZmluZm8gPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNldmZpbmZvW3ZmXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjcwNDpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy03MDUtXFx0dTggbnVtX3RjcyA9IGFkYXB0ZXItXFx1MDAzZWh3X3RjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM9ODA5PXN0YXRpYyBpbmxpbmUgdm9pZCBpeGdiZV93cml0ZV9xZGUoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIHUzMiB2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODEzLVxcdHN0cnVjdCBpeGdiZV9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2YWRhcHRlci1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jOjgxNDpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04MTUtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTg4MT1zdGF0aWMgaW50IGl4Z2JlX3ZmX3Jlc2V0X21zZyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlciwgdTMyIHZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYy04ODgtXFx0dTggKmFkZHIgPSAodTggKikoXFx1MDAyNm1zZ2J1ZlsxXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzo4ODk6XFx0dTMyIHFfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtODkwLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYz0xMDYyPXN0YXRpYyBpbnQgaXhnYmVfZ2V0X3ZmX3F1ZXVlcyhzdHJ1Y3QgaXhnYmVfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTA4NC1cXHQvKiBvbmx5IGFsbG93IDEgVHggcXVldWUgZm9yIGJhbmR3aWR0aCBsaW1pdGluZyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTA4NTpcXHRtc2didWZbSVhHQkVfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfc3Jpb3YuYzoxMDg2OlxcdG1zZ2J1ZltJWEdCRV9WRl9SWF9RVUVVRVNdID0gX19BTElHTl9NQVNLKDEsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jLTEwODctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9zcmlvdi5jPTE2OTg9c3RhdGljIHZvaWQgaXhnYmVfc2V0X3ZmX3JhdGVfbGltaXQoc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTczOC1cXHQvKiBkZXRlcm1pbmUgaG93IG1hbnkgcXVldWVzIHBlciBwb29sIGJhc2VkIG9uIFZNRHEgbWFzayAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmM6MTczOTpcXHRxdWV1ZXNfcGVyX3Bvb2wgPSBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX3NyaW92LmMtMTc0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM9MjAwND1zdGF0aWMgYm9vbCB3eF9jYWNoZV9yaW5nX3ZtZHEoc3RydWN0IHd4ICp3eClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxNi1cXHRcXHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDE3OlxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAxOC1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYy0yMDE5LVxcdFxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAyMDpcXHRcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiB+dm1kcS1cXHUwMDNlbWFzaykgXFx1MDAzZT0gcnNzLVxcdTAwM2VpbmRpY2VzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmM6MjAyMTpcXHRcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMjItXFx0XFx0XFx0d3gtXFx1MDAzZXJ4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyMy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDI0OlxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyNS1cXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X2xpYi5jLTIwMjctXFx0XFx0XFx0aWYgKChyZWdfaWR4IFxcdTAwMjYgcnNzLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuYzoyMDI4OlxcdFxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfbGliLmMtMjAyOS1cXHRcXHRcXHR3eC1cXHUwMDNldHhfcmluZ1tpXS1cXHUwMDNlcmVnX2lkeCA9IHJlZ19pZHg7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmM9Mjc4PXN0YXRpYyB2b2lkIHd4X3dyaXRlX3FkZShzdHJ1Y3Qgd3ggKnd4LCB1MzIgdmYsIHUzMiBxZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL2xpYnd4L3d4X3NyaW92LmMtMjgwLVxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnZtZHEgPSBcXHUwMDI2d3gtXFx1MDAzZXJpbmdfZmVhdHVyZVtSSU5HX0ZfVk1EUV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjI4MTpcXHR1MzIgcV9wZXJfcG9vbCA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTI4Mi1cXHR1MzIgcmVnID0gMCwgbiA9IHZmICogcV9wZXJfcG9vbCAvIDMyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jPTMzOT1zdGF0aWMgaW50IHd4X2dldF92Zl9xdWV1ZXMoc3RydWN0IHd4ICp3eCwgdTMyICptc2didWYsIHUzMiB2ZilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbGlid3gvd3hfc3Jpb3YuYy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0NDpcXHRtc2didWZbV1hfVkZfVFhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jOjM0NTpcXHRtc2didWZbV1hfVkZfUlhfUVVFVUVTXSA9IF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9zcmlvdi5jLTM0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTI6NTMuOTc1MTA2NTM1WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MDEzOTE3NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgd3hfY2FjaGVfcmluZ192bWRxYCBDb250ZXh0KipcblxuUmlnaHQsIHNvIHRoaXMgaXMgYW5vdGhlciBpbnN0YW5jZSB3aGVyZSB3ZSdyZSBsZXZlcmFnaW5nIHRoZSBzYW1lIHByaW5jaXBsZXMgYXMgYHd4X2NhY2hlX3Jpbmdfdm1kcWAuIFRoZSBmYWN0IHRoYXQgaXQncyBjcm9wcGluZyB1cCBoZXJlIG1lYW5zIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgKnRoYXQqIHNwZWNpZmljIGNvbXBvbmVudCBpcyBmdW5jdGlvbmluZywgdGhlIGFzc3VtcHRpb25zIGl0IG1ha2VzLCBhbmQgdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyByZS11c2UuIEdvdHRhIHF1aWNrbHkgYW5hbHl6ZSBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBlbnN1cmUgd2UncmUgbm90IGludHJvZHVjaW5nIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9ycyBvciBjb25mbGljdHMgaW4gdGhpcyBuZXcgY29udGV4dC4gTGV0J3Mgc2VlIGhvdyB0aGluZ3MgYXJlIGltcGxlbWVudGVkIHRoZXJlLCBhbmQgdGhpbmsgYWJvdXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjQ5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTM6MDguOTg5MDI2ODI1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjI5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDA0LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDA0OlxcdHN0YXRpYyBib29sIHd4X2NhY2hlX3Jpbmdfdm1kcShzdHJ1Y3Qgd3ggKnd4KVxcbjIwMDU6XFx0e1xcbjIwMDY6XFx0XFx0c3RydWN0IHd4X3JpbmdfZmVhdHVyZSAqdm1kcSA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9WTURRXTtcXG4yMDA3OlxcdFxcdHN0cnVjdCB3eF9yaW5nX2ZlYXR1cmUgKnJzcyA9IFxcdTAwMjZ3eC1cXHUwMDNlcmluZ19mZWF0dXJlW1JJTkdfRl9SU1NdO1xcbjIwMDg6XFx0XFx0dTE2IHJlZ19pZHg7XFxuMjAwOTpcXHRcXHRpbnQgaTtcXG4yMDEwOlxcdFxcbjIwMTE6XFx0XFx0Lyogb25seSBwcm9jZWVkIGlmIFZNRHEgaXMgZW5hYmxlZCAqL1xcbjIwMTI6XFx0XFx0aWYgKCF0ZXN0X2JpdChXWF9GTEFHX1ZNRFFfRU5BQkxFRCwgd3gtXFx1MDAzZWZsYWdzKSlcXG4yMDEzOlxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4yMDE0OlxcdFxcbjIwMTU6XFx0XFx0aWYgKHRlc3RfYml0KFdYX0ZMQUdfTVVMVElfNjRfRlVOQywgd3gtXFx1MDAzZWZsYWdzKSkge1xcbjIwMTY6XFx0XFx0XFx0Lyogc3RhcnQgYXQgVk1EcSByZWdpc3RlciBvZmZzZXQgZm9yIFNSLUlPViBlbmFibGVkIHNldHVwcyAqL1xcbjIwMTc6XFx0XFx0XFx0cmVnX2lkeCA9IHZtZHEtXFx1MDAzZW9mZnNldCAqIF9fQUxJR05fTUFTSygxLCB+dm1kcS1cXHUwMDNlbWFzayk7XFxuMjAxODpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKywgcmVnX2lkeCsrKSB7XFxuMjAxOTpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG4yMDIwOlxcdFxcdFxcdFxcdGlmICgocmVnX2lkeCBcXHUwMDI2IH52bWRxLVxcdTAwM2VtYXNrKSBcXHUwMDNlPSByc3MtXFx1MDAzZWluZGljZXMpXFxuMjAyMTpcXHRcXHRcXHRcXHRcXHRyZWdfaWR4ID0gX19BTElHTl9NQVNLKHJlZ19pZHgsIH52bWRxLVxcdTAwM2VtYXNrKTtcXG4yMDIyOlxcdFxcdFxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeDtcXG4yMDIzOlxcdFxcdFxcdH1cXG4yMDI0OlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQgKiBfX0FMSUdOX01BU0soMSwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbjIwMjU6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fdHhfcXVldWVzOyBpKyssIHJlZ19pZHgrKykge1xcbjIwMjY6XFx0XFx0XFx0XFx0LyogSWYgd2UgYXJlIGdyZWF0ZXIgdGhhbiBpbmRpY2VzIG1vdmUgdG8gbmV4dCBwb29sICovXFxuMjAyNzpcXHRcXHRcXHRcXHRpZiAoKHJlZ19pZHggXFx1MDAyNiByc3MtXFx1MDAzZW1hc2spIFxcdTAwM2U9IHJzcy1cXHUwMDNlaW5kaWNlcylcXG4yMDI4OlxcdFxcdFxcdFxcdFxcdHJlZ19pZHggPSBfX0FMSUdOX01BU0socmVnX2lkeCwgfnZtZHEtXFx1MDAzZW1hc2spO1xcbjIwMjk6XFx0XFx0XFx0XFx0d3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4O1xcbjIwMzA6XFx0XFx0XFx0fVxcbjIwMzE6XFx0XFx0fSBlbHNlIHtcXG4yMDMyOlxcdFxcdFxcdC8qIHN0YXJ0IGF0IFZNRHEgcmVnaXN0ZXIgb2Zmc2V0IGZvciBTUi1JT1YgZW5hYmxlZCBzZXR1cHMgKi9cXG4yMDMzOlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjA4Ljk5MTQ5MzM1NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTc5NDQwODIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGB3eF9jYWNoZV9yaW5nX3ZtZHFgJ3MgQ29uZGl0aW9uYWwgTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBgd3hfY2FjaGVfcmluZ192bWRxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaWYgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AgKmlzbid0KiBzZXQsIGl0IGdvZXMgc3RyYWlnaHQgdG8gdGhlIGBlbHNlYCBicmFuY2guIFRoYXQgYGVsc2VgIHBhdGggaXMga2V5IGJlY2F1c2UsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhpcyBjb3JyZWN0bHksIGl0ICpkb2Vzbid0KiBhY3R1YWxseSB0b3VjaCBgdm1kcS1cdTAwM2VtYXNrYC4gTm93LCB0aGlzIGlzIHByZXR0eSBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGtlZXAgcmVhZGluZyB0aGUgY29kZSBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCB0byBjb25maXJtIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gSSBoYXZlIHRvIHVuZGVyc3RhbmQgdGhlIGZsb3cgaGVyZS4gSSdsbCByZWFkIG9uIHRvIGVuc3VyZSB0aGlzIGlzIGFzIEkgdW5kZXJzdGFuZCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMxMDgsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjI0Ljc4NTkwNTU2OFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9saWJ3eC93eF9saWIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMDMxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMDMxOlxcdFxcdH0gZWxzZSB7XFxuMjAzMjpcXHRcXHRcXHQvKiBzdGFydCBhdCBWTURxIHJlZ2lzdGVyIG9mZnNldCBmb3IgU1ItSU9WIGVuYWJsZWQgc2V0dXBzICovXFxuMjAzMzpcXHRcXHRcXHRyZWdfaWR4ID0gdm1kcS1cXHUwMDNlb2Zmc2V0O1xcbjIwMzQ6XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHd4LVxcdTAwM2VudW1fcnhfcXVldWVzOyBpKyspXFxuMjAzNTpcXHRcXHRcXHRcXHQvKiBJZiB3ZSBhcmUgZ3JlYXRlciB0aGFuIGluZGljZXMgbW92ZSB0byBuZXh0IHBvb2wgKi9cXG4yMDM2OlxcdFxcdFxcdFxcdHd4LVxcdTAwM2VyeF9yaW5nW2ldLVxcdTAwM2VyZWdfaWR4ID0gcmVnX2lkeCArIGk7XFxuMjAzNzpcXHRcXG4yMDM4OlxcdFxcdFxcdHJlZ19pZHggPSB2bWRxLVxcdTAwM2VvZmZzZXQ7XFxuMjAzOTpcXHRcXHRcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgd3gtXFx1MDAzZW51bV90eF9xdWV1ZXM7IGkrKylcXG4yMDQwOlxcdFxcdFxcdFxcdC8qIElmIHdlIGFyZSBncmVhdGVyIHRoYW4gaW5kaWNlcyBtb3ZlIHRvIG5leHQgcG9vbCAqL1xcbjIwNDE6XFx0XFx0XFx0XFx0d3gtXFx1MDAzZXR4X3JpbmdbaV0tXFx1MDAzZXJlZ19pZHggPSByZWdfaWR4ICsgaTtcXG4yMDQyOlxcdFxcdH1cXG4yMDQzOlxcdFxcbjIwNDQ6XFx0XFx0cmV0dXJuIHRydWU7XFxuMjA0NTpcXHR9XFxuMjA0NjpcXHRcXG4yMDQ3OlxcdC8qKlxcbjIwNDg6XFx0ICogd3hfY2FjaGVfcmluZ19yc3MgLSBEZXNjcmlwdG9yIHJpbmcgdG8gcmVnaXN0ZXIgbWFwcGluZyBmb3IgUlNTXFxuMjA0OTpcXHQgKiBAd3g6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlIHRvIGluaXRpYWxpemVcXG4yMDUwOlxcdCAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjI0Ljc4NjEzOTQyOFoiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc4MTczNzg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGIFF1ZXVlIEJ1ZyBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgc2VlbXMgdGhlIGNvcmUgaXNzdWUgcmV2b2x2ZXMgYXJvdW5kIGhvdyB0aGUgYHZtZHEtXHUwMDNlbWFza2AgaXMgaGFuZGxlZCBpbiBgd3hfY2FjaGVfcmluZ192bWRxYCBmb3IgdGhlIGBuZ2JlYCBkcml2ZXIuIFNwZWNpZmljYWxseSwgaXQncyAqbm90KiB1c2VkIGluIHRoYXQgZnVuY3Rpb24gYmVjYXVzZSBgV1hfRkxBR19NVUxUSV82NF9GVU5DYCBpc24ndCBzZXQuIEJ1dCwgdGhpcyBgdm1kcS1cdTAwM2VtYXNrYCAqaXMqIHVzZWQgd2l0aGluIGB3eF93cml0ZV9xZGVgIGFuZCBgd3hfZ2V0X3ZmX3F1ZXVlc2AuIFRoZSBwcm9ibGVtIHN1cmZhY2VkIGJlY2F1c2UgYHFfcGVyX3Bvb2xgIHdhcyBpbmNvcnJlY3RseSBpbml0aWFsaXplZCB0byB6ZXJvLCBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIFZpcnR1YWwgRnVuY3Rpb24gKFZGKSBxdWV1ZXMuIFRoYXQncyBhIGNsYXNzaWMgZnVuY3Rpb25hbCBidWcuXG5cblNpbmNlIHRoaXMgaXMgYSBmaXggdGhhdCBkaXJlY3RseSBpbXByb3ZlcyBWRiBxdWV1ZSBmdW5jdGlvbmFsaXR5IGZvciBgbmdiZWAsIHRoaXMgaXMgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gZHVyaW5nIGZ1enppbmcgYXJlIGB3eF9zZXRfdm1kcV9xdWV1ZXNgLCBgd3hfd3JpdGVfcWRlYCwgYW5kIGB3eF9nZXRfdmZfcXVldWVzYC4gVGhleSdyZSByaWdodCBhdCB0aGUgaGVhcnQgb2Ygd2hlcmUgdGhlIGJ1ZyBtYW5pZmVzdGVkLlxuXG5Ob3csIHRoZSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gdGVzdGluZyB0aGUgcmlnaHQgb25lcy4gT2J2aW91c2x5LCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSByZWxldmFudCwgYnV0IEkgbmVlZCB0byBjb25zaWRlciBvdGhlcnMgdG9vLiBIbW1tLCBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgbWlnaHQgYmUgd29ydGggYSBsb29rLCBidXQgZ2l2ZW4gdGhhdCBgVFhHQkVgICpkb2VzKiBzZXQgYFdYX0ZMQUdfTVVMVElfNjRfRlVOQ2AsIGl0IHRha2VzIGEgZGlmZmVyZW50IGNvZGUgcGF0aCB3aXRoaW4gYHd4X3NldF92bWRxX3F1ZXVlc2AuIEluIHRoYXQgc2NlbmFyaW8sIGB2bWRxX21gIGlzIGFsd2F5cyBzZXQgdG8gZWl0aGVyIGBXWF9WTURRXzJRX01BU0tgIG9yIGBXWF9WTURRXzRRX01BU0tgLCBzbyBpdCBzZWVtcyBgVFhHQkVgIGFuZCBgVFhHQkVWRmAgd2VyZSBub3QgYWZmZWN0ZWQgYnkgdGhpcyBwYXJ0aWN1bGFyIGJ1Zy4gVGh1cywgYE5HQkVgIGFuZCBgTkdCRVZGYCBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRvIGVuYWJsZSBmb3IgdGhpcyBmdXp6aW5nIGNhbXBhaWduLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBwdWxsIGluIHRoZSByZWxldmFudCBjb2RlLiBMb29raW5nIGludG8gaXQuLi4gYExJQldYYCBpcyBzZWxlY3RlZCBieSBib3RoIGBOR0JFYCBhbmQgYFRYR0JFYCwgYnV0IHNpbmNlIGBUWEdCRWAgZG9lc24ndCBleHBlcmllbmNlIHRoZSBidWcsIEkgc2hvdWxkIGJlIHNhZmUgdG8gc3RpY2sgd2l0aCBqdXN0IGBOR0JFYCBhbmQgYE5HQkVWRmAuXG5cbkFscmlnaHQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkdCRWAgYW5kIGBOR0JFVkZgIGFyZSB0aGUgcHJlY2lzZSBjb25maWd1cmF0aW9uIG5hbWVzIEkgc2hvdWxkIGJlIHVzaW5nLiBUaGlzIGlzIGdvaW5nIHRvIGJlIGEgdGFyZ2V0ZWQgZnV6emluZyBjYW1wYWlnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3MzgsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMDo1Mzo1NS41Njc4Nzk4NjJaIiwiU2VxIjo1NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjEzNjQ4NzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5HQkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnPTE5PWNvbmZpZyBMSUJXWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzoyODpjb25maWcgTkdCRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiV2FuZ3h1bihSKSBHYkUgUENJIEV4cHJlc3MgYWRhcHRlcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz02Nz1jb25maWcgVFhHQkVWRlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZzo4NTpjb25maWcgTkdCRVZGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTg2LVxcdHRyaXN0YXRlIFxcXCJXYW5neHVuKFIpIEdiRSBWaXJ0dWFsIEZ1bmN0aW9uIEV0aGVybmV0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAwOjUzOjU5LjQyOTI0OTY1OFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MzY1NDU3MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBGdXp6aW5nIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGVmaW5lIHRoZSBtb3N0IHJlbGV2YW50IGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaC4gSSBpbW1lZGlhdGVseSB6ZXJvIGluIG9uIGBOR0JFYCBhbmQgYE5HQkVWRmAg4oCTIHRoYXQncyB0aGUgY29yZSBvZiB3aGF0J3MgYmVpbmcgYWRkcmVzc2VkIGhlcmUsIHJpZ2h0PyBNaWdodCBhcyB3ZWxsIHRocm93IGluIGBUWEdCRWAgYW5kIGBUWEdCRVZGYCBhcyBwYXJ0IG9mIHRoZSBmYW1pbHksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIGJ1dCBJIG5lZWQgdG8gZm9jdXMgb24gd2hhdCdzICpzcGVjaWZpYyogdG8gdGhpcyBtb2RpZmljYXRpb24uIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGFza3MgdG8gYXZvaWQgZ2VuZXJpYyBjb25maWd1cmF0aW9ucy5cblxuUmlnaHQsIGBOR0JFYCBhbmQgYE5HQkVWRmAgYXJlIHBlcmZlY3QgdGhlbiwgYWNjb3JkaW5nIHRvIHRoYXQgY29uc3RyYWludC5cblxuTm93IGZvciB0aGUgZm9jdXMgc3ltYm9scy4gSSBuZWVkIHRvIGxpc3QgdGhlIGtleSBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGludGVyYWN0cyB3aXRoLiBMZXQncyBzZWUuLi4gdGhlIGNvZGUncyB0b3VjaGluZzpcbiogICBgd3hfc2V0X3ZtZHFfcXVldWVzYFxuKiAgIGB3eF93cml0ZV9xZGVgXG4qICAgYHd4X2dldF92Zl9xdWV1ZXNgXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIHRob3NlIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBMZXQncyBjaGVjazogYHd4X3dyaXRlX3FkZWAgZ2V0cyBjYWxsZWQgYnkgYHd4X3ZmX3Jlc2V0X21zZ2AgYW5kIGB3eF9zZXRfdmxhbl9hbnRpX3Nwb29maW5nYC4gYHd4X2dldF92Zl9xdWV1ZXNgIGlzIGNhbGxlZCBmcm9tIGB3eF9yY3ZfbXNnX2Zyb21fdmZgLiBBaCwgYW5kIHRoZXNlIGFyZSBhbGwgYWNjZXNzaWJsZSB3aGVuIGZ1enppbmcgdGhlIFBDSSBkZXZpY2Ugd2l0aCBTUi1JT1YgZW5hYmxlZC4gR29vZC5cblxuT2theSwgYXJlIHRob3NlIGZvY3VzIHN5bWJvbHMgc3RhdGljPyBZZXAuIGB3eF9zZXRfdm1kcV9xdWV1ZXNgIGlzIHN0YXRpYyBpbiBgd3hfbGliLmNgLCBgd3hfd3JpdGVfcWRlYCBhbmQgYHd4X2dldF92Zl9xdWV1ZXNgIGFyZSBzdGF0aWMgaW4gYHd4X3NyaW92LmNgLiBUaGlzIGlzIGFsbCBnb29kISBTdGF0aWMgZnVuY3Rpb25zIGFyZSBlYXNpZXIgdG8gdGFyZ2V0LlxuXG5Ob3cgdG8gZm9ybXVsYXRlIHRoZSBmaW5hbCByZXNwb25zZS5cblxuKipXb3J0aEZ1enppbmc6IHRydWUqKlxuXG4qKkZvY3VzU3ltYm9sczogW1wid3hfc2V0X3ZtZHFfcXVldWVzXCIsIFwid3hfd3JpdGVfcWRlXCIsIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXSoqXG5cbioqRW5hYmxlQ29uZmlnczogW1wiTkdCRVwiLCBcIk5HQkVWRlwiXSoqXG5cbioqUmVhc29uaW5nOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiB0aGUgV2FuZ3h1biBldGhlcm5ldCBkcml2ZXIgd2hlcmUgdGhlIFZNRFEgbWFzayB3YXMgbGVmdCBhcyAwIGZvciBkZXZpY2VzIG5vdCBzdXBwb3J0aW5nIDY0IGZ1bmN0aW9ucyAobGlrZSBOR0JFKS4gVGhpcyBjYXVzZWQgdGhlIG51bWJlciBvZiBxdWV1ZXMgcGVyIHBvb2wgdG8gYmUgY2FsY3VsYXRlZCBhcyAwLCBicmVha2luZyBWRiBxdWV1ZSBjb25maWd1cmF0aW9uIGFuZCByZXNldCBvcGVyYXRpb25zLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFBDSSBmdXp6aW5nIHdpdGggU1ItSU9WIGVuYWJsZWQuXCIqKlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDk1MSwiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDA6NTQ6MDcuNzk0NzA5NjExWiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MTcyNDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOR0JFXCIsXG4gICAgXCJOR0JFVkZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ3eF9zZXRfdm1kcV9xdWV1ZXNcIixcbiAgICBcInd4X3dyaXRlX3FkZVwiLFxuICAgIFwid3hfZ2V0X3ZmX3F1ZXVlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBXYW5neHVuIGV0aGVybmV0IGRyaXZlciB3aGVyZSB0aGUgVk1EUSBtYXNrIHdhcyBsZWZ0IGFzIDAgZm9yIGRldmljZXMgbm90IHN1cHBvcnRpbmcgNjQgZnVuY3Rpb25zIChsaWtlIE5HQkUpLiBUaGlzIGNhdXNlZCB0aGUgbnVtYmVyIG9mIHF1ZXVlcyBwZXIgcG9vbCB0byBiZSBjYWxjdWxhdGVkIGFzIDAsIGJyZWFraW5nIFZGIHF1ZXVlIGNvbmZpZ3VyYXRpb24gYW5kIHJlc2V0IG9wZXJhdGlvbnMuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgUENJIGZ1enppbmcgd2l0aCBTUi1JT1YgZW5hYmxlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowfz7q6[1] Phase: Succeeded StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 00:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 00:54:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2] Phase: Succeeded StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 00:54:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-27 00:54:19 +0000 UTC FinishedAt: 2026-06-27 00:54:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfz7q6/series-workflowfz7q6-convert-artifact-1477300716/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-27 00:54:29 +0000 UTC FinishedAt: 2026-06-27 01:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-27 00:54:29 +0000 UTC FinishedAt: 2026-06-27 01:19:07 +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:*678fe0ec-6770-4f0a-8d6e-b3c43081362e,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-workflowfz7q6/series-workflowfz7q6-convert-artifact-1477300716/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": "9b535562-e695-4c41-8361-7b271bbd33cc", "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-workflowfz7q6/series-workflowfz7q6-build-action-673922074/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-27 00:54:29 +0000 UTC FinishedAt: 2026-06-27 01:18:57 +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:*678fe0ec-6770-4f0a-8d6e-b3c43081362e,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-workflowfz7q6/series-workflowfz7q6-convert-artifact-1477300716/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": "9b535562-e695-4c41-8361-7b271bbd33cc", "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-workflowfz7q6/series-workflowfz7q6-build-action-673922074/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-27 01:19:07 +0000 UTC FinishedAt: 2026-06-27 01:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-27 01:19:07 +0000 UTC FinishedAt: 2026-06-27 01:19:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-27 01:19:07 +0000 UTC FinishedAt: 2026-06-27 01:19:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-27 01:19:07 +0000 UTC FinishedAt: 2026-06-27 01:19:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfz7q6/series-workflowfz7q6-convert-artifact-4111265707/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-27 01:19:17 +0000 UTC FinishedAt: 2026-06-27 01:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-27 01:19:17 +0000 UTC FinishedAt: 2026-06-27 01:21:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b535562-e695-4c41-8361-7b271bbd33cc,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-workflowfz7q6/series-workflowfz7q6-build-action-673922074/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-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-27 01:21:36 +0000 UTC FinishedAt: 2026-06-27 01:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-27 01:21:36 +0000 UTC FinishedAt: 2026-06-27 01:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-27 01:21:36 +0000 UTC FinishedAt: 2026-06-27 01:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-27 01:21:36 +0000 UTC FinishedAt: 2026-06-27 01:43:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*678fe0ec-6770-4f0a-8d6e-b3c43081362e,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-workflowfz7q6/series-workflowfz7q6-convert-artifact-4111265707/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": "796f72ca-1c9d-4248-a15d-149365291f79", "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-workflowfz7q6/series-workflowfz7q6-build-action-368484303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-27 01:21:36 +0000 UTC FinishedAt: 2026-06-27 01:43:17 +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:*678fe0ec-6770-4f0a-8d6e-b3c43081362e,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-workflowfz7q6/series-workflowfz7q6-convert-artifact-4111265707/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": "796f72ca-1c9d-4248-a15d-149365291f79", "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-workflowfz7q6/series-workflowfz7q6-build-action-368484303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 01:43:43 +0000 UTC FinishedAt: 2026-06-27 01:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 01:43:43 +0000 UTC FinishedAt: 2026-06-27 01:43:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 01:43:43 +0000 UTC FinishedAt: 2026-06-27 01:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 01:43:43 +0000 UTC FinishedAt: 2026-06-27 01:45:37 +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:*796f72ca-1c9d-4248-a15d-149365291f79,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-workflowfz7q6/series-workflowfz7q6-build-action-368484303/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-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +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":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"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:*9b535562-e695-4c41-8361-7b271bbd33cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*796f72ca-1c9d-4248-a15d-149365291f79,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-workflowfz7q6/series-workflowfz7q6-build-action-673922074/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-workflowfz7q6/series-workflowfz7q6-build-action-368484303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 01:46:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 01:46:05 +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":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"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-workflowfz7q6/series-workflowfz7q6-convert-artifact-3123138244/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 01:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 01:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 01:45:47 +0000 UTC FinishedAt: 2026-06-27 01:45:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-27 01:46:12 +0000 UTC FinishedAt: 2026-06-27 02:40:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfz7q6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["wx_set_vmdq_queues","wx_write_qde","wx_get_vf_queues"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["NGBE","NGBEVF"],"series_id":"cb8b24f5-4d4e-4835-a46a-548414af15de","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-27 01:46:12 +0000 UTC FinishedAt: 2026-06-27 02:40:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b535562-e695-4c41-8361-7b271bbd33cc,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*796f72ca-1c9d-4248-a15d-149365291f79,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-workflowfz7q6/series-workflowfz7q6-build-action-673922074/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-workflowfz7q6/series-workflowfz7q6-build-action-368484303/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-workflowfz7q6/series-workflowfz7q6-convert-artifact-3123138244/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,}