Name: series-workflow9wfdg Phase: Succeeded StartedAt: 2026-07-22 07:04:44 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[0] Phase: Succeeded StartedAt: 2026-07-22 07:04:44 +0000 UTC FinishedAt: 2026-07-22 07:25:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 07:04:44 +0000 UTC FinishedAt: 2026-07-22 07:25:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM" ], "series_id": "bb7c071b-9de2-419c-a2bf-018dcff5a10e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hwsim_tx_info_frame_received_nl", "hwsim_virtio_handle_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMjBhZjNhYmViZjhhMDE5ZWRlM2FkNzRlOTUyM2QyOTgwZTBmMTk1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDc6MjI6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG5AQCAtODcwLDkgJiM0Mzs4NzAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4gXHRbSFdTSU1fQVRUUl9GTEFHU10gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIFx0W0hXU0lNX0FUVFJfUlhfUkFURV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tXHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLFxuLVx0XHRcdFx0IC5sZW4gPSBJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbi1cdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKX0sXG4mIzQzO1x0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuJiM0MztcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXG4mIzQzO1x0XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpKSxcbiBcdFtIV1NJTV9BVFRSX0NPT0tJRV0gPSB7IC50eXBlID0gTkxBX1U2NCB9LFxuIFx0W0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1JBRElPX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyMGFmM2FiZWJmOGEwMTllZGUzYWQ3NGU5NTIzZDI5ODBlMGYxOTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwNzoyMjo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwpAQCAtODcwLDkgJiM0Mzs4NzAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7CiAJW0hXU0lNX0FUVFJfRkxBR1NdID0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbSFdTSU1fQVRUUl9SWF9SQVRFXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi0JW0hXU0lNX0FUVFJfVFhfSU5GT10gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwKLQkJCQkgLmxlbiA9IElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKgotCQkJCQlzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpfSwKJiM0MzsJW0hXU0lNX0FUVFJfVFhfSU5GT10gPQomIzQzOwkJTkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqCiYjNDM7CQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSksCiAJW0hXU0lNX0FUVFJfQ09PS0lFXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sCiAJW0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSGFyZHdhcmUgU2ltdWxhdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBhIHNpZ25pZmljYW50IE5ldGxpbmsgcG9saWN5IGNoYW5nZS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBIV1NJTV9BVFRSX1RYX0lORk9gIGF0dHJpYnV0ZS4gUHJldmlvdXNseSwgdGhlIHBvbGljeSBmb3IgdGhpcyBhdHRyaWJ1dGUgdXNlZCBgLnR5cGUgPSBOTEFfQklOQVJZYCB3aXRoIGAubGVuID0gLi4uYC4gTm93LCBpdCYjMzk7cyBzd2l0Y2hpbmcgdG8gYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKC4uLilgLgoKSG9sZCBvbi4uLiBUaGlzIGlzIGFjdHVhbGx5IG1vcmUgaW50ZXJlc3RpbmcgdGhhbiBhIHNpbXBsZSB0d2Vhay4gVGhlIGNyaXRpY2FsIGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgKmVuZm9yY2VtZW50Ki4gVXNpbmcgYC5sZW5gIHdpdGggYE5MQV9CSU5BUllgIGRlZmluZXMgYSAqbWF4aW11bSogbGVuZ3RoLCByaWdodD8gQnV0IGBOTEFfUE9MSUNZX0VYQUNUX0xFTmAuLi4gdGhhdCBtZWFucyBpdCBlbmZvcmNlcyBhbiAqZXhhY3QqIGxlbmd0aC4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1pbm9yIHN0eWxlIGFkanVzdG1lbnQ7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGltcGxpZXMgYSBzcGVjaWZpYyBleHBlY3RhdGlvbiBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgYFRYX0lORk9gIGRhdGEgdGhhdCYjMzk7cyBiZWluZyBzZW50IHRocm91Z2ggTmV0bGluay4gV2UmIzM5O3JlIGdvaW5nIGZyb20gYWNjZXB0aW5nIGFueXRoaW5nIHVwIHRvIGEgY2VydGFpbiBzaXplIHRvIHJlcXVpcmluZyBhICpwcmVjaXNlKiBzaXplLgoKQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIHVzYWdlIG9mIGBod3NpbV9nZW5sX3BvbGljeWAgdG8gc2VlIGhvdyB0aGlzIGBUWF9JTkZPYCBhdHRyaWJ1dGUgaXMgYmVpbmcgaGFuZGxlZCBhbmQgd2hlcmUgdGhpcyBleGFjdCBsZW5ndGggcmVxdWlyZW1lbnQgY29tZXMgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbV9nZW5sX3BvbGljeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg1Nz1od3NpbV9wbXNyX2NhcGFfcG9saWN5W05MODAyMTFfUE1TUl9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODY2LVx0W0hXU0lNX0FUVFJfQUREUl9SRUNFSVZFUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODYtXHQubWF4YXR0ciA9IEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NzpcdC5wb2xpY3kgPSBod3NpbV9nZW5sX3BvbGljeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODgtXHQubmV0bnNvayA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIzMj1zdGF0aWMgaW50IGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0Ni1cdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI0NzpcdFx0XHQgICAgaHdzaW1fZ2VubF9wb2xpY3ksIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0OC1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTc3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0bGluayBBdHRyaWJ1dGUgUGFyc2luZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTmV0bGluayBjaGFuZ2UgcmVsYXRlZCB0byBhdHRyaWJ1dGUgcGFyc2luZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGh3c2ltYCBjb250ZXh0LiBJdCBsb29rcyBsaWtlIHRoaXMgcG9saWN5IGlzIGJlaW5nIHVzZWQgaW4gYGh3c2ltX2dlbmxfZmFtaWx5YCBhbmQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCwgd2hpY2ggaXMgYSBwcmV0dHkgY29tbW9uIHBhdHRlcm4gZm9yIHRoaXMgdHlwZSBvZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEdpdmVuIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBvcHRpb24sIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyByZWxhdGVzIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24gaW4gbWFjODAyMTEsIHByb2JhYmx5IGZvciB0ZXN0aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBod3NpbV9nZW5sX3BvbGljeWAuICBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGVyZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGlzICp1c2VkKi4gTG9va3MgbGlrZSBpdCBmZWVkcyBpbnRvIGJvdGggYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIGdlbmVyaWMgTmV0bGluayBwYXJzaW5nIHdpdGhpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aG9zZSB0d28gaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IHBvbGljeSBpcyBrZXkuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhlIGNvbW1hbmRzIHRoYXQgYXJlIGRlZmluZWQgaW4gYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBwbGFjZXMgd2hlcmUgdGhpcyBuZXcgcGFyc2luZyB3aWxsIGFjdHVhbGx5IG1ha2UgaXRzIHByZXNlbmNlIGtub3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fZ2VubF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgZ2VubGAgZmFtaWx5IHVzZWQgd2l0aGluIGl0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byB2ZXJpZnkgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgYGh3c2ltX2dlbmxfZmFtaWx5YC4gSSBuZWVkIHRvIGVuc3VyZSBJJiMzOTttIG9wZXJhdGluZyB3aXRoIGEgY29ycmVjdCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuZGFtZW50YWwgc3RydWN0dXJlLiBBbnkgaW5jb25zaXN0ZW5jaWVzIG9yIG92ZXJsb29rZWQgZGV0YWlscyB0aGVyZSBjb3VsZCBsZWFkIG1lIGRvd24gYSB2ZXJ5IHdyb25nIHBhdGggZHVyaW5nIGFuYWx5c2lzLiBUaGlzIGlzIGEgY3JpdGljYWwgYnVpbGRpbmcgYmxvY2sgSSYjMzk7bSBkZWFsaW5nIHdpdGguIExldCBtZSBzZWUgd2hlcmUgdGhhdCYjMzk7cyBkZWZpbmVkLCBhbmQgd2hhdCYjMzk7cyBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbV9nZW5sX2ZhbWlseSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE3LS8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTg6c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTIxPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2NvbmZpZ19tYWNfbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTUzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Mzg6XHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTM5LVx0XHRcdCAgICAgICBhZGQgPyBIV1NJTV9DTURfQUREX01BQ19BRERSIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNjM1PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjcwOlx0bXNnX2hlYWQgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTY3MS1cdFx0XHQgICAgICAgSFdTSU1fQ01EX0ZSQU1FKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNzU0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc3RhcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNzgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzc4NDpcdG1zZ19oZWFkID0gZ2VubG1zZ19wdXQoc2tiLCAwLCAwLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCwgSFdTSU1fQ01EX1NUQVJUX1BNU1IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzc4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zODIxPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2Fib3J0X3Btc3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzg0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM4NTA6XHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsIEhXU0lNX0NNRF9BQk9SVF9QTVNSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM4NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDM2ND1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM2Ny1cdGlmIChpbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM2ODpcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNjktXHRcdFx0ICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzcwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM3MTpcdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNzItXHRcdFx0XHQgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDQ1Nj1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQ0NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0NDY2Olx0ZGF0YSA9IGdlbmxtc2dfcHV0KG1jYXN0X3NrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00NDY3LVx0XHRcdCAgIEhXU0lNX0NNRF9ORVdfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxNzQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYxODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MTg1Olx0ZGF0YSA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MTg2LVx0XHRcdCAgIEhXU0lNX0NNRF9ERUxfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYyMjE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfcmFkaW8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjIzMDpcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCBmbGFncyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMzEtXHRcdFx0ICBIV1NJTV9DTURfR0VUX1JBRElPKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTg5PXN0YXRpYyBpbnQgaHdzaW1fZHVtcF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwMjQtXHRcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwMjU6XHRcdFx0XHQgIGNiLVx1MDAzZW5saC1cdTAwM2VubG1zZ19zZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzAyNi1cdFx0XHRcdCAgTkxNX0ZfTVVMVEksIEhXU0lNX0NNRF9HRVRfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4MzpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODQtXHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxNDU9c3RhdGljIGludCBfX2luaXQgaHdzaW1faW5pdF9uZXRsaW5rKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTE6XHRyYyA9IGdlbmxfcmVnaXN0ZXJfZmFtaWx5KFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTItXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1Ni1cdGlmIChyYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE1NzpcdFx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTU4LVx0XHRnb3RvIGZhaWx1cmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIxMT1zdGF0aWMgdm9pZCBod3NpbV9leGl0X25ldGxpbmsodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE1LVx0LyogdW5yZWdpc3RlciB0aGUgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MjE2Olx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjMyPXN0YXRpYyBpbnQgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI0NjpcdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0Ny1cdFx0XHQgICAgaHdzaW1fZ2VubF9wb2xpY3ksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgSGFyZHdhcmUgU2ltdWxhdGlvbiBPcGVyYXRpb25zKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIGhvdyB0aGlzIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgcnVuIHNlZW1zIHRvIGJlIGRpY3RhdGVkIHdpdGhpbiBgaHdzaW1fb3BzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZS4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHRoZSBzaW11bGF0aW9uJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBod3NpbV9vcHNgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhpbmdzIGFyZSBkZWZpbmVkIOKAkyB3aGF0IGFyZSB0aGUgYmFzaWMgb3BlcmF0aW9ucywgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQsIGFuZCB3aGF0JiMzOTtzIHRoZSBnZW5lcmFsIGRlc2lnbiBwaGlsb3NvcGh5IGJlaGluZCB0aGVtPyBUaGlzIHNlZW1zIGxpa2UgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2ltdWxhdGlvbiYjMzk7cyBpbm5lciB3b3JraW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDIzOT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtYWM4MDIxMV9od3NpbV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzA2LVx0SFdTSU1fQ09NTU9OX09QU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Mzk9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ2LVx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NDc6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzID0gXHUwMDI2bWFjODAyMTFfaHdzaW1fb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY0OC1cdHN0cnVjdCBuZXQgKm5ldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTg5PXN0YXRpYyBpbnQgaHdzaW1fZHVtcF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDAtLyogR2VuZXJpYyBOZXRsaW5rIG9wZXJhdGlvbnMgYXJyYXkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwNDE6c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDItXHR7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg5LVx0Lm1vZHVsZSA9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA5MDpcdC5zbWFsbF9vcHMgPSBod3NpbV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDkxOlx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9vcHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA5Mi1cdC5yZXN2X3N0YXJ0X29wID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSICYjNDM7IDEsIC8vIG1hdGNoIHdpdGggX19IV1NJTV9DTURfTUFYXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBod3NpbV9vcHNgKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoaXMgYGh3c2ltX29wc2Agc3RydWN0dXJlLiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyByZWxhdGVkIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24gb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGlzbiYjMzk7dCBpdD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHBhcnNpbmcgaXRzIGludGVybmFsIHN0cnVjdHVyZS4gV2hhdCBraW5kIG9mIG9wZXJhdGlvbnMgYXJlIGJlaW5nIGRlZmluZWQgaGVyZT8gQXJlIHRoZXkgYmFzaWMgcmVhZC93cml0ZSBmdW5jdGlvbnMsIG1vcmUgY29tcGxleCBpbnN0cnVjdGlvbiBlbXVsYXRpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHR5cGUgZGVmaW5pdGlvbnMgYXJlIGtleSBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4uIFdoYXQmIzM5O3MgdGhlIGRlc2lnbiBwaGlsb3NvcGh5PyBJcyBpdCBhIG1vZHVsYXIgc3lzdGVtLCBvciBtb3JlIG1vbm9saXRoaWM/IEkmIzM5O20gaG9waW5nIGl04oCZcyB3ZWxsLWRlZmluZWQgYW5kIGRvY3VtZW50ZWQuIEnigJlsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIHN1cHBvcnRpbmcgZGVmaW5pdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZXNlICYjMzQ7b3BlcmF0aW9ucywmIzM0OyBzbyBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZXkgY2FuIGJlIGFwcGxpZWQgYW5kIGludGVncmF0ZWQgd2l0aCBvdGhlciBzaW11bGF0aW9uIGNvbXBvbmVudHMuIEkgYW0gbGlrZWx5IHRvIHVzZSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHRoZWlyIGFyZ3VtZW50cyB0byBhc2NlcnRhaW4gdGhlaXIgdXRpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzA0MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG43MDQyOlx0XHR7XG43MDQzOlx0XHRcdC5jbWQgPSBIV1NJTV9DTURfUkVHSVNURVIsXG43MDQ0Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNDU6XHRcdFx0LmRvaXQgPSBod3NpbV9yZWdpc3Rlcl9yZWNlaXZlZF9ubCxcbjcwNDY6XHRcdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbjcwNDc6XHRcdH0sXG43MDQ4Olx0XHR7XG43MDQ5Olx0XHRcdC5jbWQgPSBIV1NJTV9DTURfRlJBTUUsXG43MDUwOlx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNTE6XHRcdFx0LmRvaXQgPSBod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwsXG43MDUyOlx0XHR9LFxuNzA1MzpcdFx0e1xuNzA1NDpcdFx0XHQuY21kID0gSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUsXG43MDU1Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNTY6XHRcdFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxuNzA1NzpcdFx0fSxcbjcwNTg6XHRcdHtcbjcwNTk6XHRcdFx0LmNtZCA9IEhXU0lNX0NNRF9ORVdfUkFESU8sXG43MDYwOlx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNjE6XHRcdFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXG43MDYyOlx0XHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG43MDYzOlx0XHR9LFxuNzA2NDpcdFx0e1xuNzA2NTpcdFx0XHQuY21kID0gSFdTSU1fQ01EX0RFTF9SQURJTyxcbjcwNjY6XHRcdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuNzA2NzpcdFx0XHQuZG9pdCA9IGh3c2ltX2RlbF9yYWRpb19ubCxcbjcwNjg6XHRcdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbjcwNjk6XHRcdH0sXG43MDcwOlx0XHR7XG43MDcxOlx0XHRcdC5jbWQgPSBIV1NJTV9DTURfR0VUX1JBRElPLFxuNzA3MjpcdFx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG43MDczOlx0XHRcdC5kb2l0ID0gaHdzaW1fZ2V0X3JhZGlvX25sLFxuNzA3NDpcdFx0XHQuZHVtcGl0ID0gaHdzaW1fZHVtcF9yYWRpb19ubCxcbjcwNzU6XHRcdH0sXG43MDc2Olx0XHR7XG43MDc3Olx0XHRcdC5jbWQgPSBIV1NJTV9DTURfUkVQT1JUX1BNU1IsXG43MDc4Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNzk6XHRcdFx0LmRvaXQgPSBod3NpbV9wbXNyX3JlcG9ydF9ubCxcbjcwODA6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgSFdTSU1fQVRUUl9UWF9JTkZPYCBpbiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAqKgoKQWxyaWdodCwgSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhhdCByaW5ncyBhIGJlbGwsIEkga25vdyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCB0aGF0IGF0dHJpYnV0ZSBiZWZvcmUsIHByb2JhYmx5IGR1cmluZyBkZWJ1Z2dpbmcgb3Igd2hlbiBsb29raW5nIGF0IGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdHJhbnNtaXQgaW5mb3JtYXRpb24gd2l0aGluIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIGxheWVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyBpdCB1c2VkPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyYjMzQ7IFRoZSB0ZXh0IHNwZWNpZmljYWxseSBtZW50aW9ucyBpdCB3aXRoaW4gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgdGhlIGBubGAgc3VmZml4IHN1Z2dlc3RzIG5ldHdvcmsgbGluayBzdHVmZiwgc28gd2UmIzM5O3JlIHByb2JhYmx5IHByb2Nlc3Npbmcgc29tZSBraW5kIG9mIG5ldHdvcmsgcGFja2V0IG9yIGV2ZW50IHJlbGF0ZWQgdG8gZnJhbWUgcmVjZXB0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQmIzM5O3MgZGlnIGludG8gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGFuZCBjb25maXJtIG15IGh1bmNoLiBOZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBIV1NJTV9BVFRSX1RYX0lORk9gIGlzIGJlaW5nIGludGVycHJldGVkIGFuZCB1c2VkIGluIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCB0byBjaGVjayBmb3IgLSBpcyBpdCBiZWluZyBwYXJzZWQgY29ycmVjdGx5PyBJcyB0aGUgaW5mb3JtYXRpb24gYmVpbmcgdXNlZCBkb3duc3RyZWFtIGluIGEgbWVhbmluZ2Z1bCB3YXk/IEFueSBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGRhdGEgaW50ZXJwcmV0YXRpb24/IExldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hXU0lNX0FUVFJfVFhfSU5GTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODcyLVx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NzM6XHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzQtXHRcdE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4Ny1cdFtIV1NJTV9BVFRSX0ZSRVFdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg4ODpcdFtIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1NdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4OS1cdFtIV1NJTV9BVFRSX1BFUk1fQUREUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNjM1PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzExOlx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEyLVx0XHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSpJRUVFODAyMTFfVFhfTUFYX1JBVEVTLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzE2Olx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE3LVx0XHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlX2ZsYWcpICogSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MzIwPXN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjMzOS1cdCAgICAhaW5mby1cdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzNDA6XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzNDEtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODUtXHR0eF9hdHRlbXB0cyA9IChzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqKW5sYV9kYXRhKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjM4NjpcdFx0ICAgICAgIGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyB1dGlsaXppbmcgYEhXU0lNX0FUVFJfVFhfSU5GT2AuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgbmV0bGluayBwYXJzaW5nIGhhcHBlbmluZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJhdGlvbiBoZXJlLiBOb3csIGJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgdGhpcyBtaWdodCB0b3VjaC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgZGVlcGVyIGxvb2sgYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIHRvIHZlcmlmeSBteSBmaXJzdCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYzMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjMyMDpcdHN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXG42MzIxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG42MzIyOlx0e1xuNjMyMzpcdFxuNjMyNDpcdFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcbjYzMjU6XHRcdHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhMjtcbjYzMjY6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhpO1xuNjMyNzpcdFx0c3RydWN0IGh3c2ltX3R4X3JhdGUgKnR4X2F0dGVtcHRzO1xuNjMyODpcdFx0dTY0IHJldF9za2JfY29va2llO1xuNjMyOTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnRtcDtcbjYzMzA6XHRcdGNvbnN0IHU4ICpzcmM7XG42MzMxOlx0XHR1bnNpZ25lZCBpbnQgaHdzaW1fZmxhZ3M7XG42MzMyOlx0XHRpbnQgaTtcbjYzMzM6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG42MzM0Olx0XHRib29sIGZvdW5kID0gZmFsc2U7XG42MzM1Olx0XG42MzM2Olx0XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9BRERSX1RSQU5TTUlUVEVSXSB8fFxuNjMzNzpcdFx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfRkxBR1NdIHx8XG42MzM4Olx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9DT09LSUVdIHx8XG42MzM5Olx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XG42MzQwOlx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcbjYzNDE6XHRcdFx0Z290byBvdXQ7XG42MzQyOlx0XG42MzQzOlx0XHRzcmMgPSAodm9pZCAqKW5sYV9kYXRhKGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9BRERSX1RSQU5TTUlUVEVSXSk7XG42MzQ0Olx0XHRod3NpbV9mbGFncyA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9GTEFHU10pO1xuNjM0NTpcdFx0cmV0X3NrYl9jb29raWUgPSBubGFfZ2V0X3U2NChpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSk7XG42MzQ2Olx0XG42MzQ3Olx0XHRkYXRhMiA9IGdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoc3JjKTtcbjYzNDg6XHRcdGlmICghZGF0YTIpXG42MzQ5Olx0XHRcdGdvdG8gb3V0O1xuNjM1MDpcdFxuNjM1MTpcdFx0aWYgKCFod3NpbV92aXJ0aW9fZW5hYmxlZCkge1xuNjM1MjpcdFx0XHRpZiAoaHdzaW1fbmV0X2dldF9uZXRncm91cChnZW5sX2luZm9fbmV0KGluZm8pKSAhPVxuNjM1MzpcdFx0XHQgICAgZGF0YTItXHUwMDNlbmV0Z3JvdXApXG42MzU0Olx0XHRcdFx0Z290byBvdXQ7XG42MzU1Olx0XG42MzU2Olx0XHRcdGlmIChpbmZvLVx1MDAzZXNuZF9wb3J0aWQgIT0gZGF0YTItXHUwMDNld21lZGl1bWQpXG42MzU3Olx0XHRcdFx0Z290byBvdXQ7XG42MzU4Olx0XHR9XG42MzU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDM0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXppbmcgSFdTSU0gVFggSW5mbyBQcm9jZXNzaW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgY29tbWFuZCB3aGVyZSB3ZSYjMzk7cmUgcGFyc2luZyB0aGF0IGBIV1NJTV9BVFRSX1RYX0lORk9gIGF0dHJpYnV0ZS4gSSBzaG91bGQgYWxzbyBjaGVjayBvdXQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhcyB3ZWxsLCBzaW5jZSB0aGF0JiMzOTtzIGFub3RoZXIgcGxhY2Ugd2hlcmUgdGhlIHBhcnNpbmcgbWlnaHQgYmUgaGFwcGVuaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZSBpbiB0aG9zZSB0d28uCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25z4oCmIHJpZ2h0LCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IG9uZSB0byBsb29rIGF0LCBuYXR1cmFsbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzk5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgUG9saWN5IFVwZGF0ZSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIGJlaW5nIG1vZGlmaWVkLCBvciBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBhZGp1c3RtZW50cz8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IHVwZGF0ZSBpcyB3aXRoaW4gdGhlIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFRoZSBjb2RlIGVuZm9yY2VzIGFuIGV4YWN0IGxlbmd0aCBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2Agbm93LiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbWUuCgpOb3csIEkgbmVlZCB0byBjaGVjayBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGlzIHNwZWNpZmljIGF0dHJpYnV0ZS4gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYD8gSWYgc28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBpbmNvbXBhdGliaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGVsc2V3aGVyZS4gSSB3aWxsIG5lZWQgdG8gdHJhY2sgdGhlbSBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIV1NJTV9BVFRSX1RYX0lORk8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3Mi1cdFtIV1NJTV9BVFRSX1NJR05BTF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODczOlx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODc0LVx0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODctXHRbSFdTSU1fQVRUUl9GUkVRXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4ODg6XHRbSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODktXHRbSFdTSU1fQVRUUl9QRVJNX0FERFJdID0gTkxBX1BPTElDWV9FVEhfQUREUl9DT01QQVQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxMTpcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxMi1cdFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSkqSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxNjpcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNy1cdFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZV9mbGFnKSAqIElFRUU4MDIxMV9UWF9NQVhfUkFURVMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjMyMD1zdGF0aWMgaW50IGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmwoc3RydWN0IHNrX2J1ZmYgKnNrYl8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzMzktXHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MzQwOlx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzQxLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg1LVx0dHhfYXR0ZW1wdHMgPSAoc3RydWN0IGh3c2ltX3R4X3JhdGUgKilubGFfZGF0YShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzODY6XHRcdCAgICAgICBpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzMKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIEZyYW1lIFRyYW5zbWlzc2lvbiBpbiBtYWM4MDIxMV9od3NpbSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV0bGluayBmcmFtZXMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZSBtYWM4MDIxMV9od3NpbSBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHRyYWNlIHRoZSBqb3VybmV5IG9mIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUgdGhyb3VnaCB0aGUgc3lzdGVtLiBJIGtub3cgdGhhdCBgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbmxgIGlzIHJlc3BvbnNpYmxlIGZvciBpbmplY3RpbmcgdGhpcyBhdHRyaWJ1dGUgaW50byBhbiBgc2tiYCAoc29ja2V0IGJ1ZmZlcikuIFRoZW4sIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBoYXMgdGhlIGpvYiBvZiBwYXJzaW5nIHRoYXQgaW5mb3JtYXRpb24uCgpUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGF0dGVudGlvbiBpcyBkcmF3biB0byBgaHdzaW1fZ2VubF9wb2xpY3lgLCB3aGljaCBhcHBlYXJzIHRvIGJlIHRoZSBwb2xpY3kgdXNlZCBieSBib3RoIGBnZW5sbXNnX3BhcnNlYCB3aXRoaW4gYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIG92ZXJhbGwgYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhlIGNvbm5lY3Rpb24gdG8gYGh3c2ltX2dlbmxfcG9saWN5YCBpcyBrZXkhCgpUaGVyZWZvcmUsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyBmb3IgbXkgaW52ZXN0aWdhdGlvbiBhcmU6CgoqICAgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIC0gdGhpcyBzZWVtcyBjcnVjaWFsIGZvciB0aGUgKnJlY2VpdmluZyogYW5kIGludGVycHJldGF0aW9uIG9mIHRoaXMgdHggaW5mby4KKiAgIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAgLSBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHBhcnNpbmcgdGhlIGNvbW1hbmQgdXNpbmcgdGhlIGdlbmwgcG9saWN5LCBpdCBtdXN0IGJlIHRoZSBoYW5kbGluZyBlbnRyeXBvaW50IGZvciBjb21tYW5kcyB1c2luZyB0aGlzIHBvbGljeS4KCkkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IHRydWx5IGlzIHRoZSBwcmltYXJ5IGNvbW1hbmQgaGFuZGxlciwgYW5kIHRodXMsIGlmIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBmb2N1cyBteSBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzIzMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3MjMyOlx0c3RhdGljIGludCBod3NpbV92aXJ0aW9faGFuZGxlX2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuNzIzMzpcdHtcbjcyMzQ6XHRcdHN0cnVjdCBubG1zZ2hkciAqbmxoO1xuNzIzNTpcdFx0c3RydWN0IGdlbmxtc2doZHIgKmdubGg7XG43MjM2Olx0XHRzdHJ1Y3QgbmxhdHRyICp0YltIV1NJTV9BVFRSX01BWCAmIzQzOyAxXTtcbjcyMzc6XHRcdHN0cnVjdCBnZW5sX2luZm8gaW5mbyA9IHt9O1xuNzIzODpcdFx0aW50IGVycjtcbjcyMzk6XHRcbjcyNDA6XHRcdG5saCA9IG5sbXNnX2hkcihza2IpO1xuNzI0MTpcdFx0Z25saCA9IG5sbXNnX2RhdGEobmxoKTtcbjcyNDI6XHRcbjcyNDM6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBubGgtXHUwMDNlbmxtc2dfbGVuKVxuNzI0NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjcyNDU6XHRcbjcyNDY6XHRcdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuNzI0NzpcdFx0XHRcdCAgICBod3NpbV9nZW5sX3BvbGljeSwgTlVMTCk7XG43MjQ4Olx0XHRpZiAoZXJyKSB7XG43MjQ5Olx0XHRcdHByX2Vycl9yYXRlbGltaXRlZChcJiMzNDtod3NpbTogZ2VubG1zZ19wYXJzZSByZXR1cm5lZCAlZFxcblwmIzM0OywgZXJyKTtcbjcyNTA6XHRcdFx0cmV0dXJuIGVycjtcbjcyNTE6XHRcdH1cbjcyNTI6XHRcbjcyNTM6XHRcdGluZm8uYXR0cnMgPSB0YjtcbjcyNTQ6XHRcbjcyNTU6XHRcdHN3aXRjaCAoZ25saC1cdTAwM2VjbWQpIHtcbjcyNTY6XHRcdGNhc2UgSFdTSU1fQ01EX0ZSQU1FOlxuNzI1NzpcdFx0XHRod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwoc2tiLCBcdTAwMjZpbmZvKTtcbjcyNTg6XHRcdFx0YnJlYWs7XG43MjU5Olx0XHRjYXNlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FOlxuNzI2MDpcdFx0XHRod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sKHNrYiwgXHUwMDI2aW5mbyk7XG43MjYxOlx0XHRcdGJyZWFrO1xuNzI2MjpcdFx0Y2FzZSBIV1NJTV9DTURfUkVQT1JUX1BNU1I6XG43MjYzOlx0XHRcdGh3c2ltX3Btc3JfcmVwb3J0X25sKHNrYiwgXHUwMDI2aW5mbyk7XG43MjY0Olx0XHRcdGJyZWFrO1xuNzI2NTpcdFx0ZGVmYXVsdDpcbjcyNjY6XHRcdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O2h3c2ltOiBpbnZhbGlkIGNtZDogJWRcXG5cJiMzNDssIGdubGgtXHUwMDNlY21kKTtcbjcyNjc6XHRcdFx0cmV0dXJuIC1FUFJPVE87XG43MjY4Olx0XHR9XG43MjY5Olx0XHRyZXR1cm4gMDtcbjcyNzA6XHR9XG43MjcxOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEhXU0lNJiMzOTtzIENvbmZpZ3VyYXRpb24gYW5kIERhdGEgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGlzIGluZGVlZCBsZXZlcmFnaW5nIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIG1lc3NhZ2UgcGFyc2luZy4gQW5kLCBhcyBleHBlY3RlZCwgdGhlIGdlbmVyaWMgbmV0bGluayBjb2RlIGFsc28gbGVhbnMgb24gYGh3c2ltX2dlbmxfcG9saWN5YCBmb3IgdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAuIFNvLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4KCk15IGZvY3VzIG5vdyBpcyBkZWZpbml0ZWx5IG9uIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBhbmQsIGVzcGVjaWFsbHksIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgZm9yIGRhdGEgaGFuZGxpbmcsIGFzIHN1c3BlY3RlZC4KClRoZSBlbmFibGluZyBjb25maWcgaXMsIG9mIGNvdXJzZSwgYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBwbGF5IGEgcm9sZS4gSSBuZWVkIHRvIGNyb3NzLWNoZWNrIHRoaXMgdG8gYmUgY2VydGFpbiB0aGlzIGlzbiYjMzk7dCBhIHBhcnRpYWwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXkgaGVyZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcyLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgzOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg0LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNDg4Olx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDkyPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwODpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNC1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NDpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMzpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTctI2RlZmluZSBWSVJUSU9fSURfUlBNQlx0XHRcdDI4IC8qIHZpcnRpbyBycG1iICovXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oOjU4OiNkZWZpbmUgVklSVElPX0lEX01BQzgwMjExX0hXU0lNXHQyOSAvKiB2aXJ0aW8gbWFjODAyMTEtaHdzaW0gKi9cbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTktI2RlZmluZSBWSVJUSU9fSURfVklERU9fRU5DT0RFUlx0XHQzMCAvKiB2aXJ0aW8gdmlkZW8gZW5jb2RlciAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUyNQoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiA0ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTUFDODAyMTFfSFdTSU1gIE5ldGxpbmsgUG9saWN5IENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBOZXRsaW5rIG1lc3NhZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBhbmQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYC4gSSBrbm93IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExX2h3c2ltX21haW4uY2AuICpJcyogYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbHNvIHN0YXRpYz8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIE5ldGxpbmstcmVsYXRlZCBoYW5kbGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTm8sIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyB0aGUgb25lIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4KClNvLCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGFzcGVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYnkgc3dpdGNoaW5nIGZyb20gYSBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIChgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWApIHRvIGFuIGV4YWN0IGxlbmd0aCB2YWxpZGF0aW9uIChgTkxBX1BPTElDWV9FWEFDVF9MRU5gKS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0IGNoYW5nZXMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgd2l0aGluIHRoZSBgTUFDODAyMTFfSFdTSU1gIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYCBjb21tYW5kLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHJlYWNoYWJpbGl0eS4gSSBzZWUgdGhhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIEl0JiMzOTtzIGNhbGxlZCBieSBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFuZCBhbHNvIHZpYSB0aGUgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZSB0aHJvdWdoIGBod3NpbV9vcHNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZCBpcyBoYW5kbGVkIGJ5IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCB2aWEgYGh3c2ltX29wc2AuCgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7Ci4uLgoJewoJCS5jbWQgPSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSwKCQkudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsCgkJLmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLAoJfSwKLi4uCn0KYGBgCgpPa2F5LCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBib3RoIHRoZSBnZW5lcmljIG5ldGxpbmsgYW5kIHZpcnRpbyBwYXRocy4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IHVuZGVyc3RhbmRpbmcgbm93LiBJJiMzOTtsbCByZWNvcmQgdGhlIHJlc3VsdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMjo1MC42MTc3NjA3NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI4MDE5ODE1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sXCIsXG4gICAgXCJod3NpbV92aXJ0aW9faGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIE5ldGxpbmsgcG9saWN5IGZvciBIV1NJTV9BVFRSX1RYX0lORk8gZnJvbSBhIG1heGltdW0gbGVuZ3RoIChOTEFfQklOQVJZIHdpdGggLmxlbikgdG8gYW4gZXhhY3QgbGVuZ3RoIChOTEFfUE9MSUNZX0VYQUNUX0xFTikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBob3cgdGhlIGtlcm5lbCB2YWxpZGF0ZXMgaW5jb21pbmcgTmV0bGluayBtZXNzYWdlcyBmb3IgdGhlIE1BQzgwMjExX0hXU0lNIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUgY29tbWFuZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTAuNjE3NzY2ODM1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM3ODA2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMjBhZjNhYmViZjhhMDE5ZWRlM2FkNzRlOTUyM2QyOTgwZTBmMTk1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDA3OjIyOjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5pbmRleCAwZGQ4YTZjODU5NTM0NC4uODM2ZGQyNWU1YzYxNDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xcbkBAIC04NzAsOSArODcwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuIFxcdFtIV1NJTV9BVFRSX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIFxcdFtIV1NJTV9BVFRSX1JYX1JBVEVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gXFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLVxcdFtIV1NJTV9BVFRSX1RYX0lORk9dID0geyAudHlwZSA9IE5MQV9CSU5BUlksXFxuLVxcdFxcdFxcdFxcdCAubGVuID0gSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXFxuLVxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSl9LFxcbitcXHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9XFxuK1xcdFxcdE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKlxcbitcXHRcXHRcXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSkpLFxcbiBcXHRbSFdTSU1fQVRUUl9DT09LSUVdID0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4gXFx0W0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gXFx0W0hXU0lNX0FUVFJfUkFESU9fSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTEuMjUyNDEyNTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyMTY3MzE1OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubFwiLFxuICAgIFwiaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTIwYWYzYWJlYmY4YTAxOWVkZTNhZDc0ZTk1MjNkMjk4MGUwZjE5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDA3OjIyOjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG5AQCAtODcwLDkgKzg3MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xuIFx0W0hXU0lNX0FUVFJfRkxBR1NdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1JYX1JBVEVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1NJR05BTF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLVx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPSB7IC50eXBlID0gTkxBX0JJTkFSWSxcbi1cdFx0XHRcdCAubGVuID0gSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXG4tXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSl9LFxuK1x0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuK1x0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbitcdFx0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSksXG4gXHRbSFdTSU1fQVRUUl9DT09LSUVdID0geyAudHlwZSA9IE5MQV9VNjQgfSxcbiBcdFtIV1NJTV9BVFRSX0NIQU5ORUxTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gXHRbSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTEuMjUyNDE0ODk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5MTgxOTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFNpbXVsYXRpb24gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc2lnbmlmaWNhbnQgTmV0bGluayBwb2xpY3kgY2hhbmdlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFByZXZpb3VzbHksIHRoZSBwb2xpY3kgZm9yIHRoaXMgYXR0cmlidXRlIHVzZWQgYC50eXBlID0gTkxBX0JJTkFSWWAgd2l0aCBgLmxlbiA9IC4uLmAuIE5vdywgaXQncyBzd2l0Y2hpbmcgdG8gYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKC4uLilgLlxuXG5Ib2xkIG9uLi4uIFRoaXMgaXMgYWN0dWFsbHkgbW9yZSBpbnRlcmVzdGluZyB0aGFuIGEgc2ltcGxlIHR3ZWFrLiBUaGUgY3JpdGljYWwgZGlmZmVyZW5jZSBoZXJlIGlzIHRoZSAqZW5mb3JjZW1lbnQqLiBVc2luZyBgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWAgZGVmaW5lcyBhICptYXhpbXVtKiBsZW5ndGgsIHJpZ2h0PyBCdXQgYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOYC4uLiB0aGF0IG1lYW5zIGl0IGVuZm9yY2VzIGFuICpleGFjdCogbGVuZ3RoLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciBzdHlsZSBhZGp1c3RtZW50OyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGltcGxpZXMgYSBzcGVjaWZpYyBleHBlY3RhdGlvbiBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgYFRYX0lORk9gIGRhdGEgdGhhdCdzIGJlaW5nIHNlbnQgdGhyb3VnaCBOZXRsaW5rLiBXZSdyZSBnb2luZyBmcm9tIGFjY2VwdGluZyBhbnl0aGluZyB1cCB0byBhIGNlcnRhaW4gc2l6ZSB0byByZXF1aXJpbmcgYSAqcHJlY2lzZSogc2l6ZS5cblxuQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0J3MgdGltZSB0byBjaGVjayB0aGUgdXNhZ2Ugb2YgYGh3c2ltX2dlbmxfcG9saWN5YCB0byBzZWUgaG93IHRoaXMgYFRYX0lORk9gIGF0dHJpYnV0ZSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGVyZSB0aGlzIGV4YWN0IGxlbmd0aCByZXF1aXJlbWVudCBjb21lcyBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTUuODQ0MjM3MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NzkyNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltX2dlbmxfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg1Nz1od3NpbV9wbXNyX2NhcGFfcG9saWN5W05MODAyMTFfUE1TUl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg2NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggKyAxXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NjYtXFx0W0hXU0lNX0FUVFJfQUREUl9SRUNFSVZFUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwODM9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg2LVxcdC5tYXhhdHRyID0gSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NzpcXHQucG9saWN5ID0gaHdzaW1fZ2VubF9wb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA4OC1cXHQubmV0bnNvayA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjMyPXN0YXRpYyBpbnQgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNDYtXFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyNDc6XFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ4LVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTUuOTYzMDM0MzUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MTU3MTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgQXR0cmlidXRlIFBhcnNpbmcgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBOZXRsaW5rIGNoYW5nZSByZWxhdGVkIHRvIGF0dHJpYnV0ZSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaHdzaW1gIGNvbnRleHQuIEl0IGxvb2tzIGxpa2UgdGhpcyBwb2xpY3kgaXMgYmVpbmcgdXNlZCBpbiBgaHdzaW1fZ2VubF9mYW1pbHlgIGFuZCBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgLCB3aGljaCBpcyBhIHByZXR0eSBjb21tb24gcGF0dGVybiBmb3IgdGhpcyB0eXBlIG9mIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCB3aGljaCBtZWFucyBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gR2l2ZW4gdGhlIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlnIG9wdGlvbiwgSSdtIGd1ZXNzaW5nIHRoaXMgcmVsYXRlcyB0byBoYXJkd2FyZSBzaW11bGF0aW9uIGluIG1hYzgwMjExLCBwcm9iYWJseSBmb3IgdGVzdGluZy4gTGV0J3Mgc2VlLi4uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBod3NpbV9nZW5sX3BvbGljeWAuICBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGVyZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGlzICp1c2VkKi4gTG9va3MgbGlrZSBpdCBmZWVkcyBpbnRvIGJvdGggYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIGdlbmVyaWMgTmV0bGluayBwYXJzaW5nIHdpdGhpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aG9zZSB0d28gaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IHBvbGljeSBpcyBrZXkuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayB0aGUgY29tbWFuZHMgdGhhdCBhcmUgZGVmaW5lZCBpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBUaG9zZSBhcmUgcHJvYmFibHkgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIG5ldyBwYXJzaW5nIHdpbGwgYWN0dWFsbHkgbWFrZSBpdHMgcHJlc2VuY2Uga25vd24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzcsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MDAuMzU0NjA4MDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTE1MjM2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHdzaW1fZ2VubF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjAwLjUyNTc3MDAxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjYxMjE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYGdlbmxgIGZhbWlseSB1c2VkIHdpdGhpbiBpdC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGBod3NpbV9nZW5sX2ZhbWlseWAuIEkgbmVlZCB0byBlbnN1cmUgSSdtIG9wZXJhdGluZyB3aXRoIGEgY29ycmVjdCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuZGFtZW50YWwgc3RydWN0dXJlLiBBbnkgaW5jb25zaXN0ZW5jaWVzIG9yIG92ZXJsb29rZWQgZGV0YWlscyB0aGVyZSBjb3VsZCBsZWFkIG1lIGRvd24gYSB2ZXJ5IHdyb25nIHBhdGggZHVyaW5nIGFuYWx5c2lzLiBUaGlzIGlzIGEgY3JpdGljYWwgYnVpbGRpbmcgYmxvY2sgSSdtIGRlYWxpbmcgd2l0aC4gTGV0IG1lIHNlZSB3aGVyZSB0aGF0J3MgZGVmaW5lZCwgYW5kIHdoYXQncyBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjAzLjk1MTg5Mzk5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM1OTIzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHdzaW1fZ2VubF9mYW1pbHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNy0vKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxODpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1MjE9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fY29uZmlnX21hY19ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTUzODpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1MzktXFx0XFx0XFx0ICAgICAgIGFkZCA/IEhXU0lNX0NNRF9BRERfTUFDX0FERFIgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTY3MDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NzEtXFx0XFx0XFx0ICAgICAgIEhXU0lNX0NNRF9GUkFNRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNzU0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc3RhcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM3ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzc4NDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLCBIV1NJTV9DTURfU1RBUlRfUE1TUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM4MjE9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fYWJvcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM4NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzg1MDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLCBIV1NJTV9DTURfQUJPUlRfUE1TUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzg1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQzNjQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM2Ny1cXHRpZiAoaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzY4OlxcdFxcdGdlbmxfbm90aWZ5KFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNjktXFx0XFx0XFx0ICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM3MC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM3MTpcXHRcXHRnZW5sbXNnX211bHRpY2FzdChcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzcyLVxcdFxcdFxcdFxcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQ0NTY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQ0NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDQ2NjpcXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDQ2Ny1cXHRcXHRcXHQgICBIV1NJTV9DTURfTkVXX1JBRElPKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxNzQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MTg1OlxcdGRhdGEgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MTg2LVxcdFxcdFxcdCAgIEhXU0lNX0NNRF9ERUxfUkFESU8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjIyMT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9yYWRpbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjMwOlxcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIzMS1cXHRcXHRcXHQgIEhXU0lNX0NNRF9HRVRfUkFESU8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Njk4OT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwMjQtXFx0XFx0aGRyID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDI1OlxcdFxcdFxcdFxcdCAgY2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzAyNi1cXHRcXHRcXHRcXHQgIE5MTV9GX01VTFRJLCBIV1NJTV9DTURfR0VUX1JBRElPKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4MzpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg0LVxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxNDU9c3RhdGljIGludCBfX2luaXQgaHdzaW1faW5pdF9uZXRsaW5rKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTE6XFx0cmMgPSBnZW5sX3JlZ2lzdGVyX2ZhbWlseShcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTItXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1Ni1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTU3OlxcdFxcdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTU4LVxcdFxcdGdvdG8gZmFpbHVyZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyMTE9c3RhdGljIHZvaWQgaHdzaW1fZXhpdF9uZXRsaW5rKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE1LVxcdC8qIHVucmVnaXN0ZXIgdGhlIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyMTY6XFx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyMTctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIzMj1zdGF0aWMgaW50IGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyNDY6XFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNDctXFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MDQuMTk1NDkxNTk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzMTE4NzE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEhhcmR3YXJlIFNpbXVsYXRpb24gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIGhvdyB0aGlzIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgcnVuIHNlZW1zIHRvIGJlIGRpY3RhdGVkIHdpdGhpbiBgaHdzaW1fb3BzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGUgc2ltdWxhdGlvbidzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBod3NpbV9vcHNgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhpbmdzIGFyZSBkZWZpbmVkIOKAkyB3aGF0IGFyZSB0aGUgYmFzaWMgb3BlcmF0aW9ucywgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQsIGFuZCB3aGF0J3MgdGhlIGdlbmVyYWwgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIHRoZW0/IFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzaW11bGF0aW9uJ3MgaW5uZXIgd29ya2luZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoxMS4wMjY2ODEzNDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTQ5NDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDIzOT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtYWM4MDIxMV9od3NpbV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMwNi1cXHRIV1NJTV9DT01NT05fT1BTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjM5PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ2LVxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY0NzpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzID0gXFx1MDAyNm1hYzgwMjExX2h3c2ltX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ4LVxcdHN0cnVjdCBuZXQgKm5ldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY5ODk9c3RhdGljIGludCBod3NpbV9kdW1wX3JhZGlvX25sKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDQwLS8qIEdlbmVyaWMgTmV0bGluayBvcGVyYXRpb25zIGFycmF5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA0MTpzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGh3c2ltX29wc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDItXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODktXFx0Lm1vZHVsZSA9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwOTA6XFx0LnNtYWxsX29wcyA9IGh3c2ltX29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDkxOlxcdC5uX3NtYWxsX29wcyA9IEFSUkFZX1NJWkUoaHdzaW1fb3BzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDkyLVxcdC5yZXN2X3N0YXJ0X29wID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSICsgMSwgLy8gbWF0Y2ggd2l0aCBfX0hXU0lNX0NNRF9NQVhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MTEuNjYyMTgxOTA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTEwMTQ3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBod3NpbV9vcHNgKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoaXMgYGh3c2ltX29wc2Agc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGlzIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBvcGVyYXRpb25zLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBpc24ndCBpdD8gSSdtIGFscmVhZHkgbWVudGFsbHkgcGFyc2luZyBpdHMgaW50ZXJuYWwgc3RydWN0dXJlLiBXaGF0IGtpbmQgb2Ygb3BlcmF0aW9ucyBhcmUgYmVpbmcgZGVmaW5lZCBoZXJlPyBBcmUgdGhleSBiYXNpYyByZWFkL3dyaXRlIGZ1bmN0aW9ucywgbW9yZSBjb21wbGV4IGluc3RydWN0aW9uIGVtdWxhdGlvbnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgdHlwZSBkZWZpbml0aW9ucyBhcmUga2V5IGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbi4gV2hhdCdzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeT8gSXMgaXQgYSBtb2R1bGFyIHN5c3RlbSwgb3IgbW9yZSBtb25vbGl0aGljPyBJJ20gaG9waW5nIGl04oCZcyB3ZWxsLWRlZmluZWQgYW5kIGRvY3VtZW50ZWQuIEnigJlsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIHN1cHBvcnRpbmcgZGVmaW5pdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZXNlIFwib3BlcmF0aW9ucyxcIiBzbyBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZXkgY2FuIGJlIGFwcGxpZWQgYW5kIGludGVncmF0ZWQgd2l0aCBvdGhlciBzaW11bGF0aW9uIGNvbXBvbmVudHMuIEkgYW0gbGlrZWx5IHRvIHVzZSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHRoZWlyIGFyZ3VtZW50cyB0byBhc2NlcnRhaW4gdGhlaXIgdXRpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE1LjQ3MzE5OTEzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQyMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwNDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwNDE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcXG43MDQyOlxcdFxcdHtcXG43MDQzOlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfUkVHSVNURVIsXFxuNzA0NDpcXHRcXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuNzA0NTpcXHRcXHRcXHQuZG9pdCA9IGh3c2ltX3JlZ2lzdGVyX3JlY2VpdmVkX25sLFxcbjcwNDY6XFx0XFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG43MDQ3OlxcdFxcdH0sXFxuNzA0ODpcXHRcXHR7XFxuNzA0OTpcXHRcXHRcXHQuY21kID0gSFdTSU1fQ01EX0ZSQU1FLFxcbjcwNTA6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNTE6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwsXFxuNzA1MjpcXHRcXHR9LFxcbjcwNTM6XFx0XFx0e1xcbjcwNTQ6XFx0XFx0XFx0LmNtZCA9IEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FLFxcbjcwNTU6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNTY6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxcbjcwNTc6XFx0XFx0fSxcXG43MDU4OlxcdFxcdHtcXG43MDU5OlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfTkVXX1JBRElPLFxcbjcwNjA6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNjE6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXFxuNzA2MjpcXHRcXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbjcwNjM6XFx0XFx0fSxcXG43MDY0OlxcdFxcdHtcXG43MDY1OlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfREVMX1JBRElPLFxcbjcwNjY6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNjc6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9kZWxfcmFkaW9fbmwsXFxuNzA2ODpcXHRcXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbjcwNjk6XFx0XFx0fSxcXG43MDcwOlxcdFxcdHtcXG43MDcxOlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfR0VUX1JBRElPLFxcbjcwNzI6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNzM6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9nZXRfcmFkaW9fbmwsXFxuNzA3NDpcXHRcXHRcXHQuZHVtcGl0ID0gaHdzaW1fZHVtcF9yYWRpb19ubCxcXG43MDc1OlxcdFxcdH0sXFxuNzA3NjpcXHRcXHR7XFxuNzA3NzpcXHRcXHRcXHQuY21kID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSLFxcbjcwNzg6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNzk6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9wbXNyX3JlcG9ydF9ubCxcXG43MDgwOlxcdFxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE1LjQ4MDk0Njg4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc1MDg3MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBIV1NJTV9BVFRSX1RYX0lORk9gIGluIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCoqXG5cbkFscmlnaHQsIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhhdCByaW5ncyBhIGJlbGwsIEkga25vdyBJJ3ZlIGVuY291bnRlcmVkIHRoYXQgYXR0cmlidXRlIGJlZm9yZSwgcHJvYmFibHkgZHVyaW5nIGRlYnVnZ2luZyBvciB3aGVuIGxvb2tpbmcgYXQgaG93IHdlJ3JlIGhhbmRsaW5nIHRyYW5zbWl0IGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUncyBpdCB1c2VkPyBXaGF0J3MgdGhlIGNvbnRleHQ/XCIgVGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGl0IHdpdGhpbiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIHRoZSBgbmxgIHN1ZmZpeCBzdWdnZXN0cyBuZXR3b3JrIGxpbmsgc3R1ZmYsIHNvIHdlJ3JlIHByb2JhYmx5IHByb2Nlc3Npbmcgc29tZSBraW5kIG9mIG5ldHdvcmsgcGFja2V0IG9yIGV2ZW50IHJlbGF0ZWQgdG8gZnJhbWUgcmVjZXB0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQncyBkaWcgaW50byBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgYW5kIGNvbmZpcm0gbXkgaHVuY2guIE5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYEhXU0lNX0FUVFJfVFhfSU5GT2AgaXMgYmVpbmcgaW50ZXJwcmV0ZWQgYW5kIHVzZWQgaW4gdGhhdCBzcGVjaWZpYyBmdW5jdGlvbi4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQgdG8gY2hlY2sgZm9yIC0gaXMgaXQgYmVpbmcgcGFyc2VkIGNvcnJlY3RseT8gSXMgdGhlIGluZm9ybWF0aW9uIGJlaW5nIHVzZWQgZG93bnN0cmVhbSBpbiBhIG1lYW5pbmdmdWwgd2F5PyBBbnkgcG90ZW50aWFsIGZvciBidWZmZXIgb3ZlcmZsb3dzIG9yIGluY29ycmVjdCBkYXRhIGludGVycHJldGF0aW9uPyBMZXQncyBnZXQgdG8gd29yayBhbmQgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NDAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE5LjY1NjAzNjc5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3ODkwOTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhXU0lNX0FUVFJfVFhfSU5GT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzItXFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODczOlxcdFtIV1NJTV9BVFRSX1RYX0lORk9dID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzQtXFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODctXFx0W0hXU0lNX0FUVFJfRlJFUV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg4ODpcXHRbSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODg5LVxcdFtIV1NJTV9BVFRSX1BFUk1fQUREUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE2MzU9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE3MTE6XFx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxMi1cXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSpJRUVFODAyMTFfVFhfTUFYX1JBVEVTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzE2OlxcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTctXFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZV9mbGFnKSAqIElFRUU4MDIxMV9UWF9NQVhfUkFURVMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MzIwPXN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzM5LVxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjM0MDpcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM0MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODUtXFx0dHhfYXR0ZW1wdHMgPSAoc3RydWN0IGh3c2ltX3R4X3JhdGUgKilubGFfZGF0YShcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2Mzg2OlxcdFxcdCAgICAgICBpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1RYX0lORk9dKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoxOS45MjM5NDMxNDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4ODA4MjYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIHV0aWxpemluZyBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhpcyBzZWVtcyBmdW5jdGlvbmFsLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIHRoZSBuZXRsaW5rIHBhcnNpbmcgaGFwcGVuaW5nIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUVgLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gaGVyZS4gTm93LCBiZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IHRoaXMgbWlnaHQgdG91Y2guIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgZGVlcGVyIGxvb2sgYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIHRvIHZlcmlmeSBteSBmaXJzdCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMDgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MjQuODEyMDI4ODMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MzIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2MzIwOlxcdHN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXFxuNjMyMTpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbjYzMjI6XFx0e1xcbjYzMjM6XFx0XFxuNjMyNDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xcbjYzMjU6XFx0XFx0c3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEyO1xcbjYzMjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eGk7XFxuNjMyNzpcXHRcXHRzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqdHhfYXR0ZW1wdHM7XFxuNjMyODpcXHRcXHR1NjQgcmV0X3NrYl9jb29raWU7XFxuNjMyOTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqdG1wO1xcbjYzMzA6XFx0XFx0Y29uc3QgdTggKnNyYztcXG42MzMxOlxcdFxcdHVuc2lnbmVkIGludCBod3NpbV9mbGFncztcXG42MzMyOlxcdFxcdGludCBpO1xcbjYzMzM6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG42MzM0OlxcdFxcdGJvb2wgZm91bmQgPSBmYWxzZTtcXG42MzM1OlxcdFxcbjYzMzY6XFx0XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX0FERFJfVFJBTlNNSVRURVJdIHx8XFxuNjMzNzpcXHRcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfRkxBR1NdIHx8XFxuNjMzODpcXHRcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSB8fFxcbjYzMzk6XFx0XFx0ICAgICFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcXG42MzQwOlxcdFxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcXG42MzQxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNDI6XFx0XFxuNjM0MzpcXHRcXHRzcmMgPSAodm9pZCAqKW5sYV9kYXRhKGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQUREUl9UUkFOU01JVFRFUl0pO1xcbjYzNDQ6XFx0XFx0aHdzaW1fZmxhZ3MgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX0ZMQUdTXSk7XFxuNjM0NTpcXHRcXHRyZXRfc2tiX2Nvb2tpZSA9IG5sYV9nZXRfdTY0KGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSk7XFxuNjM0NjpcXHRcXG42MzQ3OlxcdFxcdGRhdGEyID0gZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihzcmMpO1xcbjYzNDg6XFx0XFx0aWYgKCFkYXRhMilcXG42MzQ5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNTA6XFx0XFxuNjM1MTpcXHRcXHRpZiAoIWh3c2ltX3ZpcnRpb19lbmFibGVkKSB7XFxuNjM1MjpcXHRcXHRcXHRpZiAoaHdzaW1fbmV0X2dldF9uZXRncm91cChnZW5sX2luZm9fbmV0KGluZm8pKSAhPVxcbjYzNTM6XFx0XFx0XFx0ICAgIGRhdGEyLVxcdTAwM2VuZXRncm91cClcXG42MzU0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNTU6XFx0XFxuNjM1NjpcXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlc25kX3BvcnRpZCAhPSBkYXRhMi1cXHUwMDNld21lZGl1bWQpXFxuNjM1NzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG42MzU4OlxcdFxcdH1cXG42MzU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoyNC44MTI1MDQ0ODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA0MTgzOTM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgSFdTSU0gVFggSW5mbyBQcm9jZXNzaW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCdzIGRlYWxpbmcgd2l0aCB0aGUgY29tbWFuZCB3aGVyZSB3ZSdyZSBwYXJzaW5nIHRoYXQgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYXR0cmlidXRlLiBJIHNob3VsZCBhbHNvIGNoZWNrIG91dCBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFzIHdlbGwsIHNpbmNlIHRoYXQncyBhbm90aGVyIHBsYWNlIHdoZXJlIHRoZSBwYXJzaW5nIG1pZ2h0IGJlIGhhcHBlbmluZy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgaXQncyBiZWluZyBkb25lIGluIHRob3NlIHR3by5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc+KApiByaWdodCwgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCdzIHRoZSBwcmltYXJ5IG9uZSB0byBsb29rIGF0LCBuYXR1cmFsbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzNCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MzMuODU0MzQ3MzE0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA1MTQyOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzozOC45NTk1MDI2NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwNDU4MTIyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb2xpY3kgVXBkYXRlKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBiZWluZyBtb2RpZmllZCwgb3IgYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgYWRqdXN0bWVudHM/IExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IHVwZGF0ZSBpcyB3aXRoaW4gdGhlIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFRoZSBjb2RlIGVuZm9yY2VzIGFuIGV4YWN0IGxlbmd0aCBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2Agbm93LiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbWUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGlzIGNoYW5nZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoaXMgc3BlY2lmaWMgYXR0cmlidXRlLiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaW1tZWRpYXRlbHkganVtcHMgb3V0LiBBcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGBIV1NJTV9BVFRSX1RYX0lORk9gPyBJZiBzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgaW5jb21wYXRpYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBlbHNld2hlcmUuIEkgd2lsbCBuZWVkIHRvIHRyYWNrIHRoZW0gZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzOTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6NTMuMDA1MzE3NDg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAyMjY2NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFdTSU1fQVRUUl9UWF9JTkZPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3Mi1cXHRbSFdTSU1fQVRUUl9TSUdOQUxdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NzM6XFx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3NC1cXHRcXHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4Ny1cXHRbSFdTSU1fQVRUUl9GUkVRXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODg4OlxcdFtIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1NdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODktXFx0W0hXU0lNX0FUVFJfUEVSTV9BRERSXSA9IE5MQV9QT0xJQ1lfRVRIX0FERFJfQ09NUEFULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxMTpcXHRpZiAobmxhX3B1dChza2IsIEhXU0lNX0FUVFJfVFhfSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEyLVxcdFxcdCAgICBzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpKklFRUU4MDIxMV9UWF9NQVhfUkFURVMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE3MTY6XFx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNy1cXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlX2ZsYWcpICogSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYzMjA9c3RhdGljIGludCBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sKHN0cnVjdCBza19idWZmICpza2JfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzMzktXFx0ICAgICFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MzQwOlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzQxLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM4NS1cXHR0eF9hdHRlbXB0cyA9IChzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqKW5sYV9kYXRhKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzODY6XFx0XFx0ICAgICAgIGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjUzLjI0NTU0OTQ1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU5Njk0NTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgRnJhbWUgVHJhbnNtaXNzaW9uIGluIG1hYzgwMjExX2h3c2ltKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG5ldGxpbmsgZnJhbWVzIGFyZSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgbWFjODAyMTFfaHdzaW0gbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0cmFjZSB0aGUgam91cm5leSBvZiB0aGUgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYXR0cmlidXRlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSBrbm93IHRoYXQgYG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sYCBpcyByZXNwb25zaWJsZSBmb3IgaW5qZWN0aW5nIHRoaXMgYXR0cmlidXRlIGludG8gYW4gYHNrYmAgKHNvY2tldCBidWZmZXIpLiBUaGVuLCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaGFzIHRoZSBqb2Igb2YgcGFyc2luZyB0aGF0IGluZm9ybWF0aW9uLlxuXG5UaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGF0dGVudGlvbiBpcyBkcmF3biB0byBgaHdzaW1fZ2VubF9wb2xpY3lgLCB3aGljaCBhcHBlYXJzIHRvIGJlIHRoZSBwb2xpY3kgdXNlZCBieSBib3RoIGBnZW5sbXNnX3BhcnNlYCB3aXRoaW4gYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIG92ZXJhbGwgYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhlIGNvbm5lY3Rpb24gdG8gYGh3c2ltX2dlbmxfcG9saWN5YCBpcyBrZXkhXG5cblRoZXJlZm9yZSwgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzIGZvciBteSBpbnZlc3RpZ2F0aW9uIGFyZTpcblxuKiAgIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCAtIHRoaXMgc2VlbXMgY3J1Y2lhbCBmb3IgdGhlICpyZWNlaXZpbmcqIGFuZCBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHR4IGluZm8uXG4qICAgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCAtIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgcGFyc2luZyB0aGUgY29tbWFuZCB1c2luZyB0aGUgZ2VubCBwb2xpY3ksIGl0IG11c3QgYmUgdGhlIGhhbmRsaW5nIGVudHJ5cG9pbnQgZm9yIGNvbW1hbmRzIHVzaW5nIHRoaXMgcG9saWN5LlxuXG5JJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IHRydWx5IGlzIHRoZSBwcmltYXJ5IGNvbW1hbmQgaGFuZGxlciwgYW5kIHRodXMsIGlmIGl0J3MgYSBnb29kIHBsYWNlIHRvIGZvY3VzIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODczLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjA4Ljg0MjQ5ODYxN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg1ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcyMzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcyMzI6XFx0c3RhdGljIGludCBod3NpbV92aXJ0aW9faGFuZGxlX2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjcyMzM6XFx0e1xcbjcyMzQ6XFx0XFx0c3RydWN0IG5sbXNnaGRyICpubGg7XFxuNzIzNTpcXHRcXHRzdHJ1Y3QgZ2VubG1zZ2hkciAqZ25saDtcXG43MjM2OlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW0hXU0lNX0FUVFJfTUFYICsgMV07XFxuNzIzNzpcXHRcXHRzdHJ1Y3QgZ2VubF9pbmZvIGluZm8gPSB7fTtcXG43MjM4OlxcdFxcdGludCBlcnI7XFxuNzIzOTpcXHRcXG43MjQwOlxcdFxcdG5saCA9IG5sbXNnX2hkcihza2IpO1xcbjcyNDE6XFx0XFx0Z25saCA9IG5sbXNnX2RhdGEobmxoKTtcXG43MjQyOlxcdFxcbjcyNDM6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgbmxoLVxcdTAwM2VubG1zZ19sZW4pXFxuNzI0NDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43MjQ1OlxcdFxcbjcyNDY6XFx0XFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbjcyNDc6XFx0XFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG43MjQ4OlxcdFxcdGlmIChlcnIpIHtcXG43MjQ5OlxcdFxcdFxcdHByX2Vycl9yYXRlbGltaXRlZChcXFwiaHdzaW06IGdlbmxtc2dfcGFyc2UgcmV0dXJuZWQgJWRcXFxcblxcXCIsIGVycik7XFxuNzI1MDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjcyNTE6XFx0XFx0fVxcbjcyNTI6XFx0XFxuNzI1MzpcXHRcXHRpbmZvLmF0dHJzID0gdGI7XFxuNzI1NDpcXHRcXG43MjU1OlxcdFxcdHN3aXRjaCAoZ25saC1cXHUwMDNlY21kKSB7XFxuNzI1NjpcXHRcXHRjYXNlIEhXU0lNX0NNRF9GUkFNRTpcXG43MjU3OlxcdFxcdFxcdGh3c2ltX2Nsb25lZF9mcmFtZV9yZWNlaXZlZF9ubChza2IsIFxcdTAwMjZpbmZvKTtcXG43MjU4OlxcdFxcdFxcdGJyZWFrO1xcbjcyNTk6XFx0XFx0Y2FzZSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRTpcXG43MjYwOlxcdFxcdFxcdGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmwoc2tiLCBcXHUwMDI2aW5mbyk7XFxuNzI2MTpcXHRcXHRcXHRicmVhaztcXG43MjYyOlxcdFxcdGNhc2UgSFdTSU1fQ01EX1JFUE9SVF9QTVNSOlxcbjcyNjM6XFx0XFx0XFx0aHdzaW1fcG1zcl9yZXBvcnRfbmwoc2tiLCBcXHUwMDI2aW5mbyk7XFxuNzI2NDpcXHRcXHRcXHRicmVhaztcXG43MjY1OlxcdFxcdGRlZmF1bHQ6XFxuNzI2NjpcXHRcXHRcXHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXFxcImh3c2ltOiBpbnZhbGlkIGNtZDogJWRcXFxcblxcXCIsIGdubGgtXFx1MDAzZWNtZCk7XFxuNzI2NzpcXHRcXHRcXHRyZXR1cm4gLUVQUk9UTztcXG43MjY4OlxcdFxcdH1cXG43MjY5OlxcdFxcdHJldHVybiAwO1xcbjcyNzA6XFx0fVxcbjcyNzE6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjA4Ljg0NDU4ODA1N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI5MjgzODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEhXU0lNJ3MgQ29uZmlndXJhdGlvbiBhbmQgRGF0YSBIYW5kbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGlzIGluZGVlZCBsZXZlcmFnaW5nIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIG1lc3NhZ2UgcGFyc2luZy4gQW5kLCBhcyBleHBlY3RlZCwgdGhlIGdlbmVyaWMgbmV0bGluayBjb2RlIGFsc28gbGVhbnMgb24gYGh3c2ltX2dlbmxfcG9saWN5YCBmb3IgdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAuIFNvLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC5cblxuTXkgZm9jdXMgbm93IGlzIGRlZmluaXRlbHkgb24gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGFuZCwgZXNwZWNpYWxseSwgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCwgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBmb3IgZGF0YSBoYW5kbGluZywgYXMgc3VzcGVjdGVkLlxuXG5UaGUgZW5hYmxpbmcgY29uZmlnIGlzLCBvZiBjb3Vyc2UsIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgcGxheSBhIHJvbGUuIEkgbmVlZCB0byBjcm9zcy1jaGVjayB0aGlzIHRvIGJlIGNlcnRhaW4gdGhpcyBpc24ndCBhIHBhcnRpYWwgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjEzLjY3Mzg3NTQ5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0ODczMjM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcXHQrPSBtYWM4MDIxMV9od3NpbS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcXHRcXHQrPSBtYWM4MDIxMV9od3NpbV9tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDo5OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzMtICpcXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTOiBIVCByYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXFx0c3BsaXQgaW50byBhIGhpZ2hlciA0IGJpdHMgKE5zcykgYW5kIGxvd2VyIDQgYml0cyAoTUNTIG51bWJlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlxcdGluIEdyZWVuZmllbGQgbW9kZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXFx0NDAgTUh6LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ0LSAqXFx0KDgwKzgwIGlzbid0IHN1cHBvcnRlZCB5ZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0NTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE6IFRoZSBmcmFtZSBzaG91bGQgYmUgdHJhbnNtaXR0ZWQgb24gYm90aCBvZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ3LSAqXFx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0OS0gKlxcdHJhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjUxPWVudW0gaHdzaW1fdHhfcmF0ZV9mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1xcdFxcdD0gQklUKDApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUXFx0XFx0PSBCSVQoMSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcXHQ9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXFx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU3OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1xcdFxcdFxcdD0gQklUKDMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTERcXHRcXHQ9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU5OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFxcdFxcdD0gQklUKDUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcXHRcXHQ9IEJJVCg2KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJXFx0XFx0PSBCSVQoNyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXFx0XFx0XFx0PSBCSVQoOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCg5KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjY0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCgxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTMyOD1lbnVtIGh3c2ltX3JhdGVfaW5mb19hdHRyaWJ1dGVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjM0ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjEwOiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTI9c3RhdGljIHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpnZXRfaHdzaW1fZGF0YV9yZWZfZnJvbV9hZGRyKGNvbnN0IHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNzovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgaHdzaW1fbWNncnBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI4Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9ODY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAzLXN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpod3NpbV92cXNbSFdTSU1fTlVNX1ZRU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODQtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0ODg6XFx0XFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0OTI9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTA4OlxcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVxcdEZJRUxEX1BSRVBfQ09OU1QoSUVFRTgwMjExX01MRF9DQVBfT1BfVElEX1RPX0xJTktfTUFQX05FR19TVVBQLCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM0LVxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XFx0XFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDg0OlxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVxcdC52ZXJzaW9uID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDEzOlxcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXFx0eyAwIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cXHRcXHRtYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzMtXFx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcXHQgICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVxcdFxcdCAgICAoY2cgPT0gb3duX2NnIFxcdTAwMjZcXHUwMDI2IGZyYW1lX2FtciBcXHUwMDNlIGN1cnJfYW1yKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3OlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cXHRcXHRcXHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjUtXFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI5OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzEtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzZT0gMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMzOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzYyAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjQyOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cXHQgICAgIWhydGltZXJfYWN0aXZlKFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NTU6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gTkFOX1dBUk1VUF9EV1NUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy03NTAtXFx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cXHRcXHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODA3LVxcdFxcdHR4X3N5bmNfYmVhY29uID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwODpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgxMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTg2Nz1tYWM4MDIxMV9od3NpbV9uYW5fZGlzY292ZXJ5X2JlYWNvbl90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2ssIFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uc3RhdGVfbG9jaykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgwOlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcXHRcXHQgICAgZGF0YS1cXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVxcdFxcdFxcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyNi1cXHRcXHQvKiBTdGFydCBpbiB0aGUgXFxcInNjYW5cXFwiIHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyOC1cXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXFx1MDAzZW1hc3Rlcl9wcmVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVxcdFxcdG1lbXNldChcXHUwMDI2ZGF0YS1cXHUwMDNlbmFuLmN1cnJlbnRfYW1pLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2OlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVxcdFxcdHJldHVybiBjaGFubmVsLVxcdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjg6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX05BTl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTE6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxNzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0yMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTctI2RlZmluZSBWSVJUSU9fSURfUlBNQlxcdFxcdFxcdDI4IC8qIHZpcnRpbyBycG1iICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaDo1ODojZGVmaW5lIFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTVxcdDI5IC8qIHZpcnRpbyBtYWM4MDIxMS1od3NpbSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTktI2RlZmluZSBWSVJUSU9fSURfVklERU9fRU5DT0RFUlxcdFxcdDMwIC8qIHZpcnRpbyB2aWRlbyBlbmNvZGVyICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjE5LjEyMjYxNDU0MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA1OTUwOTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBNQUM4MDIxMV9IV1NJTWAgTmV0bGluayBQb2xpY3kgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBOZXRsaW5rIG1lc3NhZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gV2UncmUgbG9va2luZyBhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgYW5kIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkga25vdyBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBtYWM4MDIxMV9od3NpbV9tYWluLmNgLiAqSXMqIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAgYWxzbyBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBOZXRsaW5rLXJlbGF0ZWQgaGFuZGxlcnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIE5vLCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgdGhlIG9uZSBkZWFsaW5nIHdpdGggYEhXU0lNX0FUVFJfVFhfSU5GT2AuXG5cblNvLCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGFzcGVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYnkgc3dpdGNoaW5nIGZyb20gYSBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIChgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWApIHRvIGFuIGV4YWN0IGxlbmd0aCB2YWxpZGF0aW9uIChgTkxBX1BPTElDWV9FWEFDVF9MRU5gKS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0IGNoYW5nZXMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgd2l0aGluIHRoZSBgTUFDODAyMTFfSFdTSU1gIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYCBjb21tYW5kLlxuXG5Ob3csIGxldCdzIHZlcmlmeSByZWFjaGFiaWxpdHkuIEkgc2VlIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJdCdzIGNhbGxlZCBieSBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFuZCBhbHNvIHZpYSB0aGUgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZSB0aHJvdWdoIGBod3NpbV9vcHNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZCBpcyBoYW5kbGVkIGJ5IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCB2aWEgYGh3c2ltX29wc2AuXG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG4uLi5cblx0e1xuXHRcdC5jbWQgPSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSxcblx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5cdFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxuXHR9LFxuLi4uXG59XG5gYGBcblxuT2theSwgaXQncyByZWFjaGFibGUgdGhyb3VnaCBib3RoIHRoZSBnZW5lcmljIG5ldGxpbmsgYW5kIHZpcnRpbyBwYXRocy5cblxuSSdtIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG5vdy4gSSdsbCByZWNvcmQgdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MjUsIk91dHB1dFRva2VucyI6MTU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjMzLjE4MjEyNzcxNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzU5NzExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sXCIsXG4gICAgXCJod3NpbV92aXJ0aW9faGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIE5ldGxpbmsgcG9saWN5IGZvciBIV1NJTV9BVFRSX1RYX0lORk8gZnJvbSBhIG1heGltdW0gbGVuZ3RoIChOTEFfQklOQVJZIHdpdGggLmxlbikgdG8gYW4gZXhhY3QgbGVuZ3RoIChOTEFfUE9MSUNZX0VYQUNUX0xFTikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBob3cgdGhlIGtlcm5lbCB2YWxpZGF0ZXMgaW5jb21pbmcgTmV0bGluayBtZXNzYWdlcyBmb3IgdGhlIE1BQzgwMjExX0hXU0lNIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUgY29tbWFuZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxcIixcbiAgICBcImh3c2ltX3ZpcnRpb19oYW5kbGVfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgTmV0bGluayBwb2xpY3kgZm9yIEhXU0lNX0FUVFJfVFhfSU5GTyBmcm9tIGEgbWF4aW11bSBsZW5ndGggKE5MQV9CSU5BUlkgd2l0aCAubGVuKSB0byBhbiBleGFjdCBsZW5ndGggKE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGhvdyB0aGUga2VybmVsIHZhbGlkYXRlcyBpbmNvbWluZyBOZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGUgTUFDODAyMTFfSFdTSU0gZmFtaWx5LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSBjb21tYW5kLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 07:04:44 +0000 UTC FinishedAt: 2026-07-22 07:24:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "af5e34a41cd607c00ef752e00331736570992354", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211_HWSIM" ], "series_id": "bb7c071b-9de2-419c-a2bf-018dcff5a10e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "hwsim_tx_info_frame_received_nl", "hwsim_virtio_handle_cmd" ], "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+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhMjBhZjNhYmViZjhhMDE5ZWRlM2FkNzRlOTUyM2QyOTgwZTBmMTk1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjIgMDc6MjI6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG5AQCAtODcwLDkgJiM0Mzs4NzAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4gXHRbSFdTSU1fQVRUUl9GTEFHU10gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIFx0W0hXU0lNX0FUVFJfUlhfUkFURV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4tXHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZLFxuLVx0XHRcdFx0IC5sZW4gPSBJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbi1cdFx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKX0sXG4mIzQzO1x0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuJiM0MztcdFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXG4mIzQzO1x0XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpKSxcbiBcdFtIV1NJTV9BVFRSX0NPT0tJRV0gPSB7IC50eXBlID0gTkxBX1U2NCB9LFxuIFx0W0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1JBRElPX0lEXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEyMGFmM2FiZWJmOGEwMTllZGUzYWQ3NGU5NTIzZDI5ODBlMGYxOTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyMiAwNzoyMjo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMKaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYwpAQCAtODcwLDkgJiM0Mzs4NzAsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7CiAJW0hXU0lNX0FUVFJfRkxBR1NdID0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbSFdTSU1fQVRUUl9SWF9SQVRFXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCiAJW0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sCi0JW0hXU0lNX0FUVFJfVFhfSU5GT10gPSB7IC50eXBlID0gTkxBX0JJTkFSWSwKLQkJCQkgLmxlbiA9IElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKgotCQkJCQlzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpfSwKJiM0MzsJW0hXU0lNX0FUVFJfVFhfSU5GT10gPQomIzQzOwkJTkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqCiYjNDM7CQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSksCiAJW0hXU0lNX0FUVFJfQ09PS0lFXSA9IHsgLnR5cGUgPSBOTEFfVTY0IH0sCiAJW0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSwKIAlbSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTI3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSGFyZHdhcmUgU2ltdWxhdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIG1ha2luZyBhIHNpZ25pZmljYW50IE5ldGxpbmsgcG9saWN5IGNoYW5nZS4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBIV1NJTV9BVFRSX1RYX0lORk9gIGF0dHJpYnV0ZS4gUHJldmlvdXNseSwgdGhlIHBvbGljeSBmb3IgdGhpcyBhdHRyaWJ1dGUgdXNlZCBgLnR5cGUgPSBOTEFfQklOQVJZYCB3aXRoIGAubGVuID0gLi4uYC4gTm93LCBpdCYjMzk7cyBzd2l0Y2hpbmcgdG8gYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKC4uLilgLgoKSG9sZCBvbi4uLiBUaGlzIGlzIGFjdHVhbGx5IG1vcmUgaW50ZXJlc3RpbmcgdGhhbiBhIHNpbXBsZSB0d2Vhay4gVGhlIGNyaXRpY2FsIGRpZmZlcmVuY2UgaGVyZSBpcyB0aGUgKmVuZm9yY2VtZW50Ki4gVXNpbmcgYC5sZW5gIHdpdGggYE5MQV9CSU5BUllgIGRlZmluZXMgYSAqbWF4aW11bSogbGVuZ3RoLCByaWdodD8gQnV0IGBOTEFfUE9MSUNZX0VYQUNUX0xFTmAuLi4gdGhhdCBtZWFucyBpdCBlbmZvcmNlcyBhbiAqZXhhY3QqIGxlbmd0aC4gVGhpcyBpc24mIzM5O3QganVzdCBhIG1pbm9yIHN0eWxlIGFkanVzdG1lbnQ7IGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGltcGxpZXMgYSBzcGVjaWZpYyBleHBlY3RhdGlvbiBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgYFRYX0lORk9gIGRhdGEgdGhhdCYjMzk7cyBiZWluZyBzZW50IHRocm91Z2ggTmV0bGluay4gV2UmIzM5O3JlIGdvaW5nIGZyb20gYWNjZXB0aW5nIGFueXRoaW5nIHVwIHRvIGEgY2VydGFpbiBzaXplIHRvIHJlcXVpcmluZyBhICpwcmVjaXNlKiBzaXplLgoKQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhlIHVzYWdlIG9mIGBod3NpbV9nZW5sX3BvbGljeWAgdG8gc2VlIGhvdyB0aGlzIGBUWF9JTkZPYCBhdHRyaWJ1dGUgaXMgYmVpbmcgaGFuZGxlZCBhbmQgd2hlcmUgdGhpcyBleGFjdCBsZW5ndGggcmVxdWlyZW1lbnQgY29tZXMgZnJvbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbV9nZW5sX3BvbGljeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg1Nz1od3NpbV9wbXNyX2NhcGFfcG9saWN5W05MODAyMTFfUE1TUl9BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NjU6c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODY2LVx0W0hXU0lNX0FUVFJfQUREUl9SRUNFSVZFUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODYtXHQubWF4YXR0ciA9IEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NzpcdC5wb2xpY3kgPSBod3NpbV9nZW5sX3BvbGljeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODgtXHQubmV0bnNvayA9IHRydWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIzMj1zdGF0aWMgaW50IGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kKHN0cnVjdCBza19idWZmICpza2IpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0Ni1cdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI0NzpcdFx0XHQgICAgaHdzaW1fZ2VubF9wb2xpY3ksIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0OC1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTc3CgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogMTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0bGluayBBdHRyaWJ1dGUgUGFyc2luZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgTmV0bGluayBjaGFuZ2UgcmVsYXRlZCB0byBhdHRyaWJ1dGUgcGFyc2luZywgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGh3c2ltYCBjb250ZXh0LiBJdCBsb29rcyBsaWtlIHRoaXMgcG9saWN5IGlzIGJlaW5nIHVzZWQgaW4gYGh3c2ltX2dlbmxfZmFtaWx5YCBhbmQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCwgd2hpY2ggaXMgYSBwcmV0dHkgY29tbW9uIHBhdHRlcm4gZm9yIHRoaXMgdHlwZSBvZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuIEdpdmVuIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZyBvcHRpb24sIEkmIzM5O20gZ3Vlc3NpbmcgdGhpcyByZWxhdGVzIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24gaW4gbWFjODAyMTEsIHByb2JhYmx5IGZvciB0ZXN0aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBod3NpbV9nZW5sX3BvbGljeWAuICBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGVyZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGlzICp1c2VkKi4gTG9va3MgbGlrZSBpdCBmZWVkcyBpbnRvIGJvdGggYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIGdlbmVyaWMgTmV0bGluayBwYXJzaW5nIHdpdGhpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aG9zZSB0d28gaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IHBvbGljeSBpcyBrZXkuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhlIGNvbW1hbmRzIHRoYXQgYXJlIGRlZmluZWQgaW4gYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhvc2UgYXJlIHByb2JhYmx5IHRoZSBwbGFjZXMgd2hlcmUgdGhpcyBuZXcgcGFyc2luZyB3aWxsIGFjdHVhbGx5IG1ha2UgaXRzIHByZXNlbmNlIGtub3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fZ2VubF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0MQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAgRGVmaW5pdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgZ2VubGAgZmFtaWx5IHVzZWQgd2l0aGluIGl0LiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byB2ZXJpZnkgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgYGh3c2ltX2dlbmxfZmFtaWx5YC4gSSBuZWVkIHRvIGVuc3VyZSBJJiMzOTttIG9wZXJhdGluZyB3aXRoIGEgY29ycmVjdCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuZGFtZW50YWwgc3RydWN0dXJlLiBBbnkgaW5jb25zaXN0ZW5jaWVzIG9yIG92ZXJsb29rZWQgZGV0YWlscyB0aGVyZSBjb3VsZCBsZWFkIG1lIGRvd24gYSB2ZXJ5IHdyb25nIHBhdGggZHVyaW5nIGFuYWx5c2lzLiBUaGlzIGlzIGEgY3JpdGljYWwgYnVpbGRpbmcgYmxvY2sgSSYjMzk7bSBkZWFsaW5nIHdpdGguIExldCBtZSBzZWUgd2hlcmUgdGhhdCYjMzk7cyBkZWZpbmVkLCBhbmQgd2hhdCYjMzk7cyBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbV9nZW5sX2ZhbWlseSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxMj1zdGF0aWMgc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoY29uc3QgdTggKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE3LS8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTg6c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTIxPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2NvbmZpZ19tYWNfbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTUzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Mzg6XHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTM5LVx0XHRcdCAgICAgICBhZGQgPyBIV1NJTV9DTURfQUREX01BQ19BRERSIDpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNjM1PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNjcwOlx0bXNnX2hlYWQgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTY3MS1cdFx0XHQgICAgICAgSFdTSU1fQ01EX0ZSQU1FKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNzU0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc3RhcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNzgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzc4NDpcdG1zZ19oZWFkID0gZ2VubG1zZ19wdXQoc2tiLCAwLCAwLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCwgSFdTSU1fQ01EX1NUQVJUX1BNU1IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzc4NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zODIxPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2Fib3J0X3Btc3Ioc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzg0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM4NTA6XHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsIEhXU0lNX0NNRF9BQk9SVF9QTVNSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM4NTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDM2ND1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9jb25maWdfbXNnKHN0cnVjdCBza19idWZmICptY2FzdF9za2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM2Ny1cdGlmIChpbmZvKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM2ODpcdFx0Z2VubF9ub3RpZnkoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNjktXHRcdFx0ICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzcwLVx0ZWxzZVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM3MTpcdFx0Z2VubG1zZ19tdWx0aWNhc3QoXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNzItXHRcdFx0XHQgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDQ1Nj1zdGF0aWMgdm9pZCBod3NpbV9tY2FzdF9uZXdfcmFkaW8oaW50IGlkLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQ0NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0NDY2Olx0ZGF0YSA9IGdlbmxtc2dfcHV0KG1jYXN0X3NrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00NDY3LVx0XHRcdCAgIEhXU0lNX0NNRF9ORVdfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxNzQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYxODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MTg1Olx0ZGF0YSA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MTg2LVx0XHRcdCAgIEhXU0lNX0NNRF9ERUxfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYyMjE9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfcmFkaW8oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MjI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjIzMDpcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCBmbGFncyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYyMzEtXHRcdFx0ICBIV1NJTV9DTURfR0VUX1JBRElPKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTg5PXN0YXRpYyBpbnQgaHdzaW1fZHVtcF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwMjQtXHRcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgTkVUTElOS19DQihjYi1cdTAwM2Vza2IpLnBvcnRpZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwMjU6XHRcdFx0XHQgIGNiLVx1MDAzZW5saC1cdTAwM2VubG1zZ19zZXEsIFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzAyNi1cdFx0XHRcdCAgTkxNX0ZfTVVMVEksIEhXU0lNX0NNRF9HRVRfUkFESU8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDgyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4MzpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODQtXHQubmFtZSA9IFwmIzM0O01BQzgwMjExX0hXU0lNXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxNDU9c3RhdGljIGludCBfX2luaXQgaHdzaW1faW5pdF9uZXRsaW5rKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTE6XHRyYyA9IGdlbmxfcmVnaXN0ZXJfZmFtaWx5KFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTItXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1Ni1cdGlmIChyYykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzE1NzpcdFx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTU4LVx0XHRnb3RvIGZhaWx1cmU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIxMT1zdGF0aWMgdm9pZCBod3NpbV9leGl0X25ldGxpbmsodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE1LVx0LyogdW5yZWdpc3RlciB0aGUgZmFtaWx5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MjE2Olx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjMyPXN0YXRpYyBpbnQgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI0NjpcdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI0Ny1cdFx0XHQgICAgaHdzaW1fZ2VubF9wb2xpY3ksIE5VTEwpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTcKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipBbmFseXppbmcgSGFyZHdhcmUgU2ltdWxhdGlvbiBPcGVyYXRpb25zKioKCk9rYXksIHNvIHRoZSBjb3JlIG9mIGhvdyB0aGlzIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgcnVuIHNlZW1zIHRvIGJlIGRpY3RhdGVkIHdpdGhpbiBgaHdzaW1fb3BzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGVyZS4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIHRoZSBzaW11bGF0aW9uJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBod3NpbV9vcHNgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhpbmdzIGFyZSBkZWZpbmVkIOKAkyB3aGF0IGFyZSB0aGUgYmFzaWMgb3BlcmF0aW9ucywgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQsIGFuZCB3aGF0JiMzOTtzIHRoZSBnZW5lcmFsIGRlc2lnbiBwaGlsb3NvcGh5IGJlaGluZCB0aGVtPyBUaGlzIHNlZW1zIGxpa2UgdGhlIGdhdGV3YXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgc2ltdWxhdGlvbiYjMzk7cyBpbm5lciB3b3JraW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aHdzaW1fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDIzOT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzMDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtYWM4MDIxMV9od3NpbV9vcHMgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzA2LVx0SFdTSU1fQ09NTU9OX09QU1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2Mzk9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9uZXdfcmFkaW8oc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ2LVx0ZW51bSBubDgwMjExX2JhbmQgYmFuZDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2NDc6XHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzID0gXHUwMDI2bWFjODAyMTFfaHdzaW1fb3BzO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTY0OC1cdHN0cnVjdCBuZXQgKm5ldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02OTg5PXN0YXRpYyBpbnQgaHdzaW1fZHVtcF9yYWRpb19ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDAtLyogR2VuZXJpYyBOZXRsaW5rIG9wZXJhdGlvbnMgYXJyYXkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwNDE6c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDItXHR7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg5LVx0Lm1vZHVsZSA9IFRISVNfTU9EVUxFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA5MDpcdC5zbWFsbF9vcHMgPSBod3NpbV9vcHMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDkxOlx0Lm5fc21hbGxfb3BzID0gQVJSQVlfU0laRShod3NpbV9vcHMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA5Mi1cdC5yZXN2X3N0YXJ0X29wID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSICYjNDM7IDEsIC8vIG1hdGNoIHdpdGggX19IV1NJTV9DTURfTUFYXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1ODAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGBod3NpbV9vcHNgKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aGluIHRoaXMgYGh3c2ltX29wc2Agc3RydWN0dXJlLiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiB0aGUgY29udGV4dCwgdGhpcyBpcyByZWxhdGVkIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24gb3BlcmF0aW9ucy4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGlzbiYjMzk7dCBpdD8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHBhcnNpbmcgaXRzIGludGVybmFsIHN0cnVjdHVyZS4gV2hhdCBraW5kIG9mIG9wZXJhdGlvbnMgYXJlIGJlaW5nIGRlZmluZWQgaGVyZT8gQXJlIHRoZXkgYmFzaWMgcmVhZC93cml0ZSBmdW5jdGlvbnMsIG1vcmUgY29tcGxleCBpbnN0cnVjdGlvbiBlbXVsYXRpb25zLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIHR5cGUgZGVmaW5pdGlvbnMgYXJlIGtleSBoZXJlLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGRhdGEgc3RydWN0dXJlcyB3aXRoaW4uIFdoYXQmIzM5O3MgdGhlIGRlc2lnbiBwaGlsb3NvcGh5PyBJcyBpdCBhIG1vZHVsYXIgc3lzdGVtLCBvciBtb3JlIG1vbm9saXRoaWM/IEkmIzM5O20gaG9waW5nIGl04oCZcyB3ZWxsLWRlZmluZWQgYW5kIGRvY3VtZW50ZWQuIEnigJlsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIHN1cHBvcnRpbmcgZGVmaW5pdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZXNlICYjMzQ7b3BlcmF0aW9ucywmIzM0OyBzbyBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZXkgY2FuIGJlIGFwcGxpZWQgYW5kIGludGVncmF0ZWQgd2l0aCBvdGhlciBzaW11bGF0aW9uIGNvbXBvbmVudHMuIEkgYW0gbGlrZWx5IHRvIHVzZSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHRoZWlyIGFyZ3VtZW50cyB0byBhc2NlcnRhaW4gdGhlaXIgdXRpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NzA0MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG43MDQyOlx0XHR7XG43MDQzOlx0XHRcdC5jbWQgPSBIV1NJTV9DTURfUkVHSVNURVIsXG43MDQ0Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNDU6XHRcdFx0LmRvaXQgPSBod3NpbV9yZWdpc3Rlcl9yZWNlaXZlZF9ubCxcbjcwNDY6XHRcdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbjcwNDc6XHRcdH0sXG43MDQ4Olx0XHR7XG43MDQ5Olx0XHRcdC5jbWQgPSBIV1NJTV9DTURfRlJBTUUsXG43MDUwOlx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNTE6XHRcdFx0LmRvaXQgPSBod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwsXG43MDUyOlx0XHR9LFxuNzA1MzpcdFx0e1xuNzA1NDpcdFx0XHQuY21kID0gSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUsXG43MDU1Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNTY6XHRcdFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxuNzA1NzpcdFx0fSxcbjcwNTg6XHRcdHtcbjcwNTk6XHRcdFx0LmNtZCA9IEhXU0lNX0NNRF9ORVdfUkFESU8sXG43MDYwOlx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNjE6XHRcdFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXG43MDYyOlx0XHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG43MDYzOlx0XHR9LFxuNzA2NDpcdFx0e1xuNzA2NTpcdFx0XHQuY21kID0gSFdTSU1fQ01EX0RFTF9SQURJTyxcbjcwNjY6XHRcdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxuNzA2NzpcdFx0XHQuZG9pdCA9IGh3c2ltX2RlbF9yYWRpb19ubCxcbjcwNjg6XHRcdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbjcwNjk6XHRcdH0sXG43MDcwOlx0XHR7XG43MDcxOlx0XHRcdC5jbWQgPSBIV1NJTV9DTURfR0VUX1JBRElPLFxuNzA3MjpcdFx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG43MDczOlx0XHRcdC5kb2l0ID0gaHdzaW1fZ2V0X3JhZGlvX25sLFxuNzA3NDpcdFx0XHQuZHVtcGl0ID0gaHdzaW1fZHVtcF9yYWRpb19ubCxcbjcwNzU6XHRcdH0sXG43MDc2Olx0XHR7XG43MDc3Olx0XHRcdC5jbWQgPSBIV1NJTV9DTURfUkVQT1JUX1BNU1IsXG43MDc4Olx0XHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbjcwNzk6XHRcdFx0LmRvaXQgPSBod3NpbV9wbXNyX3JlcG9ydF9ubCxcbjcwODA6XHRcdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2NDAKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgSFdTSU1fQVRUUl9UWF9JTkZPYCBpbiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAqKgoKQWxyaWdodCwgSSBzZWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhhdCByaW5ncyBhIGJlbGwsIEkga25vdyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCB0aGF0IGF0dHJpYnV0ZSBiZWZvcmUsIHByb2JhYmx5IGR1cmluZyBkZWJ1Z2dpbmcgb3Igd2hlbiBsb29raW5nIGF0IGhvdyB3ZSYjMzk7cmUgaGFuZGxpbmcgdHJhbnNtaXQgaW5mb3JtYXRpb24gd2l0aGluIHRoZSBoYXJkd2FyZSBzaW11bGF0aW9uIGxheWVyLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyBpdCB1c2VkPyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyYjMzQ7IFRoZSB0ZXh0IHNwZWNpZmljYWxseSBtZW50aW9ucyBpdCB3aXRoaW4gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgdGhlIGBubGAgc3VmZml4IHN1Z2dlc3RzIG5ldHdvcmsgbGluayBzdHVmZiwgc28gd2UmIzM5O3JlIHByb2JhYmx5IHByb2Nlc3Npbmcgc29tZSBraW5kIG9mIG5ldHdvcmsgcGFja2V0IG9yIGV2ZW50IHJlbGF0ZWQgdG8gZnJhbWUgcmVjZXB0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQmIzM5O3MgZGlnIGludG8gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGFuZCBjb25maXJtIG15IGh1bmNoLiBOZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBIV1NJTV9BVFRSX1RYX0lORk9gIGlzIGJlaW5nIGludGVycHJldGVkIGFuZCB1c2VkIGluIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24uIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgd2hhdCB0byBjaGVjayBmb3IgLSBpcyBpdCBiZWluZyBwYXJzZWQgY29ycmVjdGx5PyBJcyB0aGUgaW5mb3JtYXRpb24gYmVpbmcgdXNlZCBkb3duc3RyZWFtIGluIGEgbWVhbmluZ2Z1bCB3YXk/IEFueSBwb3RlbnRpYWwgZm9yIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgaW5jb3JyZWN0IGRhdGEgaW50ZXJwcmV0YXRpb24/IExldCYjMzk7cyBnZXQgdG8gd29yayBhbmQgZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hXU0lNX0FUVFJfVFhfSU5GTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODcyLVx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NzM6XHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzQtXHRcdE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4Ny1cdFtIV1NJTV9BVFRSX0ZSRVFdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg4ODpcdFtIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1NdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4OS1cdFtIV1NJTV9BVFRSX1BFUk1fQUREUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNjM1PXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzExOlx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk8sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEyLVx0XHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSpJRUVFODAyMTFfVFhfTUFYX1JBVEVTLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzE2Olx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE3LVx0XHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlX2ZsYWcpICogSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MzIwPXN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjMzOS1cdCAgICAhaW5mby1cdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzNDA6XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzNDEtXHRcdGdvdG8gb3V0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODUtXHR0eF9hdHRlbXB0cyA9IChzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqKW5sYV9kYXRhKFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjM4NjpcdFx0ICAgICAgIGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDAwOAoJCQkJCQkJb3V0cHV0OiA1MAoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyB1dGlsaXppbmcgYEhXU0lNX0FUVFJfVFhfSU5GT2AuIFRoaXMgc2VlbXMgZnVuY3Rpb25hbCwgc3BlY2lmaWNhbGx5IGltcGFjdGluZyB0aGUgbmV0bGluayBwYXJzaW5nIGhhcHBlbmluZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJhdGlvbiBoZXJlLiBOb3csIGJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBqdXN0IHF1aWNrbHkgc2NhbiBmb3IgYW55IHJlbGF0ZWQgZnVuY3Rpb25zIHRoYXQgdGhpcyBtaWdodCB0b3VjaC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgZGVlcGVyIGxvb2sgYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIHRvIHZlcmlmeSBteSBmaXJzdCBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYzMjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NjMyMDpcdHN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXG42MzIxOlx0XHRcdFx0XHRcdCAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG42MzIyOlx0e1xuNjMyMzpcdFxuNjMyNDpcdFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcbjYzMjU6XHRcdHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhMjtcbjYzMjY6XHRcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhpO1xuNjMyNzpcdFx0c3RydWN0IGh3c2ltX3R4X3JhdGUgKnR4X2F0dGVtcHRzO1xuNjMyODpcdFx0dTY0IHJldF9za2JfY29va2llO1xuNjMyOTpcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnRtcDtcbjYzMzA6XHRcdGNvbnN0IHU4ICpzcmM7XG42MzMxOlx0XHR1bnNpZ25lZCBpbnQgaHdzaW1fZmxhZ3M7XG42MzMyOlx0XHRpbnQgaTtcbjYzMzM6XHRcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG42MzM0Olx0XHRib29sIGZvdW5kID0gZmFsc2U7XG42MzM1Olx0XG42MzM2Olx0XHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9BRERSX1RSQU5TTUlUVEVSXSB8fFxuNjMzNzpcdFx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfRkxBR1NdIHx8XG42MzM4Olx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9DT09LSUVdIHx8XG42MzM5Olx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XG42MzQwOlx0XHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcbjYzNDE6XHRcdFx0Z290byBvdXQ7XG42MzQyOlx0XG42MzQzOlx0XHRzcmMgPSAodm9pZCAqKW5sYV9kYXRhKGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9BRERSX1RSQU5TTUlUVEVSXSk7XG42MzQ0Olx0XHRod3NpbV9mbGFncyA9IG5sYV9nZXRfdTMyKGluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9GTEFHU10pO1xuNjM0NTpcdFx0cmV0X3NrYl9jb29raWUgPSBubGFfZ2V0X3U2NChpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSk7XG42MzQ2Olx0XG42MzQ3Olx0XHRkYXRhMiA9IGdldF9od3NpbV9kYXRhX3JlZl9mcm9tX2FkZHIoc3JjKTtcbjYzNDg6XHRcdGlmICghZGF0YTIpXG42MzQ5Olx0XHRcdGdvdG8gb3V0O1xuNjM1MDpcdFxuNjM1MTpcdFx0aWYgKCFod3NpbV92aXJ0aW9fZW5hYmxlZCkge1xuNjM1MjpcdFx0XHRpZiAoaHdzaW1fbmV0X2dldF9uZXRncm91cChnZW5sX2luZm9fbmV0KGluZm8pKSAhPVxuNjM1MzpcdFx0XHQgICAgZGF0YTItXHUwMDNlbmV0Z3JvdXApXG42MzU0Olx0XHRcdFx0Z290byBvdXQ7XG42MzU1Olx0XG42MzU2Olx0XHRcdGlmIChpbmZvLVx1MDAzZXNuZF9wb3J0aWQgIT0gZGF0YTItXHUwMDNld21lZGl1bWQpXG42MzU3Olx0XHRcdFx0Z290byBvdXQ7XG42MzU4Olx0XHR9XG42MzU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDM0CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipBbmFseXppbmcgSFdTSU0gVFggSW5mbyBQcm9jZXNzaW5nKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgdGhlIGtleSBmdW5jdGlvbiB0aGF0JiMzOTtzIGRlYWxpbmcgd2l0aCB0aGUgY29tbWFuZCB3aGVyZSB3ZSYjMzk7cmUgcGFyc2luZyB0aGF0IGBIV1NJTV9BVFRSX1RYX0lORk9gIGF0dHJpYnV0ZS4gSSBzaG91bGQgYWxzbyBjaGVjayBvdXQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhcyB3ZWxsLCBzaW5jZSB0aGF0JiMzOTtzIGFub3RoZXIgcGxhY2Ugd2hlcmUgdGhlIHBhcnNpbmcgbWlnaHQgYmUgaGFwcGVuaW5nLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgaXQmIzM5O3MgYmVpbmcgZG9uZSBpbiB0aG9zZSB0d28uCgpOb3csIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25z4oCmIHJpZ2h0LCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0JiMzOTtzIHRoZSBwcmltYXJ5IG9uZSB0byBsb29rIGF0LCBuYXR1cmFsbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzk5CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBhbmQgUG9saWN5IFVwZGF0ZSoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIGJlaW5nIG1vZGlmaWVkLCBvciBhcmUgdGhlcmUgb3RoZXIgcmVsYXRlZCBhZGp1c3RtZW50cz8gTGV0JiMzOTtzIHNlZS4uLiB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IHVwZGF0ZSBpcyB3aXRoaW4gdGhlIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFRoZSBjb2RlIGVuZm9yY2VzIGFuIGV4YWN0IGxlbmd0aCBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2Agbm93LiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbWUuCgpOb3csIEkgbmVlZCB0byBjaGVjayBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgdGhlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZSB0aGlzIHNwZWNpZmljIGF0dHJpYnV0ZS4gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gQXJlIHRoZXJlIGFueSAqb3RoZXIqIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYD8gSWYgc28sIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBpbmNvbXBhdGliaWxpdGllcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGVsc2V3aGVyZS4gSSB3aWxsIG5lZWQgdG8gdHJhY2sgdGhlbSBkb3duLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIV1NJTV9BVFRSX1RYX0lORk8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3Mi1cdFtIV1NJTV9BVFRSX1NJR05BTF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODczOlx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODc0LVx0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODctXHRbSFdTSU1fQVRUUl9GUkVRXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4ODg6XHRbSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODktXHRbSFdTSU1fQVRUUl9QRVJNX0FERFJdID0gTkxBX1BPTElDWV9FVEhfQUREUl9DT01QQVQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxMTpcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxMi1cdFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSkqSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxNjpcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNy1cdFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZV9mbGFnKSAqIElFRUU4MDIxMV9UWF9NQVhfUkFURVMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjMyMD1zdGF0aWMgaW50IGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmwoc3RydWN0IHNrX2J1ZmYgKnNrYl8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzMzktXHQgICAgIWluZm8tXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MzQwOlx0ICAgICFpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzQxLVx0XHRnb3RvIG91dDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg1LVx0dHhfYXR0ZW1wdHMgPSAoc3RydWN0IGh3c2ltX3R4X3JhdGUgKilubGFfZGF0YShcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzODY6XHRcdCAgICAgICBpbmZvLVx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4NzMKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAxNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOZXRsaW5rIEZyYW1lIFRyYW5zbWlzc2lvbiBpbiBtYWM4MDIxMV9od3NpbSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbmV0bGluayBmcmFtZXMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aGluIHRoZSBtYWM4MDIxMV9od3NpbSBtb2R1bGUuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHRyYWNlIHRoZSBqb3VybmV5IG9mIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUgdGhyb3VnaCB0aGUgc3lzdGVtLiBJIGtub3cgdGhhdCBgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbmxgIGlzIHJlc3BvbnNpYmxlIGZvciBpbmplY3RpbmcgdGhpcyBhdHRyaWJ1dGUgaW50byBhbiBgc2tiYCAoc29ja2V0IGJ1ZmZlcikuIFRoZW4sIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBoYXMgdGhlIGpvYiBvZiBwYXJzaW5nIHRoYXQgaW5mb3JtYXRpb24uCgpUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGF0dGVudGlvbiBpcyBkcmF3biB0byBgaHdzaW1fZ2VubF9wb2xpY3lgLCB3aGljaCBhcHBlYXJzIHRvIGJlIHRoZSBwb2xpY3kgdXNlZCBieSBib3RoIGBnZW5sbXNnX3BhcnNlYCB3aXRoaW4gYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIG92ZXJhbGwgYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhlIGNvbm5lY3Rpb24gdG8gYGh3c2ltX2dlbmxfcG9saWN5YCBpcyBrZXkhCgpUaGVyZWZvcmUsIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50cyBmb3IgbXkgaW52ZXN0aWdhdGlvbiBhcmU6CgoqICAgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIC0gdGhpcyBzZWVtcyBjcnVjaWFsIGZvciB0aGUgKnJlY2VpdmluZyogYW5kIGludGVycHJldGF0aW9uIG9mIHRoaXMgdHggaW5mby4KKiAgIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAgLSBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIHBhcnNpbmcgdGhlIGNvbW1hbmQgdXNpbmcgdGhlIGdlbmwgcG9saWN5LCBpdCBtdXN0IGJlIHRoZSBoYW5kbGluZyBlbnRyeXBvaW50IGZvciBjb21tYW5kcyB1c2luZyB0aGlzIHBvbGljeS4KCkkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IHRydWx5IGlzIHRoZSBwcmltYXJ5IGNvbW1hbmQgaGFuZGxlciwgYW5kIHRodXMsIGlmIGl0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBmb2N1cyBteSBlZmZvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzIzMiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDs3MjMyOlx0c3RhdGljIGludCBod3NpbV92aXJ0aW9faGFuZGxlX2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuNzIzMzpcdHtcbjcyMzQ6XHRcdHN0cnVjdCBubG1zZ2hkciAqbmxoO1xuNzIzNTpcdFx0c3RydWN0IGdlbmxtc2doZHIgKmdubGg7XG43MjM2Olx0XHRzdHJ1Y3QgbmxhdHRyICp0YltIV1NJTV9BVFRSX01BWCAmIzQzOyAxXTtcbjcyMzc6XHRcdHN0cnVjdCBnZW5sX2luZm8gaW5mbyA9IHt9O1xuNzIzODpcdFx0aW50IGVycjtcbjcyMzk6XHRcbjcyNDA6XHRcdG5saCA9IG5sbXNnX2hkcihza2IpO1xuNzI0MTpcdFx0Z25saCA9IG5sbXNnX2RhdGEobmxoKTtcbjcyNDI6XHRcbjcyNDM6XHRcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBubGgtXHUwMDNlbmxtc2dfbGVuKVxuNzI0NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjcyNDU6XHRcbjcyNDY6XHRcdGVyciA9IGdlbmxtc2dfcGFyc2UobmxoLCBcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxuNzI0NzpcdFx0XHRcdCAgICBod3NpbV9nZW5sX3BvbGljeSwgTlVMTCk7XG43MjQ4Olx0XHRpZiAoZXJyKSB7XG43MjQ5Olx0XHRcdHByX2Vycl9yYXRlbGltaXRlZChcJiMzNDtod3NpbTogZ2VubG1zZ19wYXJzZSByZXR1cm5lZCAlZFxcblwmIzM0OywgZXJyKTtcbjcyNTA6XHRcdFx0cmV0dXJuIGVycjtcbjcyNTE6XHRcdH1cbjcyNTI6XHRcbjcyNTM6XHRcdGluZm8uYXR0cnMgPSB0YjtcbjcyNTQ6XHRcbjcyNTU6XHRcdHN3aXRjaCAoZ25saC1cdTAwM2VjbWQpIHtcbjcyNTY6XHRcdGNhc2UgSFdTSU1fQ01EX0ZSQU1FOlxuNzI1NzpcdFx0XHRod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwoc2tiLCBcdTAwMjZpbmZvKTtcbjcyNTg6XHRcdFx0YnJlYWs7XG43MjU5Olx0XHRjYXNlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FOlxuNzI2MDpcdFx0XHRod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sKHNrYiwgXHUwMDI2aW5mbyk7XG43MjYxOlx0XHRcdGJyZWFrO1xuNzI2MjpcdFx0Y2FzZSBIV1NJTV9DTURfUkVQT1JUX1BNU1I6XG43MjYzOlx0XHRcdGh3c2ltX3Btc3JfcmVwb3J0X25sKHNrYiwgXHUwMDI2aW5mbyk7XG43MjY0Olx0XHRcdGJyZWFrO1xuNzI2NTpcdFx0ZGVmYXVsdDpcbjcyNjY6XHRcdFx0cHJfZXJyX3JhdGVsaW1pdGVkKFwmIzM0O2h3c2ltOiBpbnZhbGlkIGNtZDogJWRcXG5cJiMzNDssIGdubGgtXHUwMDNlY21kKTtcbjcyNjc6XHRcdFx0cmV0dXJuIC1FUFJPVE87XG43MjY4Olx0XHR9XG43MjY5Olx0XHRyZXR1cm4gMDtcbjcyNzA6XHR9XG43MjcxOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDA3OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIEhXU0lNJiMzOTtzIENvbmZpZ3VyYXRpb24gYW5kIERhdGEgSGFuZGxpbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGlzIGluZGVlZCBsZXZlcmFnaW5nIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIG1lc3NhZ2UgcGFyc2luZy4gQW5kLCBhcyBleHBlY3RlZCwgdGhlIGdlbmVyaWMgbmV0bGluayBjb2RlIGFsc28gbGVhbnMgb24gYGh3c2ltX2dlbmxfcG9saWN5YCBmb3IgdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAuIFNvLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4KCk15IGZvY3VzIG5vdyBpcyBkZWZpbml0ZWx5IG9uIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBhbmQsIGVzcGVjaWFsbHksIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAsIHdoaWNoIGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgZm9yIGRhdGEgaGFuZGxpbmcsIGFzIHN1c3BlY3RlZC4KClRoZSBlbmFibGluZyBjb25maWcgaXMsIG9mIGNvdXJzZSwgYE1BQzgwMjExX0hXU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgY29uZmlndXJhdGlvbnMgdGhhdCBwbGF5IGEgcm9sZS4gSSBuZWVkIHRvIGNyb3NzLWNoZWNrIHRoaXMgdG8gYmUgY2VydGFpbiB0aGlzIGlzbiYjMzk7dCBhIHBhcnRpYWwgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSBpZiBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgY29tZSBpbnRvIHBsYXkgaGVyZSwganVzdCB0byBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcdCYjNDM7PSBtYWM4MDIxMV9od3NpbS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL01ha2VmaWxlLTItbWFjODAyMTFfaHdzaW0tb2Jqc1x0XHQmIzQzOz0gbWFjODAyMTFfaHdzaW1fbWFpbi5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6OTojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMTEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzMC0gKlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjMyOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q6IENUUy10by1zZWxmIHByb3RlY3Rpb24gaXMgcmVxdWlyZWQuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMzLSAqXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM0OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU6IFVzZSBzaG9ydCBwcmVhbWJsZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUzogSFQgcmF0ZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzctICpcdHNwbGl0IGludG8gYSBoaWdoZXIgNCBiaXRzIChOc3MpIGFuZCBsb3dlciA0IGJpdHMgKE1DUyBudW1iZXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM5LSAqXHRpbiBHcmVlbmZpZWxkIG1vZGUuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDEtICpcdDQwIE1Iei5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDM6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEg6IEluZGljYXRlcyAxNjAgTUh6IHRyYW5zbWlzc2lvblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0NC0gKlx0KDgwJiM0Mzs4MCBpc24mIzM5O3Qgc3VwcG9ydGVkIHlldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDU6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBOiBUaGUgZnJhbWUgc2hvdWxkIGJlIHRyYW5zbWl0dGVkIG9uIGJvdGggb2ZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcdHRoZSBhZGphY2VudCAyMCBNSHogY2hhbm5lbHMsIGlmIHRoZSBjdXJyZW50IGNoYW5uZWwgdHlwZSBpc1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0Ny0gKlx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQ4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSTogU2hvcnQgR3VhcmQgaW50ZXJ2YWwgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDktICpcdHJhdGUuXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTI1MT1lbnVtIGh3c2ltX3R4X3JhdGVfZmxhZ3Mge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9SVFNfQ1RTXHRcdD0gQklUKDApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1VTRV9DVFNfUFJPVEVDVFx0XHQ9IEJJVCgxKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTQ6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcdD0gQklUKDIpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXHQvKiByYXRlIGluZGV4IGlzIGFuIEhUL1ZIVCBNQ1MgaW5zdGVhZCBvZiBhbiBpbmRleCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NzpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1x0XHRcdD0gQklUKDMpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1ODpcdE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEXHRcdD0gQklUKDQpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1OTpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFx0XHQ9IEJJVCg1KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19EVVBfREFUQVx0XHQ9IEJJVCg2KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjE6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19TSE9SVF9HSVx0XHQ9IEJJVCg3KSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjI6XHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXHRcdFx0PSBCSVQoOCksXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYzOlx0TUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIXHRcdD0gQklUKDkpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2NDpcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcdFx0PSBCSVQoMTApLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaD0zMjg9ZW51bSBod3NpbV9yYXRlX2luZm9fYXR0cmlidXRlcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTM0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDozNDg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMDojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC0xNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTc6LyogTUFDODAyMTFfSFdTSU0gbmV0bGluayBmYW1pbHkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyND1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfbXVsdGljYXN0X2dyb3VwIGh3c2ltX21jZ3Jwc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyODovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIHBvbGljeSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggJiM0MzsgMV0gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6OTAyOi8qIE1BQzgwMjExX0hXU0lNIHZpcnRpbyBxdWV1ZXMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTkwMy1zdGF0aWMgc3RydWN0IHZpcnRxdWV1ZSAqaHdzaW1fdnFzW0hXU0lNX05VTV9WUVNdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1NjQ9c3RhdGljIGlubGluZSB1MTYgdHJhbnNfdHhfcmF0ZV9mbGFnc19pZWVlMmh3c2ltKHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSAqcmF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1Njk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9DVFNfUFJPVEVDVClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzE6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1Q7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcyLVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzYtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0dSRUVOX0ZJRUxEKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3NzpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0dSRUVOX0ZJRUxEO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfNDBfTUhaX1dJRFRIKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXHRpZiAocmF0ZS1cdTAwM2VmbGFncyBcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4MTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4Mi1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfU0hPUlRfR0kpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTgzOlx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg0LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19WSFRfTUNTKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcdFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVx0aWYgKHJhdGUtXHUwMDNlZmxhZ3MgXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTg3Olx0XHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU4OC1cdGlmIChyYXRlLVx1MDAzZWZsYWdzIFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfMTYwX01IWl9XSURUSClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODk6XHRcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU5MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDYyPXN0YXRpYyBjb25zdCBjaGFyIG1hYzgwMjExX2h3c2ltX2dzdHJpbmdzX3N0YXRzW11bRVRIX0dTVFJJTkdfTEVOXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzQ3MzojZGVmaW5lIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU4gQVJSQVlfU0laRShtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0cylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ4ND1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9ldF9zc2V0X2NvdW50KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXHRpZiAoc3NldCA9PSBFVEhfU1NfU1RBVFMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNDg4Olx0XHRyZXR1cm4gTUFDODAyMTFfSFdTSU1fU1NUQVRTX0xFTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNDkyPXN0YXRpYyB2b2lkIG1hYzgwMjExX2h3c2ltX2dldF9ldF9zdGF0cyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MzUwODpcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM1MDktfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1x0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjItXHRGSUVMRF9QUkVQX0NPTlNUKElFRUU4MDIxMV9NTERfQ0FQX09QX1RJRF9UT19MSU5LX01BUF9ORUdfU1VQUCwgXFxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNC1cdFx0XHRcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYzNTpcdFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM2LVx0fSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MDgzPXN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgaHdzaW1fZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NDpcdC5uYW1lID0gXCYjMzQ7TUFDODAyMTFfSFdTSU1cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVx0LnZlcnNpb24gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03NDEyLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2RldmljZV9pZCBpZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMzpcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxNC1cdHsgMCB9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz03OD1zdGF0aWMgdTY0IGh3c2ltX25hbl9nZXRfbWFzdGVyX3Jhbmsoc3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODM6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg0LVx0XHRtYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtMjczLVx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcdCAgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cdCAgICByeF9zdGF0dXMuZnJlcSAhPSAyNDM3KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVx0XHQgICAgKGNnID09IG93bl9jZyBcdTAwMjZcdTAwMjYgZnJhbWVfYW1yIFx1MDAzZSBjdXJyX2FtcikgfHxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3Olx0XHQgICAgZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM4LVx0XHRcdC8qIEF2b2lkIGEgc3RhdGUgdHJhbnNpdGlvbiAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo0Njk6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cdFx0XHRkYXRhLVx1MDAzZW5hbi5yYW5kb21fZmFjdG9yX3ZhbGlkX2R3c3QgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjI1LVx0aWYgKGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl90cmFuc2l0aW9uX3Njb3JlIFx1MDAzYyAzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XHRcdGRhdGEtXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyNzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXHRcdCBkYXRhLVx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2U9IDMpXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYyOTpcdFx0ZGF0YS1cdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjMxLVx0XHQgZGF0YS1cdTAwM2VuYW4uc3luY190cmFuc2l0aW9uX3Njb3JlIFx1MDAzZT0gMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMyOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMzpcdGVsc2UgaWYgKGRhdGEtXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMgXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNC1cdFx0IGRhdGEtXHUwMDNlbmFuLnN5bmNfdHJhbnNpdGlvbl9zY29yZSBcdTAwM2MgMylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1Olx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY0MjpcdGlmIChkYXRhLVx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX01BU1RFUiBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQzLVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZkYXRhLVx1MDAzZW5hbi5kaXNjb3ZlcnlfYmVhY29uX3RpbWVyKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU0Olx0XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjU1Olx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjU2LVx0XHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IE5BTl9XQVJNVVBfRFdTVDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjYwOlx0XHRcdGRhdGEtXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXHRcdFx0ZGF0YS1cdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUwLVx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjc1MTpcdGlmIChkYXRhLVx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNzUyLVx0XHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgwNy1cdFx0dHhfc3luY19iZWFjb24gPVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo4MDg6XHRcdFx0ZGF0YS1cdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXHUwMDI2XHUwMDI2XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcdFx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlICE9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04MTAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz04Njc9bWFjODAyMTFfaHdzaW1fbmFuX2Rpc2NvdmVyeV9iZWFjb25fdGltZXIoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODc5LVx0c2NvcGVkX2d1YXJkKHNwaW5sb2NrLCBcdTAwMjZkYXRhLVx1MDAzZW5hbi5zdGF0ZV9sb2NrKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MDpcdFx0aWYgKGRhdGEtXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcdFx0ICAgIGRhdGEtXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04ODItXHRcdFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjYtXHRcdC8qIFN0YXJ0IGluIHRoZSBcJiMzNDtzY2FuXCYjMzQ7IHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTI3Olx0XHRkYXRhLVx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MjgtXHRcdGRhdGEtXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9IDE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzAtXHRcdGRhdGEtXHUwMDNlbmFuLm1hc3Rlcl9wcmVmID0gY29uZi1cdTAwM2VtYXN0ZXJfcHJlZjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlx0XHRkYXRhLVx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy05MzItXHRcdG1lbXNldChcdTAwMjZkYXRhLVx1MDAzZW5hbi5jdXJyZW50X2FtaSwgMCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTEyMjY9Ym9vbCBtYWM4MDIxMV9od3NpbV9uYW5fcmVjZWl2ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjEyMzY6XHRpZiAoZGF0YS1cdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzctXHRcdHJldHVybiBjaGFubmVsLVx1MDAzZWNlbnRlcl9mcmVxID09IDI0Mzc7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo3OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDo4OiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9OQU5fSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xMD1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9waGFzZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjExOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEyOlx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oLTE0LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD0xNj1lbnVtIG1hYzgwMjExX2h3c2ltX25hbl9yb2xlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTc6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjE4Olx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMjAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oPTk5PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX2xvY2FsX3NjaGVkX2NoYW5nZWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjEwMjojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9OQU5fSCAqL1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTctI2RlZmluZSBWSVJUSU9fSURfUlBNQlx0XHRcdDI4IC8qIHZpcnRpbyBycG1iICovXG5pbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2lkcy5oOjU4OiNkZWZpbmUgVklSVElPX0lEX01BQzgwMjExX0hXU0lNXHQyOSAvKiB2aXJ0aW8gbWFjODAyMTEtaHdzaW0gKi9cbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTktI2RlZmluZSBWSVJUSU9fSURfVklERU9fRU5DT0RFUlx0XHQzMCAvKiB2aXJ0aW8gdmlkZW8gZW5jb2RlciAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAwNzoyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUyNQoJCQkJCQkJb3V0cHV0OiAxNTkKCQkJCQkJCXRob3VnaHRzOiA0ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgTUFDODAyMTFfSFdTSU1gIE5ldGxpbmsgUG9saWN5IENoYW5nZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBOZXRsaW5rIG1lc3NhZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLgoKRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbnMuIFdlJiMzOTtyZSBsb29raW5nIGF0IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBhbmQgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYC4gSSBrbm93IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB3aXRoaW4gYG1hYzgwMjExX2h3c2ltX21haW4uY2AuICpJcyogYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbHNvIHN0YXRpYz8gWWVzLCBpdCBhcHBlYXJzIHRvIGJlLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIE5ldGxpbmstcmVsYXRlZCBoYW5kbGVycyBJIHNob3VsZCBiZSBhd2FyZSBvZi4gTm8sIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBpcyB0aGUgb25lIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4KClNvLCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGFzcGVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYnkgc3dpdGNoaW5nIGZyb20gYSBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIChgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWApIHRvIGFuIGV4YWN0IGxlbmd0aCB2YWxpZGF0aW9uIChgTkxBX1BPTElDWV9FWEFDVF9MRU5gKS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0IGNoYW5nZXMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgd2l0aGluIHRoZSBgTUFDODAyMTFfSFdTSU1gIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYCBjb21tYW5kLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHJlYWNoYWJpbGl0eS4gSSBzZWUgdGhhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgZGVmaW5pdGVseSByZWFjaGFibGUuIEl0JiMzOTtzIGNhbGxlZCBieSBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFuZCBhbHNvIHZpYSB0aGUgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZSB0aHJvdWdoIGBod3NpbV9vcHNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZCBpcyBoYW5kbGVkIGJ5IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCB2aWEgYGh3c2ltX29wc2AuCgpgYGBjCnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7Ci4uLgoJewoJCS5jbWQgPSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSwKCQkudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsCgkJLmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLAoJfSwKLi4uCn0KYGBgCgpPa2F5LCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBib3RoIHRoZSBnZW5lcmljIG5ldGxpbmsgYW5kIHZpcnRpbyBwYXRocy4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IHVuZGVyc3RhbmRpbmcgbm93LiBJJiMzOTtsbCByZWNvcmQgdGhlIHJlc3VsdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMDc6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubCYjMzQ7LAogICAgJiMzNDtod3NpbV92aXJ0aW9faGFuZGxlX2NtZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMjo1MC42MTc3NjA3NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI4MDE5ODE1MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sXCIsXG4gICAgXCJod3NpbV92aXJ0aW9faGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIE5ldGxpbmsgcG9saWN5IGZvciBIV1NJTV9BVFRSX1RYX0lORk8gZnJvbSBhIG1heGltdW0gbGVuZ3RoIChOTEFfQklOQVJZIHdpdGggLmxlbikgdG8gYW4gZXhhY3QgbGVuZ3RoIChOTEFfUE9MSUNZX0VYQUNUX0xFTikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBob3cgdGhlIGtlcm5lbCB2YWxpZGF0ZXMgaW5jb21pbmcgTmV0bGluayBtZXNzYWdlcyBmb3IgdGhlIE1BQzgwMjExX0hXU0lNIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUgY29tbWFuZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTAuNjE3NzY2ODM1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MzM3ODA2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMjBhZjNhYmViZjhhMDE5ZWRlM2FkNzRlOTUyM2QyOTgwZTBmMTk1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDIyIDA3OjIyOjQ4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG5pbmRleCAwZGQ4YTZjODU5NTM0NC4uODM2ZGQyNWU1YzYxNDggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xcbkBAIC04NzAsOSArODcwLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuIFxcdFtIV1NJTV9BVFRSX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuIFxcdFtIV1NJTV9BVFRSX1JYX1JBVEVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gXFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuLVxcdFtIV1NJTV9BVFRSX1RYX0lORk9dID0geyAudHlwZSA9IE5MQV9CSU5BUlksXFxuLVxcdFxcdFxcdFxcdCAubGVuID0gSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXFxuLVxcdFxcdFxcdFxcdFxcdHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSl9LFxcbitcXHRbSFdTSU1fQVRUUl9UWF9JTkZPXSA9XFxuK1xcdFxcdE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKElFRUU4MDIxMV9UWF9NQVhfUkFURVMgKlxcbitcXHRcXHRcXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSkpLFxcbiBcXHRbSFdTSU1fQVRUUl9DT09LSUVdID0geyAudHlwZSA9IE5MQV9VNjQgfSxcXG4gXFx0W0hXU0lNX0FUVFJfQ0hBTk5FTFNdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG4gXFx0W0hXU0lNX0FUVFJfUkFESU9fSURdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTEuMjUyNDEyNTQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTAyMTY3MzE1OTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubFwiLFxuICAgIFwiaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgSFdTSU1fQVRUUl9UWF9JTkZPIGZyb20gYSBtYXhpbXVtIGxlbmd0aCAoTkxBX0JJTkFSWSB3aXRoIC5sZW4pIHRvIGFuIGV4YWN0IGxlbmd0aCAoTkxBX1BPTElDWV9FWEFDVF9MRU4pLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhbHRlcnMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgZm9yIHRoZSBNQUM4MDIxMV9IV1NJTSBmYW1pbHksIHNwZWNpZmljYWxseSBhZmZlY3RpbmcgdGhlIEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FIGNvbW1hbmQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTIwYWYzYWJlYmY4YTAxOWVkZTNhZDc0ZTk1MjNkMjk4MGUwZjE5NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDA3OjIyOjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1xuaW5kZXggMGRkOGE2Yzg1OTUzNDQuLjgzNmRkMjVlNWM2MTQ4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXG5AQCAtODcwLDkgKzg3MCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xuIFx0W0hXU0lNX0FUVFJfRkxBR1NdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1JYX1JBVEVdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcbiBcdFtIV1NJTV9BVFRSX1NJR05BTF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuLVx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPSB7IC50eXBlID0gTkxBX0JJTkFSWSxcbi1cdFx0XHRcdCAubGVuID0gSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXG4tXHRcdFx0XHRcdHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSl9LFxuK1x0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxuK1x0XHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcbitcdFx0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSksXG4gXHRbSFdTSU1fQVRUUl9DT09LSUVdID0geyAudHlwZSA9IE5MQV9VNjQgfSxcbiBcdFtIV1NJTV9BVFRSX0NIQU5ORUxTXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXG4gXHRbSFdTSU1fQVRUUl9SQURJT19JRF0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTEuMjUyNDE0ODk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5MTgxOTY1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEhhcmR3YXJlIFNpbXVsYXRpb24gRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNgLiBJdCBsb29rcyBsaWtlIGl0J3MgbWFraW5nIGEgc2lnbmlmaWNhbnQgTmV0bGluayBwb2xpY3kgY2hhbmdlLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFByZXZpb3VzbHksIHRoZSBwb2xpY3kgZm9yIHRoaXMgYXR0cmlidXRlIHVzZWQgYC50eXBlID0gTkxBX0JJTkFSWWAgd2l0aCBgLmxlbiA9IC4uLmAuIE5vdywgaXQncyBzd2l0Y2hpbmcgdG8gYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKC4uLilgLlxuXG5Ib2xkIG9uLi4uIFRoaXMgaXMgYWN0dWFsbHkgbW9yZSBpbnRlcmVzdGluZyB0aGFuIGEgc2ltcGxlIHR3ZWFrLiBUaGUgY3JpdGljYWwgZGlmZmVyZW5jZSBoZXJlIGlzIHRoZSAqZW5mb3JjZW1lbnQqLiBVc2luZyBgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWAgZGVmaW5lcyBhICptYXhpbXVtKiBsZW5ndGgsIHJpZ2h0PyBCdXQgYE5MQV9QT0xJQ1lfRVhBQ1RfTEVOYC4uLiB0aGF0IG1lYW5zIGl0IGVuZm9yY2VzIGFuICpleGFjdCogbGVuZ3RoLiBUaGlzIGlzbid0IGp1c3QgYSBtaW5vciBzdHlsZSBhZGp1c3RtZW50OyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIEl0IGltcGxpZXMgYSBzcGVjaWZpYyBleHBlY3RhdGlvbiBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgYFRYX0lORk9gIGRhdGEgdGhhdCdzIGJlaW5nIHNlbnQgdGhyb3VnaCBOZXRsaW5rLiBXZSdyZSBnb2luZyBmcm9tIGFjY2VwdGluZyBhbnl0aGluZyB1cCB0byBhIGNlcnRhaW4gc2l6ZSB0byByZXF1aXJpbmcgYSAqcHJlY2lzZSogc2l6ZS5cblxuQmVmb3JlIEkganVtcCB0byBhbnkgY29uY2x1c2lvbnMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0J3MgdGltZSB0byBjaGVjayB0aGUgdXNhZ2Ugb2YgYGh3c2ltX2dlbmxfcG9saWN5YCB0byBzZWUgaG93IHRoaXMgYFRYX0lORk9gIGF0dHJpYnV0ZSBpcyBiZWluZyBoYW5kbGVkIGFuZCB3aGVyZSB0aGlzIGV4YWN0IGxlbmd0aCByZXF1aXJlbWVudCBjb21lcyBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTI3LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTUuODQ0MjM3MTFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4NzkyNjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltX2dlbmxfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg1Nz1od3NpbV9wbXNyX2NhcGFfcG9saWN5W05MODAyMTFfUE1TUl9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg2NTpzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggKyAxXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NjYtXFx0W0hXU0lNX0FUVFJfQUREUl9SRUNFSVZFUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwODM9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBod3NpbV9nZW5sX2ZhbWlseSBfX3JvX2FmdGVyX2luaXQgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg2LVxcdC5tYXhhdHRyID0gSFdTSU1fQVRUUl9NQVgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4NzpcXHQucG9saWN5ID0gaHdzaW1fZ2VubF9wb2xpY3ksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzA4OC1cXHQubmV0bnNvayA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MjMyPXN0YXRpYyBpbnQgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNDYtXFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyNDc6XFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ4LVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjI6NTUuOTYzMDM0MzUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MTU3MTUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgQXR0cmlidXRlIFBhcnNpbmcgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBOZXRsaW5rIGNoYW5nZSByZWxhdGVkIHRvIGF0dHJpYnV0ZSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgaHdzaW1gIGNvbnRleHQuIEl0IGxvb2tzIGxpa2UgdGhpcyBwb2xpY3kgaXMgYmVpbmcgdXNlZCBpbiBgaHdzaW1fZ2VubF9mYW1pbHlgIGFuZCBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgLCB3aGljaCBpcyBhIHByZXR0eSBjb21tb24gcGF0dGVybiBmb3IgdGhpcyB0eXBlIG9mIGZ1bmN0aW9uYWxpdHkuIFRoaXMgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBidWcgZml4LCB3aGljaCBtZWFucyBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci4gR2l2ZW4gdGhlIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlnIG9wdGlvbiwgSSdtIGd1ZXNzaW5nIHRoaXMgcmVsYXRlcyB0byBoYXJkd2FyZSBzaW11bGF0aW9uIGluIG1hYzgwMjExLCBwcm9iYWJseSBmb3IgdGVzdGluZy4gTGV0J3Mgc2VlLi4uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgd2l0aGluIGBod3NpbV9nZW5sX3BvbGljeWAuICBUaGF0IG1lYW5zIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiB3aGVyZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGlzICp1c2VkKi4gTG9va3MgbGlrZSBpdCBmZWVkcyBpbnRvIGJvdGggYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIGdlbmVyaWMgTmV0bGluayBwYXJzaW5nIHdpdGhpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aG9zZSB0d28gaW50ZXJhY3Qgd2l0aCB0aGUgbmV3IHBvbGljeSBpcyBrZXkuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayB0aGUgY29tbWFuZHMgdGhhdCBhcmUgZGVmaW5lZCBpbiBgaHdzaW1fZ2VubF9mYW1pbHlgLiBUaG9zZSBhcmUgcHJvYmFibHkgdGhlIHBsYWNlcyB3aGVyZSB0aGlzIG5ldyBwYXJzaW5nIHdpbGwgYWN0dWFsbHkgbWFrZSBpdHMgcHJlc2VuY2Uga25vd24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNzcsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MDAuMzU0NjA4MDkyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTE1MjM2NywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHdzaW1fZ2VubF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjAwLjUyNTc3MDAxOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MjYxMjE1MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAgRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGhhcmR3YXJlIHNpbXVsYXRpb24sIHNwZWNpZmljYWxseSB0aGUgYGdlbmxgIGZhbWlseSB1c2VkIHdpdGhpbiBpdC4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMgdG8gdmVyaWZ5IHRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGBod3NpbV9nZW5sX2ZhbWlseWAuIEkgbmVlZCB0byBlbnN1cmUgSSdtIG9wZXJhdGluZyB3aXRoIGEgY29ycmVjdCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZnVuZGFtZW50YWwgc3RydWN0dXJlLiBBbnkgaW5jb25zaXN0ZW5jaWVzIG9yIG92ZXJsb29rZWQgZGV0YWlscyB0aGVyZSBjb3VsZCBsZWFkIG1lIGRvd24gYSB2ZXJ5IHdyb25nIHBhdGggZHVyaW5nIGFuYWx5c2lzLiBUaGlzIGlzIGEgY3JpdGljYWwgYnVpbGRpbmcgYmxvY2sgSSdtIGRlYWxpbmcgd2l0aC4gTGV0IG1lIHNlZSB3aGVyZSB0aGF0J3MgZGVmaW5lZCwgYW5kIHdoYXQncyBpbiB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0MSwiT3V0cHV0VG9rZW5zIjo0OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjAzLjk1MTg5Mzk5N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDM1OTIzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHdzaW1fZ2VubF9mYW1pbHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzEyPXN0YXRpYyBzdHJ1Y3QgbWFjODAyMTFfaHdzaW1fZGF0YSAqZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihjb25zdCB1OCAqYWRkcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNy0vKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxODpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE1MjE9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fY29uZmlnX21hY19ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1MzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTUzODpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1MzktXFx0XFx0XFx0ICAgICAgIGFkZCA/IEhXU0lNX0NNRF9BRERfTUFDX0FERFIgOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTY3MDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE2NzEtXFx0XFx0XFx0ICAgICAgIEhXU0lNX0NNRF9GUkFNRSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zNzU0PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fc3RhcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM3ODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzc4NDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLCBIV1NJTV9DTURfU1RBUlRfUE1TUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzc4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM4MjE9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fYWJvcnRfcG1zcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM4NDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6Mzg1MDpcXHRtc2dfaGVhZCA9IGdlbmxtc2dfcHV0KHNrYiwgMCwgMCwgXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5LCAwLCBIV1NJTV9DTURfQUJPUlRfUE1TUik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzg1MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQzNjQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfY29uZmlnX21zZyhzdHJ1Y3Qgc2tfYnVmZiAqbWNhc3Rfc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM2Ny1cXHRpZiAoaW5mbylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzY4OlxcdFxcdGdlbmxfbm90aWZ5KFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgbWNhc3Rfc2tiLCBpbmZvLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQzNjktXFx0XFx0XFx0ICAgIEhXU0lNX01DR1JQX0NPTkZJRywgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDM3MC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDM3MTpcXHRcXHRnZW5sbXNnX211bHRpY2FzdChcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIG1jYXN0X3NrYiwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy00MzcyLVxcdFxcdFxcdFxcdCAgSFdTSU1fTUNHUlBfQ09ORklHLCBHRlBfS0VSTkVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTQ0NTY9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfbmV3X3JhZGlvKGludCBpZCwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTQ0NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NDQ2NjpcXHRkYXRhID0gZ2VubG1zZ19wdXQobWNhc3Rfc2tiLCAwLCAwLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksIDAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDQ2Ny1cXHRcXHRcXHQgICBIV1NJTV9DTURfTkVXX1JBRElPKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYxNzQ9c3RhdGljIHZvaWQgaHdzaW1fbWNhc3RfZGVsX3JhZGlvKGludCBpZCwgY29uc3QgY2hhciAqaHduYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjE4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MTg1OlxcdGRhdGEgPSBnZW5sbXNnX3B1dChza2IsIDAsIDAsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgMCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MTg2LVxcdFxcdFxcdCAgIEhXU0lNX0NNRF9ERUxfUkFESU8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NjIyMT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX2dldF9yYWRpbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIyOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MjMwOlxcdGhkciA9IGdlbmxtc2dfcHV0KHNrYiwgcG9ydGlkLCBzZXEsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgZmxhZ3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjIzMS1cXHRcXHRcXHQgIEhXU0lNX0NNRF9HRVRfUkFESU8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9Njk4OT1zdGF0aWMgaW50IGh3c2ltX2R1bXBfcmFkaW9fbmwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwMjQtXFx0XFx0aGRyID0gZ2VubG1zZ19wdXQoc2tiLCBORVRMSU5LX0NCKGNiLVxcdTAwM2Vza2IpLnBvcnRpZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDI1OlxcdFxcdFxcdFxcdCAgY2ItXFx1MDAzZW5saC1cXHUwMDNlbmxtc2dfc2VxLCBcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzAyNi1cXHRcXHRcXHRcXHQgIE5MTV9GX01VTFRJLCBIV1NJTV9DTURfR0VUX1JBRElPKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcwNDE9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA4MzpzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg0LVxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcxNDU9c3RhdGljIGludCBfX2luaXQgaHdzaW1faW5pdF9uZXRsaW5rKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNTE6XFx0cmMgPSBnZW5sX3JlZ2lzdGVyX2ZhbWlseShcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxNTItXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE1Ni1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MTU3OlxcdFxcdGdlbmxfdW5yZWdpc3Rlcl9mYW1pbHkoXFx1MDAyNmh3c2ltX2dlbmxfZmFtaWx5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MTU4LVxcdFxcdGdvdG8gZmFpbHVyZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTcyMTE9c3RhdGljIHZvaWQgaHdzaW1fZXhpdF9uZXRsaW5rKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjE1LVxcdC8qIHVucmVnaXN0ZXIgdGhlIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyMTY6XFx0Z2VubF91bnJlZ2lzdGVyX2ZhbWlseShcXHUwMDI2aHdzaW1fZ2VubF9mYW1pbHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyMTctfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzIzMj1zdGF0aWMgaW50IGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcyNDY6XFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcyNDctXFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MDQuMTk1NDkxNTk4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjgzMTE4NzE5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEhhcmR3YXJlIFNpbXVsYXRpb24gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBjb3JlIG9mIGhvdyB0aGlzIGhhcmR3YXJlIHNpbXVsYXRpb24gaXMgcnVuIHNlZW1zIHRvIGJlIGRpY3RhdGVkIHdpdGhpbiBgaHdzaW1fb3BzYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCdzIGdvaW5nIG9uIGluIHRoZXJlLiBJdCdzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGUgc2ltdWxhdGlvbidzIGJlaGF2aW9yLiBJIG5lZWQgdG8gZGl2ZSBpbnRvIGBod3NpbV9vcHNgIGFuZCBmaWd1cmUgb3V0IHByZWNpc2VseSBob3cgdGhpbmdzIGFyZSBkZWZpbmVkIOKAkyB3aGF0IGFyZSB0aGUgYmFzaWMgb3BlcmF0aW9ucywgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQsIGFuZCB3aGF0J3MgdGhlIGdlbmVyYWwgZGVzaWduIHBoaWxvc29waHkgYmVoaW5kIHRoZW0/IFRoaXMgc2VlbXMgbGlrZSB0aGUgZ2F0ZXdheSB0byB1bmRlcnN0YW5kaW5nIHRoZSBzaW11bGF0aW9uJ3MgaW5uZXIgd29ya2luZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoxMS4wMjY2ODEzNDVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTQ5NDcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJod3NpbV9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NDIzOT1zdGF0aWMgaW50IG1hYzgwMjExX2h3c2ltX3NldF9yYWRhcl9iYWNrZ3JvdW5kKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMwNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo0MzA1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyBtYWM4MDIxMV9od3NpbV9vcHMgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNDMwNi1cXHRIV1NJTV9DT01NT05fT1BTXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjM5PXN0YXRpYyBpbnQgbWFjODAyMTFfaHdzaW1fbmV3X3JhZGlvKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ2LVxcdGVudW0gbmw4MDIxMV9iYW5kIGJhbmQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTY0NzpcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX29wcyAqb3BzID0gXFx1MDAyNm1hYzgwMjExX2h3c2ltX29wcztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjQ4LVxcdHN0cnVjdCBuZXQgKm5ldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTY5ODk9c3RhdGljIGludCBod3NpbV9kdW1wX3JhZGlvX25sKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDQwLS8qIEdlbmVyaWMgTmV0bGluayBvcGVyYXRpb25zIGFycmF5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzA0MTpzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGh3c2ltX29wc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwNDItXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcwODktXFx0Lm1vZHVsZSA9IFRISVNfTU9EVUxFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcwOTA6XFx0LnNtYWxsX29wcyA9IGh3c2ltX29wcyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDkxOlxcdC5uX3NtYWxsX29wcyA9IEFSUkFZX1NJWkUoaHdzaW1fb3BzKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDkyLVxcdC5yZXN2X3N0YXJ0X29wID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSICsgMSwgLy8gbWF0Y2ggd2l0aCBfX0hXU0lNX0NNRF9NQVhcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MTEuNjYyMTgxOTA1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MTEwMTQ3MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGBod3NpbV9vcHNgKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gd2l0aGluIHRoaXMgYGh3c2ltX29wc2Agc3RydWN0dXJlLiBJJ20gYXNzdW1pbmcsIGdpdmVuIHRoZSBjb250ZXh0LCB0aGlzIGlzIHJlbGF0ZWQgdG8gaGFyZHdhcmUgc2ltdWxhdGlvbiBvcGVyYXRpb25zLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBpc24ndCBpdD8gSSdtIGFscmVhZHkgbWVudGFsbHkgcGFyc2luZyBpdHMgaW50ZXJuYWwgc3RydWN0dXJlLiBXaGF0IGtpbmQgb2Ygb3BlcmF0aW9ucyBhcmUgYmVpbmcgZGVmaW5lZCBoZXJlPyBBcmUgdGhleSBiYXNpYyByZWFkL3dyaXRlIGZ1bmN0aW9ucywgbW9yZSBjb21wbGV4IGluc3RydWN0aW9uIGVtdWxhdGlvbnMsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgdHlwZSBkZWZpbml0aW9ucyBhcmUga2V5IGhlcmUuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbi4gV2hhdCdzIHRoZSBkZXNpZ24gcGhpbG9zb3BoeT8gSXMgaXQgYSBtb2R1bGFyIHN5c3RlbSwgb3IgbW9yZSBtb25vbGl0aGljPyBJJ20gaG9waW5nIGl04oCZcyB3ZWxsLWRlZmluZWQgYW5kIGRvY3VtZW50ZWQuIEnigJlsbCBzdGFydCBieSB0cmFjaW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhbmQgY3Jvc3MtcmVmZXJlbmNpbmcgdG8gdGhlIHN1cHBvcnRpbmcgZGVmaW5pdGlvbnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gdGhlIHNjb3BlIGFuZCBmdW5jdGlvbmFsaXR5IG9mIHRoZXNlIFwib3BlcmF0aW9ucyxcIiBzbyBJIGNhbiBkZXRlcm1pbmUgaG93IHRoZXkgY2FuIGJlIGFwcGxpZWQgYW5kIGludGVncmF0ZWQgd2l0aCBvdGhlciBzaW11bGF0aW9uIGNvbXBvbmVudHMuIEkgYW0gbGlrZWx5IHRvIHVzZSB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIHRoZWlyIGFyZ3VtZW50cyB0byBhc2NlcnRhaW4gdGhlaXIgdXRpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzU4MCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE1LjQ3MzE5OTEzMloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzQyMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcwNDEsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcwNDE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBod3NpbV9vcHNbXSA9IHtcXG43MDQyOlxcdFxcdHtcXG43MDQzOlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfUkVHSVNURVIsXFxuNzA0NDpcXHRcXHRcXHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxuNzA0NTpcXHRcXHRcXHQuZG9pdCA9IGh3c2ltX3JlZ2lzdGVyX3JlY2VpdmVkX25sLFxcbjcwNDY6XFx0XFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG43MDQ3OlxcdFxcdH0sXFxuNzA0ODpcXHRcXHR7XFxuNzA0OTpcXHRcXHRcXHQuY21kID0gSFdTSU1fQ01EX0ZSQU1FLFxcbjcwNTA6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNTE6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9jbG9uZWRfZnJhbWVfcmVjZWl2ZWRfbmwsXFxuNzA1MjpcXHRcXHR9LFxcbjcwNTM6XFx0XFx0e1xcbjcwNTQ6XFx0XFx0XFx0LmNtZCA9IEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FLFxcbjcwNTU6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNTY6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxcbjcwNTc6XFx0XFx0fSxcXG43MDU4OlxcdFxcdHtcXG43MDU5OlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfTkVXX1JBRElPLFxcbjcwNjA6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNjE6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9uZXdfcmFkaW9fbmwsXFxuNzA2MjpcXHRcXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbjcwNjM6XFx0XFx0fSxcXG43MDY0OlxcdFxcdHtcXG43MDY1OlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfREVMX1JBRElPLFxcbjcwNjY6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNjc6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9kZWxfcmFkaW9fbmwsXFxuNzA2ODpcXHRcXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcbjcwNjk6XFx0XFx0fSxcXG43MDcwOlxcdFxcdHtcXG43MDcxOlxcdFxcdFxcdC5jbWQgPSBIV1NJTV9DTURfR0VUX1JBRElPLFxcbjcwNzI6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNzM6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9nZXRfcmFkaW9fbmwsXFxuNzA3NDpcXHRcXHRcXHQuZHVtcGl0ID0gaHdzaW1fZHVtcF9yYWRpb19ubCxcXG43MDc1OlxcdFxcdH0sXFxuNzA3NjpcXHRcXHR7XFxuNzA3NzpcXHRcXHRcXHQuY21kID0gSFdTSU1fQ01EX1JFUE9SVF9QTVNSLFxcbjcwNzg6XFx0XFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbjcwNzk6XFx0XFx0XFx0LmRvaXQgPSBod3NpbV9wbXNyX3JlcG9ydF9ubCxcXG43MDgwOlxcdFxcdH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE1LjQ4MDk0Njg4MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc1MDg3MTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBIV1NJTV9BVFRSX1RYX0lORk9gIGluIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCoqXG5cbkFscmlnaHQsIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhhdCByaW5ncyBhIGJlbGwsIEkga25vdyBJJ3ZlIGVuY291bnRlcmVkIHRoYXQgYXR0cmlidXRlIGJlZm9yZSwgcHJvYmFibHkgZHVyaW5nIGRlYnVnZ2luZyBvciB3aGVuIGxvb2tpbmcgYXQgaG93IHdlJ3JlIGhhbmRsaW5nIHRyYW5zbWl0IGluZm9ybWF0aW9uIHdpdGhpbiB0aGUgaGFyZHdhcmUgc2ltdWxhdGlvbiBsYXllci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hlcmUncyBpdCB1c2VkPyBXaGF0J3MgdGhlIGNvbnRleHQ/XCIgVGhlIHRleHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGl0IHdpdGhpbiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIHRoZSBgbmxgIHN1ZmZpeCBzdWdnZXN0cyBuZXR3b3JrIGxpbmsgc3R1ZmYsIHNvIHdlJ3JlIHByb2JhYmx5IHByb2Nlc3Npbmcgc29tZSBraW5kIG9mIG5ldHdvcmsgcGFja2V0IG9yIGV2ZW50IHJlbGF0ZWQgdG8gZnJhbWUgcmVjZXB0aW9uLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyLiBMZXQncyBkaWcgaW50byBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgYW5kIGNvbmZpcm0gbXkgaHVuY2guIE5lZWQgdG8gdW5kZXJzdGFuZCBob3cgYEhXU0lNX0FUVFJfVFhfSU5GT2AgaXMgYmVpbmcgaW50ZXJwcmV0ZWQgYW5kIHVzZWQgaW4gdGhhdCBzcGVjaWZpYyBmdW5jdGlvbi4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHdoYXQgdG8gY2hlY2sgZm9yIC0gaXMgaXQgYmVpbmcgcGFyc2VkIGNvcnJlY3RseT8gSXMgdGhlIGluZm9ybWF0aW9uIGJlaW5nIHVzZWQgZG93bnN0cmVhbSBpbiBhIG1lYW5pbmdmdWwgd2F5PyBBbnkgcG90ZW50aWFsIGZvciBidWZmZXIgb3ZlcmZsb3dzIG9yIGluY29ycmVjdCBkYXRhIGludGVycHJldGF0aW9uPyBMZXQncyBnZXQgdG8gd29yayBhbmQgZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NDAsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjE5LjY1NjAzNjc5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY3ODkwOTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhXU0lNX0FUVFJfVFhfSU5GT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz04NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IGh3c2ltX2dlbmxfcG9saWN5W0hXU0lNX0FUVFJfTUFYICsgMV0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzItXFx0W0hXU0lNX0FUVFJfU0lHTkFMXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODczOlxcdFtIV1NJTV9BVFRSX1RYX0lORk9dID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04NzQtXFx0XFx0TkxBX1BPTElDWV9FWEFDVF9MRU4oSUVFRTgwMjExX1RYX01BWF9SQVRFUyAqXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODctXFx0W0hXU0lNX0FUVFJfRlJFUV0gPSB7IC50eXBlID0gTkxBX1UzMiB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjg4ODpcXHRbSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTXSA9IHsgLnR5cGUgPSBOTEFfQklOQVJZIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtODg5LVxcdFtIV1NJTV9BVFRSX1BFUk1fQUREUl0gPSBOTEFfUE9MSUNZX0VUSF9BRERSX0NPTVBBVCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTE2MzU9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fdHhfZnJhbWVfbmwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE3MTE6XFx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk8sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxMi1cXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlKSpJRUVFODAyMTFfVFhfTUFYX1JBVEVTLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNzE2OlxcdGlmIChubGFfcHV0KHNrYiwgSFdTSU1fQVRUUl9UWF9JTkZPX0ZMQUdTLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTctXFx0XFx0ICAgIHNpemVvZihzdHJ1Y3QgaHdzaW1fdHhfcmF0ZV9mbGFnKSAqIElFRUU4MDIxMV9UWF9NQVhfUkFURVMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz02MzIwPXN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzM5LVxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9TSUdOQUxdIHx8XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NjM0MDpcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM0MS1cXHRcXHRnb3RvIG91dDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODUtXFx0dHhfYXR0ZW1wdHMgPSAoc3RydWN0IGh3c2ltX3R4X3JhdGUgKilubGFfZGF0YShcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2Mzg2OlxcdFxcdCAgICAgICBpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1RYX0lORk9dKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02Mzg3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoxOS45MjM5NDMxNDlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4ODA4MjYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIHV0aWxpemluZyBgSFdTSU1fQVRUUl9UWF9JTkZPYC4gVGhpcyBzZWVtcyBmdW5jdGlvbmFsLCBzcGVjaWZpY2FsbHkgaW1wYWN0aW5nIHRoZSBuZXRsaW5rIHBhcnNpbmcgaGFwcGVuaW5nIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUVgLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gaGVyZS4gTm93LCBiZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHNjYW4gZm9yIGFueSByZWxhdGVkIGZ1bmN0aW9ucyB0aGF0IHRoaXMgbWlnaHQgdG91Y2guIEknbSBnb2luZyB0byBzdGFydCB3aXRoIGEgZGVlcGVyIGxvb2sgYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIHRvIHZlcmlmeSBteSBmaXJzdCBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwMDgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MjQuODEyMDI4ODMxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MzIwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCI2MzIwOlxcdHN0YXRpYyBpbnQgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubChzdHJ1Y3Qgc2tfYnVmZiAqc2tiXzIsXFxuNjMyMTpcXHRcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbjYzMjI6XFx0e1xcbjYzMjM6XFx0XFxuNjMyNDpcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyO1xcbjYzMjU6XFx0XFx0c3RydWN0IG1hYzgwMjExX2h3c2ltX2RhdGEgKmRhdGEyO1xcbjYzMjY6XFx0XFx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eGk7XFxuNjMyNzpcXHRcXHRzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqdHhfYXR0ZW1wdHM7XFxuNjMyODpcXHRcXHR1NjQgcmV0X3NrYl9jb29raWU7XFxuNjMyOTpcXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqdG1wO1xcbjYzMzA6XFx0XFx0Y29uc3QgdTggKnNyYztcXG42MzMxOlxcdFxcdHVuc2lnbmVkIGludCBod3NpbV9mbGFncztcXG42MzMyOlxcdFxcdGludCBpO1xcbjYzMzM6XFx0XFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG42MzM0OlxcdFxcdGJvb2wgZm91bmQgPSBmYWxzZTtcXG42MzM1OlxcdFxcbjYzMzY6XFx0XFx0aWYgKCFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX0FERFJfVFJBTlNNSVRURVJdIHx8XFxuNjMzNzpcXHRcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfRkxBR1NdIHx8XFxuNjMzODpcXHRcXHQgICAgIWluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSB8fFxcbjYzMzk6XFx0XFx0ICAgICFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcXG42MzQwOlxcdFxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcXG42MzQxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNDI6XFx0XFxuNjM0MzpcXHRcXHRzcmMgPSAodm9pZCAqKW5sYV9kYXRhKGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQUREUl9UUkFOU01JVFRFUl0pO1xcbjYzNDQ6XFx0XFx0aHdzaW1fZmxhZ3MgPSBubGFfZ2V0X3UzMihpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX0ZMQUdTXSk7XFxuNjM0NTpcXHRcXHRyZXRfc2tiX2Nvb2tpZSA9IG5sYV9nZXRfdTY0KGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfQ09PS0lFXSk7XFxuNjM0NjpcXHRcXG42MzQ3OlxcdFxcdGRhdGEyID0gZ2V0X2h3c2ltX2RhdGFfcmVmX2Zyb21fYWRkcihzcmMpO1xcbjYzNDg6XFx0XFx0aWYgKCFkYXRhMilcXG42MzQ5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNTA6XFx0XFxuNjM1MTpcXHRcXHRpZiAoIWh3c2ltX3ZpcnRpb19lbmFibGVkKSB7XFxuNjM1MjpcXHRcXHRcXHRpZiAoaHdzaW1fbmV0X2dldF9uZXRncm91cChnZW5sX2luZm9fbmV0KGluZm8pKSAhPVxcbjYzNTM6XFx0XFx0XFx0ICAgIGRhdGEyLVxcdTAwM2VuZXRncm91cClcXG42MzU0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbjYzNTU6XFx0XFxuNjM1NjpcXHRcXHRcXHRpZiAoaW5mby1cXHUwMDNlc25kX3BvcnRpZCAhPSBkYXRhMi1cXHUwMDNld21lZGl1bWQpXFxuNjM1NzpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG42MzU4OlxcdFxcdH1cXG42MzU5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzoyNC44MTI1MDQ0ODFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTA0MTgzOTM5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipBbmFseXppbmcgSFdTSU0gVFggSW5mbyBQcm9jZXNzaW5nKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIHRoZSBrZXkgZnVuY3Rpb24gdGhhdCdzIGRlYWxpbmcgd2l0aCB0aGUgY29tbWFuZCB3aGVyZSB3ZSdyZSBwYXJzaW5nIHRoYXQgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYXR0cmlidXRlLiBJIHNob3VsZCBhbHNvIGNoZWNrIG91dCBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFzIHdlbGwsIHNpbmNlIHRoYXQncyBhbm90aGVyIHBsYWNlIHdoZXJlIHRoZSBwYXJzaW5nIG1pZ2h0IGJlIGhhcHBlbmluZy4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgaXQncyBiZWluZyBkb25lIGluIHRob3NlIHR3by5cblxuTm93LCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uc+KApiByaWdodCwgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCdzIHRoZSBwcmltYXJ5IG9uZSB0byBsb29rIGF0LCBuYXR1cmFsbHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGJ1aWxkIGlzIGNvbmZpZ3VyZWQgY29ycmVjdGx5IGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTAzNCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6MzMuODU0MzQ3MzE0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA1MTQyOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQwNzoyMzozOC45NTk1MDI2NTlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQwNDU4MTIyNDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBQb2xpY3kgVXBkYXRlKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBjaGFuZ2UuIElzIHRoaXMgdGhlIG9ubHkgY29uZmlndXJhdGlvbiBiZWluZyBtb2RpZmllZCwgb3IgYXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgYWRqdXN0bWVudHM/IExldCdzIHNlZS4uLiB0aGUgcGF0Y2ggaXRzZWxmIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQgbG9va3MgbGlrZSB0aGUga2V5IHVwZGF0ZSBpcyB3aXRoaW4gdGhlIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIHRoZSBgSFdTSU1fQVRUUl9UWF9JTkZPYCBhdHRyaWJ1dGUuIFRoZSBjb2RlIGVuZm9yY2VzIGFuIGV4YWN0IGxlbmd0aCBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2Agbm93LiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gbWUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGlzIGNoYW5nZSBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlIHRoaXMgc3BlY2lmaWMgYXR0cmlidXRlLiBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaW1tZWRpYXRlbHkganVtcHMgb3V0LiBBcmUgdGhlcmUgYW55ICpvdGhlciogZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGBIV1NJTV9BVFRSX1RYX0lORk9gPyBJZiBzbywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgaW5jb21wYXRpYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBlbHNld2hlcmUuIEkgd2lsbCBuZWVkIHRvIHRyYWNrIHRoZW0gZG93bi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEzOTksIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMDc6MjM6NTMuMDA1MzE3NDg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAyMjY2NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSFdTSU1fQVRUUl9UWF9JTkZPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTg2NT1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgaHdzaW1fZ2VubF9wb2xpY3lbSFdTSU1fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3Mi1cXHRbSFdTSU1fQVRUUl9TSUdOQUxdID0geyAudHlwZSA9IE5MQV9VMzIgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo4NzM6XFx0W0hXU0lNX0FUVFJfVFhfSU5GT10gPVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg3NC1cXHRcXHROTEFfUE9MSUNZX0VYQUNUX0xFTihJRUVFODAyMTFfVFhfTUFYX1JBVEVTICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTg4Ny1cXHRbSFdTSU1fQVRUUl9GUkVRXSA9IHsgLnR5cGUgPSBOTEFfVTMyIH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6ODg4OlxcdFtIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1NdID0geyAudHlwZSA9IE5MQV9CSU5BUlkgfSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy04ODktXFx0W0hXU0lNX0FUVFJfUEVSTV9BRERSXSA9IE5MQV9QT0xJQ1lfRVRIX0FERFJfQ09NUEFULFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MTYzNT1zdGF0aWMgdm9pZCBtYWM4MDIxMV9od3NpbV90eF9mcmFtZV9ubChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE3MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTcxMTpcXHRpZiAobmxhX3B1dChza2IsIEhXU0lNX0FUVFJfVFhfSU5GTyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzEyLVxcdFxcdCAgICBzaXplb2Yoc3RydWN0IGh3c2ltX3R4X3JhdGUpKklFRUU4MDIxMV9UWF9NQVhfUkFURVMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNzE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE3MTY6XFx0aWYgKG5sYV9wdXQoc2tiLCBIV1NJTV9BVFRSX1RYX0lORk9fRkxBR1MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTcxNy1cXHRcXHQgICAgc2l6ZW9mKHN0cnVjdCBod3NpbV90eF9yYXRlX2ZsYWcpICogSUVFRTgwMjExX1RYX01BWF9SQVRFUyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTYzMjA9c3RhdGljIGludCBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sKHN0cnVjdCBza19idWZmICpza2JfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzMzktXFx0ICAgICFpbmZvLVxcdTAwM2VhdHRyc1tIV1NJTV9BVFRSX1NJR05BTF0gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo2MzQwOlxcdCAgICAhaW5mby1cXHUwMDNlYXR0cnNbSFdTSU1fQVRUUl9UWF9JTkZPXSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy02MzQxLVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNjM4NS1cXHR0eF9hdHRlbXB0cyA9IChzdHJ1Y3QgaHdzaW1fdHhfcmF0ZSAqKW5sYV9kYXRhKFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjYzODY6XFx0XFx0ICAgICAgIGluZm8tXFx1MDAzZWF0dHJzW0hXU0lNX0FUVFJfVFhfSU5GT10pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTYzODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjIzOjUzLjI0NTU0OTQ1NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTU5Njk0NTg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGxpbmsgRnJhbWUgVHJhbnNtaXNzaW9uIGluIG1hYzgwMjExX2h3c2ltKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIG5ldGxpbmsgZnJhbWVzIGFyZSBiZWluZyBoYW5kbGVkIHdpdGhpbiB0aGUgbWFjODAyMTFfaHdzaW0gbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB0cmFjZSB0aGUgam91cm5leSBvZiB0aGUgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYXR0cmlidXRlIHRocm91Z2ggdGhlIHN5c3RlbS4gSSBrbm93IHRoYXQgYG1hYzgwMjExX2h3c2ltX3R4X2ZyYW1lX25sYCBpcyByZXNwb25zaWJsZSBmb3IgaW5qZWN0aW5nIHRoaXMgYXR0cmlidXRlIGludG8gYW4gYHNrYmAgKHNvY2tldCBidWZmZXIpLiBUaGVuLCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaGFzIHRoZSBqb2Igb2YgcGFyc2luZyB0aGF0IGluZm9ybWF0aW9uLlxuXG5UaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBjb3JlIGNoYW5nZSByZXZvbHZlcyBhcm91bmQgaG93IHRoaXMgYXR0cmlidXRlIGlzIGRlZmluZWQgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBOZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIGF0dGVudGlvbiBpcyBkcmF3biB0byBgaHdzaW1fZ2VubF9wb2xpY3lgLCB3aGljaCBhcHBlYXJzIHRvIGJlIHRoZSBwb2xpY3kgdXNlZCBieSBib3RoIGBnZW5sbXNnX3BhcnNlYCB3aXRoaW4gYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCBhbmQgdGhlIG92ZXJhbGwgYGh3c2ltX2dlbmxfZmFtaWx5YC4gVGhlIGNvbm5lY3Rpb24gdG8gYGh3c2ltX2dlbmxfcG9saWN5YCBpcyBrZXkhXG5cblRoZXJlZm9yZSwgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnRzIGZvciBteSBpbnZlc3RpZ2F0aW9uIGFyZTpcblxuKiAgIGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCAtIHRoaXMgc2VlbXMgY3J1Y2lhbCBmb3IgdGhlICpyZWNlaXZpbmcqIGFuZCBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHR4IGluZm8uXG4qICAgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCAtIHNpbmNlIHRoaXMgZnVuY3Rpb24gaXMgcGFyc2luZyB0aGUgY29tbWFuZCB1c2luZyB0aGUgZ2VubCBwb2xpY3ksIGl0IG11c3QgYmUgdGhlIGhhbmRsaW5nIGVudHJ5cG9pbnQgZm9yIGNvbW1hbmRzIHVzaW5nIHRoaXMgcG9saWN5LlxuXG5JJ2xsIHN0YXJ0IGJ5IHRha2luZyBhIGNsb3NlciBsb29rIGF0IGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IHRydWx5IGlzIHRoZSBwcmltYXJ5IGNvbW1hbmQgaGFuZGxlciwgYW5kIHRodXMsIGlmIGl0J3MgYSBnb29kIHBsYWNlIHRvIGZvY3VzIG15IGVmZm9ydHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODczLCJPdXRwdXRUb2tlbnMiOjUwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjA4Ljg0MjQ5ODYxN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDg1ODMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcyMzIsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjcyMzI6XFx0c3RhdGljIGludCBod3NpbV92aXJ0aW9faGFuZGxlX2NtZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbjcyMzM6XFx0e1xcbjcyMzQ6XFx0XFx0c3RydWN0IG5sbXNnaGRyICpubGg7XFxuNzIzNTpcXHRcXHRzdHJ1Y3QgZ2VubG1zZ2hkciAqZ25saDtcXG43MjM2OlxcdFxcdHN0cnVjdCBubGF0dHIgKnRiW0hXU0lNX0FUVFJfTUFYICsgMV07XFxuNzIzNzpcXHRcXHRzdHJ1Y3QgZ2VubF9pbmZvIGluZm8gPSB7fTtcXG43MjM4OlxcdFxcdGludCBlcnI7XFxuNzIzOTpcXHRcXG43MjQwOlxcdFxcdG5saCA9IG5sbXNnX2hkcihza2IpO1xcbjcyNDE6XFx0XFx0Z25saCA9IG5sbXNnX2RhdGEobmxoKTtcXG43MjQyOlxcdFxcbjcyNDM6XFx0XFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgbmxoLVxcdTAwM2VubG1zZ19sZW4pXFxuNzI0NDpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG43MjQ1OlxcdFxcbjcyNDY6XFx0XFx0ZXJyID0gZ2VubG1zZ19wYXJzZShubGgsIFxcdTAwMjZod3NpbV9nZW5sX2ZhbWlseSwgdGIsIEhXU0lNX0FUVFJfTUFYLFxcbjcyNDc6XFx0XFx0XFx0XFx0ICAgIGh3c2ltX2dlbmxfcG9saWN5LCBOVUxMKTtcXG43MjQ4OlxcdFxcdGlmIChlcnIpIHtcXG43MjQ5OlxcdFxcdFxcdHByX2Vycl9yYXRlbGltaXRlZChcXFwiaHdzaW06IGdlbmxtc2dfcGFyc2UgcmV0dXJuZWQgJWRcXFxcblxcXCIsIGVycik7XFxuNzI1MDpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbjcyNTE6XFx0XFx0fVxcbjcyNTI6XFx0XFxuNzI1MzpcXHRcXHRpbmZvLmF0dHJzID0gdGI7XFxuNzI1NDpcXHRcXG43MjU1OlxcdFxcdHN3aXRjaCAoZ25saC1cXHUwMDNlY21kKSB7XFxuNzI1NjpcXHRcXHRjYXNlIEhXU0lNX0NNRF9GUkFNRTpcXG43MjU3OlxcdFxcdFxcdGh3c2ltX2Nsb25lZF9mcmFtZV9yZWNlaXZlZF9ubChza2IsIFxcdTAwMjZpbmZvKTtcXG43MjU4OlxcdFxcdFxcdGJyZWFrO1xcbjcyNTk6XFx0XFx0Y2FzZSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRTpcXG43MjYwOlxcdFxcdFxcdGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmwoc2tiLCBcXHUwMDI2aW5mbyk7XFxuNzI2MTpcXHRcXHRcXHRicmVhaztcXG43MjYyOlxcdFxcdGNhc2UgSFdTSU1fQ01EX1JFUE9SVF9QTVNSOlxcbjcyNjM6XFx0XFx0XFx0aHdzaW1fcG1zcl9yZXBvcnRfbmwoc2tiLCBcXHUwMDI2aW5mbyk7XFxuNzI2NDpcXHRcXHRcXHRicmVhaztcXG43MjY1OlxcdFxcdGRlZmF1bHQ6XFxuNzI2NjpcXHRcXHRcXHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXFxcImh3c2ltOiBpbnZhbGlkIGNtZDogJWRcXFxcblxcXCIsIGdubGgtXFx1MDAzZWNtZCk7XFxuNzI2NzpcXHRcXHRcXHRyZXR1cm4gLUVQUk9UTztcXG43MjY4OlxcdFxcdH1cXG43MjY5OlxcdFxcdHJldHVybiAwO1xcbjcyNzA6XFx0fVxcbjcyNzE6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjA4Ljg0NDU4ODA1N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI5MjgzODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIEhXU0lNJ3MgQ29uZmlndXJhdGlvbiBhbmQgRGF0YSBIYW5kbGluZyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBjb25maXJtcyB3aGF0IEkgc3VzcGVjdGVkOiBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGlzIGluZGVlZCBsZXZlcmFnaW5nIGBod3NpbV9nZW5sX3BvbGljeWAgZm9yIG1lc3NhZ2UgcGFyc2luZy4gQW5kLCBhcyBleHBlY3RlZCwgdGhlIGdlbmVyaWMgbmV0bGluayBjb2RlIGFsc28gbGVhbnMgb24gYGh3c2ltX2dlbmxfcG9saWN5YCBmb3IgdGhlIGBod3NpbV9nZW5sX2ZhbWlseWAuIFNvLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC5cblxuTXkgZm9jdXMgbm93IGlzIGRlZmluaXRlbHkgb24gYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGFuZCwgZXNwZWNpYWxseSwgYGh3c2ltX3ZpcnRpb19oYW5kbGVfY21kYCwgd2hpY2ggYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBmb3IgZGF0YSBoYW5kbGluZywgYXMgc3VzcGVjdGVkLlxuXG5UaGUgZW5hYmxpbmcgY29uZmlnIGlzLCBvZiBjb3Vyc2UsIGBNQUM4MDIxMV9IV1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGNvbmZpZ3VyYXRpb25zIHRoYXQgcGxheSBhIHJvbGUuIEkgbmVlZCB0byBjcm9zcy1jaGVjayB0aGlzIHRvIGJlIGNlcnRhaW4gdGhpcyBpc24ndCBhIHBhcnRpYWwgcGljdHVyZS4gTGV0J3Mgc2VlIGlmIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBjb21lIGludG8gcGxheSBoZXJlLCBqdXN0IHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDA3NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjEzLjY3Mzg3NTQ5M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0ODczMjM5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJNQUM4MDIxMV9IV1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZToxOm9iai0kKENPTkZJR19NQUM4MDIxMV9IV1NJTSlcXHQrPSBtYWM4MDIxMV9od3NpbS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9NYWtlZmlsZS0yLW1hYzgwMjExX2h3c2ltLW9ianNcXHRcXHQrPSBtYWM4MDIxMV9od3NpbV9tYWluLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC04LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDo5OiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjEwOiNkZWZpbmUgX19NQUM4MDIxMV9IV1NJTV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTExLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTIxNz1zdHJ1Y3QgaHdzaW1fdHhfcmF0ZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjMwLSAqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1JUU19DVFM6IFVzZSBSVFMvQ1RTIGV4Y2hhbmdlIGZvciB0aGlzIHJhdGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzMjogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUOiBDVFMtdG8tc2VsZiBwcm90ZWN0aW9uIGlzIHJlcXVpcmVkLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yMzMtICpcXHRUaGlzIGlzIHNldCBpZiB0aGUgY3VycmVudCBCU1MgcmVxdWlyZXMgRVJQIHByb3RlY3Rpb24uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNDogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX1NIT1JUX1BSRUFNQkxFOiBVc2Ugc2hvcnQgcHJlYW1ibGUuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjIzNTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfTUNTOiBIVCByYXRlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyMzY6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDX1ZIVF9NQ1M6IFZIVCBNQ1MgcmF0ZSwgaW4gdGhpcyBjYXNlIHRoZSBpZHggZmllbGQgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjM3LSAqXFx0c3BsaXQgaW50byBhIGhpZ2hlciA0IGJpdHMgKE5zcykgYW5kIGxvd2VyIDQgYml0cyAoTUNTIG51bWJlcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjM4OiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDogSW5kaWNhdGVzIHdoZXRoZXIgdGhpcyByYXRlIHNob3VsZCBiZSB1c2VkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTIzOS0gKlxcdGluIEdyZWVuZmllbGQgbW9kZS5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQwOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ180MF9NSFpfV0lEVEg6IEluZGljYXRlcyBpZiB0aGUgQ2hhbm5lbCBXaWR0aCBzaG91bGQgYmVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQxLSAqXFx0NDAgTUh6LlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNDI6ICogQE1BQzgwMjExX0hXU0lNX1RYX1JDXzgwX01IWl9XSURUSDogSW5kaWNhdGVzIDgwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjQzOiAqIEBNQUM4MDIxMV9IV1NJTV9UWF9SQ18xNjBfTUhaX1dJRFRIOiBJbmRpY2F0ZXMgMTYwIE1IeiB0cmFuc21pc3Npb25cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ0LSAqXFx0KDgwKzgwIGlzbid0IHN1cHBvcnRlZCB5ZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0NTogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEE6IFRoZSBmcmFtZSBzaG91bGQgYmUgdHJhbnNtaXR0ZWQgb24gYm90aCBvZlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNDYtICpcXHR0aGUgYWRqYWNlbnQgMjAgTUh6IGNoYW5uZWxzLCBpZiB0aGUgY3VycmVudCBjaGFubmVsIHR5cGUgaXNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjQ3LSAqXFx0Tkw4MDIxMV9DSEFOX0hUNDBNSU5VUyBvciBOTDgwMjExX0NIQU5fSFQ0MFBMVVMuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI0ODogKiBATUFDODAyMTFfSFdTSU1fVFhfUkNfU0hPUlRfR0k6IFNob3J0IEd1YXJkIGludGVydmFsIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI0OS0gKlxcdHJhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg9MjUxPWVudW0gaHdzaW1fdHhfcmF0ZV9mbGFncyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUU1xcdFxcdD0gQklUKDApLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTM6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUXFx0XFx0PSBCSVQoMSksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI1NDpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEVcXHQ9IEJJVCgyKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmgtMjU1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0yNTYtXFx0LyogcmF0ZSBpbmRleCBpcyBhbiBIVC9WSFQgTUNTIGluc3RlYWQgb2YgYW4gaW5kZXggKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU3OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX01DU1xcdFxcdFxcdD0gQklUKDMpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNTg6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfR1JFRU5fRklFTERcXHRcXHQ9IEJJVCg0KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjU5OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzQwX01IWl9XSURUSFxcdFxcdD0gQklUKDUpLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaDoyNjA6XFx0TUFDODAyMTFfSFdTSU1fVFhfUkNfRFVQX0RBVEFcXHRcXHQ9IEJJVCg2KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjYxOlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJXFx0XFx0PSBCSVQoNyksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MjpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ19WSFRfTUNTXFx0XFx0XFx0PSBCSVQoOCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjI2MzpcXHRNQUM4MDIxMV9IV1NJTV9UWF9SQ184MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCg5KSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLmg6MjY0OlxcdE1BQzgwMjExX0hXU0lNX1RYX1JDXzE2MF9NSFpfV0lEVEhcXHRcXHQ9IEJJVCgxMCksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oLTI2NS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oPTMyOD1lbnVtIGh3c2ltX3JhdGVfaW5mb19hdHRyaWJ1dGVzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW0uaC0zNDctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbS5oOjM0ODojZW5kaWYgLyogX19NQUM4MDIxMV9IV1NJTV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oOjEwOiNpZm5kZWYgX19NQUM4MDIxMV9IV1NJTV9JX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxMTojZGVmaW5lIF9fTUFDODAyMTFfSFdTSU1fSV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9pLmgtMTItXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaD0xNjU9dm9pZCBpZWVlODAyMTFfaHdzaW1fd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1faS5oLTE2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX2kuaDoxNjg6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fSV9IICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz03MTI9c3RhdGljIHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpnZXRfaHdzaW1fZGF0YV9yZWZfZnJvbV9hZGRyKGNvbnN0IHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjcxNzovKiBNQUM4MDIxMV9IV1NJTSBuZXRsaW5rIGZhbWlseSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTcxOC1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9tdWx0aWNhc3RfZ3JvdXAgaHdzaW1fbWNncnBzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzI4Oi8qIE1BQzgwMjExX0hXU0lNIG5ldGxpbmsgcG9saWN5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzI5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9ODY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBod3NpbV9nZW5sX3BvbGljeVtIV1NJTV9BVFRSX01BWCArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjkwMjovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gcXVldWVzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtOTAzLXN0YXRpYyBzdHJ1Y3QgdmlydHF1ZXVlICpod3NpbV92cXNbSFdTSU1fTlVNX1ZRU107XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0xNTY0PXN0YXRpYyBpbmxpbmUgdTE2IHRyYW5zX3R4X3JhdGVfZmxhZ3NfaWVlZTJod3NpbShzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUgKnJhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTY4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfUlRTX0NUUylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTY5OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfUlRTX0NUUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTcwLVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19VU0VfQ1RTX1BST1RFQ1QpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3MTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVVNFX0NUU19QUk9URUNUO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1NzItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1VTRV9TSE9SVF9QUkVBTUJMRSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTczOlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19VU0VfU0hPUlRfUFJFQU1CTEU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMTU3NC1cXHRpZiAocmF0ZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJRUVFODAyMTFfVFhfUkNfTUNTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1NzU6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ19HUkVFTl9GSUVMRClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzoxNTc3OlxcdFxcdHJlc3VsdCB8PSBNQUM4MDIxMV9IV1NJTV9UWF9SQ19HUkVFTl9GSUVMRDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTc4LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ180MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU3OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfNDBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODAtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX0RVUF9EQVRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODE6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX0RVUF9EQVRBO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODItXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1NIT1JUX0dJKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjE1ODM6XFx0XFx0cmVzdWx0IHw9IE1BQzgwMjExX0hXU0lNX1RYX1JDX1NIT1JUX0dJO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODQtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDX1ZIVF9NQ1MpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfVkhUX01DUztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTg2LVxcdGlmIChyYXRlLVxcdTAwM2VmbGFncyBcXHUwMDI2IElFRUU4MDIxMV9UWF9SQ184MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4NzpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfODBfTUhaX1dJRFRIO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTE1ODgtXFx0aWYgKHJhdGUtXFx1MDAzZWZsYWdzIFxcdTAwMjYgSUVFRTgwMjExX1RYX1JDXzE2MF9NSFpfV0lEVEgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6MTU4OTpcXHRcXHRyZXN1bHQgfD0gTUFDODAyMTFfSFdTSU1fVFhfUkNfMTYwX01IWl9XSURUSDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0xNTkwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9MzQ2Mj1zdGF0aWMgY29uc3QgY2hhciBtYWM4MDIxMV9od3NpbV9nc3RyaW5nc19zdGF0c1tdW0VUSF9HU1RSSU5HX0xFTl0gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNDcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0NzM6I2RlZmluZSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOIEFSUkFZX1NJWkUobWFjODAyMTFfaHdzaW1fZ3N0cmluZ3Nfc3RhdHMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0ODQ9c3RhdGljIGludCBtYWM4MDIxMV9od3NpbV9nZXRfZXRfc3NldF9jb3VudChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTM0ODctXFx0aWYgKHNzZXQgPT0gRVRIX1NTX1NUQVRTKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjM0ODg6XFx0XFx0cmV0dXJuIE1BQzgwMjExX0hXU0lNX1NTVEFUU19MRU47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzQ4OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTM0OTI9c3RhdGljIHZvaWQgbWFjODAyMTFfaHdzaW1fZ2V0X2V0X3N0YXRzKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzUwNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozNTA4OlxcdFdBUk5fT04oaSAhPSBNQUM4MDIxMV9IV1NJTV9TU1RBVFNfTEVOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zNTA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTU2MTI9c3RhdGljIGNvbnN0IHU4IGlmdHlwZXNfZXh0X2NhcGFfYXBbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTU2MjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NTYyMTojZGVmaW5lIE1BQzgwMjExX0hXU0lNX01MRF9DQVBBX09QU1xcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjIyLVxcdEZJRUxEX1BSRVBfQ09OU1QoSUVFRTgwMjExX01MRF9DQVBfT1BfVElEX1RPX0xJTktfTUFQX05FR19TVVBQLCBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz01NjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2lwaHlfaWZ0eXBlX2V4dF9jYXBhYiBtYWM4MDIxMV9od3NpbV9pZnR5cGVzX2V4dF9jYXBhW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy01NjM0LVxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfRU1MX0NBUF9FTUxNUl9TVVBQT1JULFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjU2MzU6XFx0XFx0Lm1sZF9jYXBhX2FuZF9vcHMgPSBNQUM4MDIxMV9IV1NJTV9NTERfQ0FQQV9PUFMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNTYzNi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM9NzA4Mz1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGh3c2ltX2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3MDg0OlxcdC5uYW1lID0gXFxcIk1BQzgwMjExX0hXU0lNXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy03MDg1LVxcdC52ZXJzaW9uID0gMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTc0MDI9c3RhdGljIHZvaWQgaHdzaW1fdmlydGlvX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmM6NzQxMTovKiBNQUM4MDIxMV9IV1NJTSB2aXJ0aW8gZGV2aWNlIGlkIHRhYmxlICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtNzQxMi1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19kZXZpY2VfaWQgaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzo3NDEzOlxcdHsgVklSVElPX0lEX01BQzgwMjExX0hXU0lNLCBWSVJUSU9fREVWX0FOWV9JRCB9LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jLTc0MTQtXFx0eyAwIH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzg9c3RhdGljIHU2NCBod3NpbV9uYW5fZ2V0X21hc3Rlcl9yYW5rKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgzOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy04NC1cXHRcXHRtYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9MjE2PXZvaWQgbWFjODAyMTFfaHdzaW1fbmFuX3J4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0yNzMtXFx0aWYgKChzbG90ICE9IFNMT1RfMjRHSFpfRFcgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjI3NDpcXHQgICAgIGRhdGEtXFx1MDAzZW5hbi5waGFzZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTikgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTI3NS1cXHQgICAgcnhfc3RhdHVzLmZyZXEgIT0gMjQzNylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDM2LVxcdFxcdCAgICAoY2cgPT0gb3duX2NnIFxcdTAwMjZcXHUwMDI2IGZyYW1lX2FtciBcXHUwMDNlIGN1cnJfYW1yKSB8fFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDM3OlxcdFxcdCAgICBkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQzOC1cXHRcXHRcXHQvKiBBdm9pZCBhIHN0YXRlIHRyYW5zaXRpb24gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNDY4LVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NDY5OlxcdFxcdFxcdGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTQ3MC1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9NjEyPW1hYzgwMjExX2h3c2ltX25hbl9leGVjX3N0YXRlX3RyYW5zaXRpb25zKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjUtXFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNjIDMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2MjY6XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJvbGUgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2Mjc6XFx0ZWxzZSBpZiAoZGF0YS1cXHUwMDNlbmFuLnJvbGUgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MjgtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfdHJhbnNpdGlvbl9zY29yZSBcXHUwMDNlPSAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjI5OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMDpcXHRlbHNlIGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzEtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzZT0gMylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjYzMjpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSA9IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjMzOlxcdGVsc2UgaWYgKGRhdGEtXFx1MDAzZW5hbi5yb2xlID09IE1BQzgwMjExX0hXU0lNX05BTl9ST0xFX05PTl9TWU5DIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02MzQtXFx0XFx0IGRhdGEtXFx1MDAzZW5hbi5zeW5jX3RyYW5zaXRpb25fc2NvcmUgXFx1MDAzYyAzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjM1OlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTYzNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtNjQxLVxcdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6NjQyOlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucm9sZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY0My1cXHQgICAgIWhydGltZXJfYWN0aXZlKFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uZGlzY292ZXJ5X2JlYWNvbl90aW1lcikpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY1NDpcXHRcXHRpZiAoZGF0YS1cXHUwMDNlbmFuLnBoYXNlID09IE1BQzgwMjExX0hXU0lNX05BTl9QSEFTRV9TQ0FOKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo2NTU6XFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnBoYXNlID0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1dBUk1VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTY1Ni1cXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gTkFOX1dBUk1VUF9EV1NUO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NTktXFx0XFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjY2MDpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVA7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy02NjEtXFx0XFx0XFx0ZGF0YS1cXHUwMDNlbmFuLnJhbmRvbV9mYWN0b3JfdmFsaWRfZHdzdCA9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTY5NT1tYWM4MDIxMV9od3NpbV9uYW5fdHhfYmVhY29uKHN0cnVjdCBtYWM4MDIxMV9od3NpbV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy03NTAtXFx0bmFuX2F0dHIubGVuZ3RoID0gY3B1X3RvX2xlMTYoc2l6ZW9mKG1hc3Rlcl9pbmRpY2F0aW9uKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzo3NTE6XFx0aWYgKGRhdGEtXFx1MDAzZW5hbi5waGFzZSA9PSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfVVApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTc1Mi1cXHRcXHRtYXN0ZXJfaW5kaWNhdGlvbi5tYXN0ZXJfcHJlZiA9IGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9Nzc0PW1hYzgwMjExX2h3c2ltX25hbl9zbG90X3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODA3LVxcdFxcdHR4X3N5bmNfYmVhY29uID1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwODpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjgwOTpcXHRcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucm9sZSAhPSBNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9OT05fU1lOQztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTgxMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jPTg2Nz1tYWM4MDIxMV9od3NpbV9uYW5fZGlzY292ZXJ5X2JlYWNvbl90aW1lcihzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTg3OS1cXHRzY29wZWRfZ3VhcmQoc3BpbmxvY2ssIFxcdTAwMjZkYXRhLVxcdTAwM2VuYW4uc3RhdGVfbG9jaykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6ODgwOlxcdFxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4gfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjg4MTpcXHRcXHQgICAgZGF0YS1cXHUwMDNlbmFuLnJvbGUgIT0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtODgyLVxcdFxcdFxcdHJldHVybiBIUlRJTUVSX05PUkVTVEFSVDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM9OTA5PWludCBtYWM4MDIxMV9od3NpbV9uYW5fc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyNi1cXHRcXHQvKiBTdGFydCBpbiB0aGUgXFxcInNjYW5cXFwiIHBoYXNlIGFuZCBzdGF5IHRoZXJlIGZvciBhIGxpdHRsZSBiaXQgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jOjkyNzpcXHRcXHRkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPSBNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfU0NBTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTkyOC1cXHRcXHRkYXRhLVxcdTAwM2VuYW4ucmFuZG9tX2ZhY3Rvcl92YWxpZF9kd3N0ID0gMTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMwLVxcdFxcdGRhdGEtXFx1MDAzZW5hbi5tYXN0ZXJfcHJlZiA9IGNvbmYtXFx1MDAzZW1hc3Rlcl9wcmVmO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmM6OTMxOlxcdFxcdGRhdGEtXFx1MDAzZW5hbi5yb2xlID0gTUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTUFTVEVSO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmMtOTMyLVxcdFxcdG1lbXNldChcXHUwMDI2ZGF0YS1cXHUwMDNlbmFuLmN1cnJlbnRfYW1pLCAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYz0xMjI2PWJvb2wgbWFjODAyMTFfaHdzaW1fbmFuX3JlY2VpdmUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5jLTEyMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYzoxMjM2OlxcdGlmIChkYXRhLVxcdTAwM2VuYW4ucGhhc2UgPT0gTUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uYy0xMjM3LVxcdFxcdHJldHVybiBjaGFubmVsLVxcdTAwM2VjZW50ZXJfZnJlcSA9PSAyNDM3O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6NzojaWZuZGVmIF9fTUFDODAyMTFfSFdTSU1fTkFOX0hcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX25hbi5oOjg6I2RlZmluZSBfX01BQzgwMjExX0hXU0lNX05BTl9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC05LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTA9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcGhhc2Uge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTE6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1NDQU4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMjpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUEhBU0VfV0FSTVVQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTM6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1BIQVNFX1VQLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmgtMTQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg9MTY9ZW51bSBtYWM4MDIxMV9od3NpbV9uYW5fcm9sZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxNzpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9NQVNURVIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxODpcXHRNQUM4MDIxMV9IV1NJTV9OQU5fUk9MRV9TWU5DLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbmFuLmg6MTk6XFx0TUFDODAyMTFfSFdTSU1fTkFOX1JPTEVfTk9OX1NZTkMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0yMC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaD05OT12b2lkIG1hYzgwMjExX2h3c2ltX25hbl9sb2NhbF9zY2hlZF9jaGFuZ2VkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaC0xMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9uYW4uaDoxMDI6I2VuZGlmIC8qIF9fTUFDODAyMTFfSFdTSU1fTkFOX0ggKi9cXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTctI2RlZmluZSBWSVJUSU9fSURfUlBNQlxcdFxcdFxcdDI4IC8qIHZpcnRpbyBycG1iICovXFxuaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pZHMuaDo1ODojZGVmaW5lIFZJUlRJT19JRF9NQUM4MDIxMV9IV1NJTVxcdDI5IC8qIHZpcnRpbyBtYWM4MDIxMS1od3NpbSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9faWRzLmgtNTktI2RlZmluZSBWSVJUSU9fSURfVklERU9fRU5DT0RFUlxcdFxcdDMwIC8qIHZpcnRpbyB2aWRlbyBlbmNvZGVyICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjE5LjEyMjYxNDU0MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDA1OTUwOTg5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBNQUM4MDIxMV9IV1NJTWAgTmV0bGluayBQb2xpY3kgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBjaGFuZ2UgcmV2b2x2ZXMgYXJvdW5kIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBOZXRsaW5rIG1lc3NhZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZC4gTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgaW1wYWN0IG9mIHRoaXMgY2hhbmdlLlxuXG5GaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgb2YgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gV2UncmUgbG9va2luZyBhdCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgYW5kIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAuIEkga25vdyBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIGBtYWM4MDIxMV9od3NpbV9tYWluLmNgLiAqSXMqIGBod3NpbV92aXJ0aW9faGFuZGxlX2NtZGAgYWxzbyBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBOZXRsaW5rLXJlbGF0ZWQgaGFuZGxlcnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIE5vLCBgaHdzaW1fdHhfaW5mb19mcmFtZV9yZWNlaXZlZF9ubGAgaXMgdGhlIG9uZSBkZWFsaW5nIHdpdGggYEhXU0lNX0FUVFJfVFhfSU5GT2AuXG5cblNvLCB0aGUgY2hhbmdlIGlzIGluIHRoZSBgaHdzaW1fZ2VubF9wb2xpY3lgIGFzcGVjdC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBOZXRsaW5rIHBvbGljeSBmb3IgYEhXU0lNX0FUVFJfVFhfSU5GT2AgYnkgc3dpdGNoaW5nIGZyb20gYSBtYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIChgLmxlbmAgd2l0aCBgTkxBX0JJTkFSWWApIHRvIGFuIGV4YWN0IGxlbmd0aCB2YWxpZGF0aW9uIChgTkxBX1BPTElDWV9FWEFDVF9MRU5gKS4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uYWwgc2hpZnQuIEl0IGNoYW5nZXMgaG93IHRoZSBrZXJuZWwgdmFsaWRhdGVzIGluY29taW5nIE5ldGxpbmsgbWVzc2FnZXMgd2l0aGluIHRoZSBgTUFDODAyMTFfSFdTSU1gIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgYEhXU0lNX0NNRF9UWF9JTkZPX0ZSQU1FYCBjb21tYW5kLlxuXG5Ob3csIGxldCdzIHZlcmlmeSByZWFjaGFiaWxpdHkuIEkgc2VlIHRoYXQgYGh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxgIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBJdCdzIGNhbGxlZCBieSBgaHdzaW1fdmlydGlvX2hhbmRsZV9jbWRgIGFuZCBhbHNvIHZpYSB0aGUgZ2VuZXJpYyBuZXRsaW5rIGludGVyZmFjZSB0aHJvdWdoIGBod3NpbV9vcHNgLiBTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhlIGBIV1NJTV9DTURfVFhfSU5GT19GUkFNRWAgY29tbWFuZCBpcyBoYW5kbGVkIGJ5IGBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sYCB2aWEgYGh3c2ltX29wc2AuXG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgaHdzaW1fb3BzW10gPSB7XG4uLi5cblx0e1xuXHRcdC5jbWQgPSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSxcblx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5cdFx0LmRvaXQgPSBod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sLFxuXHR9LFxuLi4uXG59XG5gYGBcblxuT2theSwgaXQncyByZWFjaGFibGUgdGhyb3VnaCBib3RoIHRoZSBnZW5lcmljIG5ldGxpbmsgYW5kIHZpcnRpbyBwYXRocy5cblxuSSdtIGNvbmZpZGVudCBpbiBteSB1bmRlcnN0YW5kaW5nIG5vdy4gSSdsbCByZWNvcmQgdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1MjUsIk91dHB1dFRva2VucyI6MTU5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDg3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDA3OjI0OjMzLjE4MjEyNzcxNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzU5NzExMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJod3NpbV90eF9pbmZvX2ZyYW1lX3JlY2VpdmVkX25sXCIsXG4gICAgXCJod3NpbV92aXJ0aW9faGFuZGxlX2NtZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgdGhlIE5ldGxpbmsgcG9saWN5IGZvciBIV1NJTV9BVFRSX1RYX0lORk8gZnJvbSBhIG1heGltdW0gbGVuZ3RoIChOTEFfQklOQVJZIHdpdGggLmxlbikgdG8gYW4gZXhhY3QgbGVuZ3RoIChOTEFfUE9MSUNZX0VYQUNUX0xFTikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFsdGVycyBob3cgdGhlIGtlcm5lbCB2YWxpZGF0ZXMgaW5jb21pbmcgTmV0bGluayBtZXNzYWdlcyBmb3IgdGhlIE1BQzgwMjExX0hXU0lNIGZhbWlseSwgc3BlY2lmaWNhbGx5IGFmZmVjdGluZyB0aGUgSFdTSU1fQ01EX1RYX0lORk9fRlJBTUUgY29tbWFuZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImh3c2ltX3R4X2luZm9fZnJhbWVfcmVjZWl2ZWRfbmxcIixcbiAgICBcImh3c2ltX3ZpcnRpb19oYW5kbGVfY21kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgTmV0bGluayBwb2xpY3kgZm9yIEhXU0lNX0FUVFJfVFhfSU5GTyBmcm9tIGEgbWF4aW11bSBsZW5ndGggKE5MQV9CSU5BUlkgd2l0aCAubGVuKSB0byBhbiBleGFjdCBsZW5ndGggKE5MQV9QT0xJQ1lfRVhBQ1RfTEVOKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWx0ZXJzIGhvdyB0aGUga2VybmVsIHZhbGlkYXRlcyBpbmNvbWluZyBOZXRsaW5rIG1lc3NhZ2VzIGZvciB0aGUgTUFDODAyMTFfSFdTSU0gZmFtaWx5LCBzcGVjaWZpY2FsbHkgYWZmZWN0aW5nIHRoZSBIV1NJTV9DTURfVFhfSU5GT19GUkFNRSBjb21tYW5kLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[1] Phase: Succeeded StartedAt: 2026-07-22 07:25:15 +0000 UTC FinishedAt: 2026-07-22 07:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 07:25:17 +0000 UTC FinishedAt: 2026-07-22 07:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2] Phase: Succeeded StartedAt: 2026-07-22 07:25:17 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 07:25:19 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 07:25:19 +0000 UTC FinishedAt: 2026-07-22 07:25:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 07:25:19 +0000 UTC FinishedAt: 2026-07-22 07:25:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9wfdg/series-workflow9wfdg-convert-artifact-1296110867/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 07:25:49 +0000 UTC FinishedAt: 2026-07-22 07:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 07:25:49 +0000 UTC FinishedAt: 2026-07-22 07:55:51 +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:*9ceb80ba-65e0-4e1d-9778-770594768eb8,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-workflow9wfdg/series-workflow9wfdg-convert-artifact-1296110867/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": "63da31e3-befb-4cef-853c-28feac20cd1f", "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-workflow9wfdg/series-workflow9wfdg-build-action-445985345/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 07:25:49 +0000 UTC FinishedAt: 2026-07-22 07:55:41 +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:*9ceb80ba-65e0-4e1d-9778-770594768eb8,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-workflow9wfdg/series-workflow9wfdg-convert-artifact-1296110867/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": "63da31e3-befb-4cef-853c-28feac20cd1f", "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-workflow9wfdg/series-workflow9wfdg-build-action-445985345/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 07:55:51 +0000 UTC FinishedAt: 2026-07-22 07:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 07:55:51 +0000 UTC FinishedAt: 2026-07-22 07:55:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 07:55:51 +0000 UTC FinishedAt: 2026-07-22 07:56:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 07:55:51 +0000 UTC FinishedAt: 2026-07-22 07:55:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9wfdg/series-workflow9wfdg-convert-artifact-2491943434/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 07:56:01 +0000 UTC FinishedAt: 2026-07-22 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 07:56:01 +0000 UTC FinishedAt: 2026-07-22 07:57:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63da31e3-befb-4cef-853c-28feac20cd1f,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-workflow9wfdg/series-workflow9wfdg-build-action-445985345/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-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 07:57:56 +0000 UTC FinishedAt: 2026-07-22 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 07:57:56 +0000 UTC FinishedAt: 2026-07-22 07:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 07:57:56 +0000 UTC FinishedAt: 2026-07-22 08:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 07:57:56 +0000 UTC FinishedAt: 2026-07-22 08:40:03 +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:*9ceb80ba-65e0-4e1d-9778-770594768eb8,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-workflow9wfdg/series-workflow9wfdg-convert-artifact-2491943434/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": "c5659267-ecfc-49bd-81b2-8b2e212f82bd", "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-workflow9wfdg/series-workflow9wfdg-build-action-2680637486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 07:57:56 +0000 UTC FinishedAt: 2026-07-22 08:39: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:*9ceb80ba-65e0-4e1d-9778-770594768eb8,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-workflow9wfdg/series-workflow9wfdg-convert-artifact-2491943434/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": "c5659267-ecfc-49bd-81b2-8b2e212f82bd", "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-workflow9wfdg/series-workflow9wfdg-build-action-2680637486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 08:40:03 +0000 UTC FinishedAt: 2026-07-22 08:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 08:40:03 +0000 UTC FinishedAt: 2026-07-22 08:40:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 08:40:03 +0000 UTC FinishedAt: 2026-07-22 08:42:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 08:40:03 +0000 UTC FinishedAt: 2026-07-22 08:42:10 +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:*c5659267-ecfc-49bd-81b2-8b2e212f82bd,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-workflow9wfdg/series-workflow9wfdg-build-action-2680637486/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-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +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":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"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:*63da31e3-befb-4cef-853c-28feac20cd1f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c5659267-ecfc-49bd-81b2-8b2e212f82bd,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-workflow9wfdg/series-workflow9wfdg-build-action-445985345/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-workflow9wfdg/series-workflow9wfdg-build-action-2680637486/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:42:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:42:25 +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":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"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-workflow9wfdg/series-workflow9wfdg-convert-artifact-740502431/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:42:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:42:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 08:42:20 +0000 UTC FinishedAt: 2026-07-22 08:42:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 08:42:30 +0000 UTC FinishedAt: 2026-07-22 08:45:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9wfdg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["hwsim_tx_info_frame_received_nl","hwsim_virtio_handle_cmd"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af5e34a41cd607c00ef752e00331736570992354","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211_HWSIM"],"series_id":"bb7c071b-9de2-419c-a2bf-018dcff5a10e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 08:42:30 +0000 UTC FinishedAt: 2026-07-22 08:45:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63da31e3-befb-4cef-853c-28feac20cd1f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c5659267-ecfc-49bd-81b2-8b2e212f82bd,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-workflow9wfdg/series-workflow9wfdg-build-action-445985345/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-workflow9wfdg/series-workflow9wfdg-build-action-2680637486/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-workflow9wfdg/series-workflow9wfdg-convert-artifact-740502431/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,}