Name: series-workflowtlm84 Phase: Succeeded StartedAt: 2026-07-22 17:15:48 +0000 UTC FinishedAt: 2026-07-22 22:19:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[0] Phase: Succeeded StartedAt: 2026-07-22 17:15:48 +0000 UTC FinishedAt: 2026-07-22 17:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[0].run-triage Phase: Succeeded StartedAt: 2026-07-22 17:15:48 +0000 UTC FinishedAt: 2026-07-22 17:55:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FB", "FB_VIRTUAL", "FB_SIMPLE", "FRAMEBUFFER_CONSOLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FB", "FB_VIRTUAL", "FB_SIMPLE", "FRAMEBUFFER_CONSOLE" ], "series_id": "21e89343-2393-43e2-b99e-d8ce5ff32663" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cfb_copyarea", "sys_copyarea", "cfb_fillrect", "sys_fillrect", "cfb_imageblit", "sys_imageblit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZCJiMzNDssCiAgICAmIzM0O0ZCX1ZJUlRVQUwmIzM0OywKICAgICYjMzQ7RkJfU0lNUExFJiMzNDssCiAgICAmIzM0O0ZSQU1FQlVGRkVSX0NPTlNPTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmJfY29weWFyZWEmIzM0OywKICAgICYjMzQ7c3lzX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O2NmYl9maWxscmVjdCYjMzQ7LAogICAgJiMzNDtzeXNfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7Y2ZiX2ltYWdlYmxpdCYjMzQ7LAogICAgJiMzNDtzeXNfaW1hZ2VibGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzM4OWVkNDIzNzEyNzE4MTA1OWZiZjZlOTc3MzE5ODYyOTdlNGNiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE3OjUwOjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmhcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxuQEAgLTM4Niw2ICYjNDM7Mzg2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhXG4gXHRzdHJ1Y3QgZmJfYWRkcmVzcyBzcmMgPSBkc3Q7XG4gXHRib29sIHJldl9jb3B5ID0gKGR5IFx1MDAzZSBzeSkgfHwgKGR5ID09IHN5IFx1MDAyNlx1MDAyNiBhcmVhLVx1MDAzZWR4IFx1MDAzZSBhcmVhLVx1MDAzZXN4KTtcbiBcbiYjNDM7XHRpZiAoYXJlYS1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICBhcmVhLVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNlc3ggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgYXJlYS1cdTAwM2VzeSBcdTAwM2U9IHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR4IHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNlaGVpZ2h0IFx1MDAzZSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR5IHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3ggfHxcbiYjNDM7XHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3kpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHJldl9jb3B5KSB7XG4gXHRcdGR5ICYjNDM7PSBoZWlnaHQgLSAxO1xuIFx0XHRzeSAmIzQzOz0gaGVpZ2h0IC0gMTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaCBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXG5pbmRleCBmMzY2NjcwYTUzYWY4Mi4uMzdmNTVhZGIyZTZmMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhcbkBAIC0yNjEsNiAmIzQzOzI2MSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfZmlsbHJlY3Qoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9maWxscmVjdCAqcmVjdFxuIFx0c3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApO1xuIFx0c3RydWN0IGZiX3BhdHRlcm4gcGF0dGVybjtcbiBcbiYjNDM7XHRpZiAocmVjdC1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICByZWN0LVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4mIzQzO1x0ICAgIHJlY3QtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHggfHxcbiYjNDM7XHQgICAgcmVjdC1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZmJfYWRkcmVzc19mb3J3YXJkKFx1MDAyNmRzdCwgcmVjdC1cdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgcmVjdC1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXHUwMDNlY29sb3JdIDogcmVjdC1cdTAwM2Vjb2xvcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXG5pbmRleCAzYjJiYjQ5NDY1MDVjZS4uNWVjMTdkN2I5OTMzOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxuQEAgLTQ4Niw2ICYjNDM7NDg2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXG4gXHRzdHJ1Y3QgZmJfcmV2ZXJzZSByZXZlcnNlID0gZmJfcmV2ZXJzZV9pbml0KHApO1xuIFx0Y29uc3QgdTMyICpwYWxldHRlID0gZmJfcGFsZXR0ZShwKTtcbiBcbiYjNDM7XHRpZiAoaW1hZ2UtXHUwMDNlZHggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgaW1hZ2UtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgaW1hZ2UtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIGltYWdlLVx1MDAzZWR4IHx8XG4mIzQzO1x0ICAgIGltYWdlLVx1MDAzZWhlaWdodCBcdTAwM2UgcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIC0gaW1hZ2UtXHUwMDNlZHkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZmJfYWRkcmVzc19mb3J3YXJkKFx1MDAyNmRzdCwgaW1hZ2UtXHUwMDNlZHkgKiBiaXRzX3Blcl9saW5lICYjNDM7IGltYWdlLVx1MDAzZWR4ICogYnBwKTtcbiBcbiBcdGlmIChpbWFnZS1cdTAwM2VkZXB0aCA9PSAxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGQiYjMzQ7LAogICAgJiMzNDtGQl9WSVJUVUFMJiMzNDssCiAgICAmIzM0O0ZCX1NJTVBMRSYjMzQ7LAogICAgJiMzNDtGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZiX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O3N5c19jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAgICYjMzQ7c3lzX2ltYWdlYmxpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucyAoZmJfY29weWFyZWEsIGZiX2ZpbGxyZWN0LCBmYl9pbWFnZWJsaXQpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiByZW5kZXJpbmcgY29vcmRpbmF0ZXMgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIChjZmJfKiBhbmQgc3lzXyopLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM4OWVkNDIzNzEyNzE4MTA1OWZiZjZlOTc3MzE5ODYyOTdlNGNiNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDE3OjUwOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaAppbmRleCA1M2YxZDUzODVjNmU0MS4uZjRmYzg2YTUxNGNiNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oCkBAIC0zODYsNiAmIzQzOzM4NiwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYQogCXN0cnVjdCBmYl9hZGRyZXNzIHNyYyA9IGRzdDsKIAlib29sIHJldl9jb3B5ID0gKGR5ICZndDsgc3kpIHx8IChkeSA9PSBzeSAmYW1wOyZhbXA7IGFyZWEtJmd0O2R4ICZndDsgYXJlYS0mZ3Q7c3gpOwogCiYjNDM7CWlmIChhcmVhLSZndDtkeCAmZ3Q7PSBwLSZndDt2YXIueHJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtkeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtzeCAmZ3Q7PSBwLSZndDt2YXIueHJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtzeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDt3aWR0aCAmZ3Q7IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgLSBhcmVhLSZndDtkeCB8fAomIzQzOwkgICAgYXJlYS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtJmd0O2R5IHx8CiYjNDM7CSAgICBhcmVhLSZndDt3aWR0aCAmZ3Q7IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgLSBhcmVhLSZndDtzeCB8fAomIzQzOwkgICAgYXJlYS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtJmd0O3N5KQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChyZXZfY29weSkgewogCQlkeSAmIzQzOz0gaGVpZ2h0IC0gMTsKIAkJc3kgJiM0Mzs9IGhlaWdodCAtIDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaCBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oCmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmgKQEAgLTI2MSw2ICYjNDM7MjYxLDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0CiAJc3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApOwogCXN0cnVjdCBmYl9wYXR0ZXJuIHBhdHRlcm47CiAKJiM0MzsJaWYgKHJlY3QtJmd0O2R4ICZndDs9IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIHJlY3QtJmd0O2R5ICZndDs9IHAtJmd0O3Zhci55cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIHJlY3QtJmd0O3dpZHRoICZndDsgcC0mZ3Q7dmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtJmd0O2R4IHx8CiYjNDM7CSAgICByZWN0LSZndDtoZWlnaHQgJmd0OyBwLSZndDt2YXIueXJlc192aXJ0dWFsIC0gcmVjdC0mZ3Q7ZHkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZmJfYWRkcmVzc19mb3J3YXJkKCZhbXA7ZHN0LCByZWN0LSZndDtkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgcmVjdC0mZ3Q7ZHggKiBicHApOwogCiAJcGF0dGVybi5waXhlbHMgPSBwaXhlbF90b19wYXQoYnBwLCBwYWxldHRlID8gcGFsZXR0ZVtyZWN0LSZndDtjb2xvcl0gOiByZWN0LSZndDtjb2xvcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmgKaW5kZXggM2IyYmI0OTQ2NTA1Y2UuLjVlYzE3ZDdiOTkzMzlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oCkBAIC00ODYsNiAmIzQzOzQ4NiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfaW1hZ2VibGl0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQogCXN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7CiAJY29uc3QgdTMyICpwYWxldHRlID0gZmJfcGFsZXR0ZShwKTsKIAomIzQzOwlpZiAoaW1hZ2UtJmd0O2R4ICZndDs9IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIGltYWdlLSZndDtkeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBpbWFnZS0mZ3Q7d2lkdGggJmd0OyBwLSZndDt2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtJmd0O2R4IHx8CiYjNDM7CSAgICBpbWFnZS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLSZndDtkeSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlmYl9hZGRyZXNzX2ZvcndhcmQoJmFtcDtkc3QsIGltYWdlLSZndDtkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgaW1hZ2UtJmd0O2R4ICogYnBwKTsKIAogCWlmIChpbWFnZS0mZ3Q7ZGVwdGggPT0gMSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZyYW1lYnVmZmVyIERyYXdpbmcgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YCBpbiB0aG9zZSBjb3JlIGZyYW1lYnVmZmVyIGhlYWRlcnMsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2AuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyB0aGV5JiMzOTtyZSBwcm9iYWJseSB1c2VkIGFjcm9zcyBhIGJ1bmNoIG9mIGZyYW1lYnVmZmVyIGRyaXZlcnMsIHdoaWNoIG1lYW5zIGEgY2hhbmdlIGhlcmUgaGFzIGEgcG90ZW50aWFsbHkgYnJvYWQgaW1wYWN0LiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGJvdW5kcyBjaGVja2luZy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgZHJhd2luZyByb3V0aW5lcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGhvdyB3aWRlbHkgdGhlc2UgYXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgaW1wYWN0IGFuZCBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0zNz1jb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQyLVx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93biAoYWNjZWxlcmF0ZWQpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYz00NT1zdGF0aWMgdm9pZCBiaXRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9iaXRibGl0LmMtNDcte1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo0ODpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy00OS1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTU2LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo1NzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTU4LX1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfY29weWFyZWEuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxOTp2b2lkIGNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTI5LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzA6XHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMxLX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oPTM0OD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgZmJfY29weShzdHJ1Y3QgZmJfYWRkcmVzcyAqZHN0LCBzdHJ1Y3QgZmJfYWRkcmVzcyAqc3JjLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3NS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oOjM3NjpzdGF0aWMgaW5saW5lIHZvaWQgZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3Ny17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg9MTI0PXN0YXRpYyBpbmxpbmUgaW50IG1vbm9fY29sKGNvbnN0IHN0cnVjdCBmYl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3Mi0gKiAmIzQzOyByZWFkIHdoYXQmIzM5O3MgYWxyZWFkeSByZW5kZXJlZCBvbiB0aGUgc2NyZWVuIGFuZFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg6MTczOiAqICAgICB3cml0ZSBpdCBpbiBhIGRpZmZlcmVudCBwbGFjZSAodGhpcyBpcyBjZmJfY29weWFyZWEoKSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3NC0gKiAmIzQzOyByZS1yZW5kZXIgdGhlIHRleHQgdG8gdGhlIHNjcmVlblxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYz02ND1zdGF0aWMgdm9pZCBjY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy02Ny1cdHN0cnVjdCBmYmNvbl9wYXIgKnBhciA9IGluZm8tXHUwMDNlZmJjb25fcGFyO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jOjY4Olx0c3RydWN0IGZiX2NvcHlhcmVhIGFyZWE7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjktXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jLTc3LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jOjc4Olx0aW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy03OS19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmM9NDk9c3RhdGljIHZvaWQgY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTUyLVx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cdTAwM2VmYmNvbl9wYXI7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo1MzpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNTQtXHR1MzIgdnhyZXMgPSBHRVRWWFJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo2MzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYy02NC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmM9NDg9c3RhdGljIHZvaWQgdWRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jLTUxLVx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cdTAwM2VmYmNvbl9wYXI7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo1MjpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNTMtXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo2MzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy02NC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2NvcHlhcmVhLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTk6dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTIwLXtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMy1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjI0Olx0ZmJfY29weWFyZWEocCwgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgaW5saW5lIGZ1bmN0aW9ucyBpbiB0aGUgaGVhZGVycywgd2hpY2ggYXJlIHRoZW4gdXNlZCBieSBmdW5jdGlvbnMgbGlrZSBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGFuZCBzbyBvbi4gVGhlc2UgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQuIFRoZSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggYGlvY3RsKGZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAuLi4pYCBiZWNhdXNlIHRoYXQgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIHdoaWNoIHNldHMgdXAgYSBwb3NzaWJsZSB3YXkgdG8gaW5mbHVlbmNlIHJlbmRlcmluZy4gVGhlbiB0aGVyZSBpcyBgaW9jdGwoZmQsIEZCSU9QQU5fRElTUExBWSwgLi4uKWAgd2hpY2ggcmVsaWVzIG9uIHRoZSBgaW5mby0mZ3Q7ZmJvcHMtJmd0O2ZiX2NvcHlhcmVhKGluZm8sICZhbXA7YXJlYSlgIGFuZCBvdGhlciBtZXRob2RzIG9mIHdyaXRpbmcgdG8gdGhlIGZyYW1lYnVmZmVyLgoKSGFuZyBvbuKApiBkb2VzIGBGQklPUEFOX0RJU1BMQVlgICpkaXJlY3RseSogY2FsbCBgZmJfY29weWFyZWFgPyBObywgbm8sIGl0IGRvZXNuJiMzOTt0LiBCdXQgYGZiY29uYCwgdGhlIGNvbnNvbGUgZHJpdmVyLCBkZWZpbml0ZWx5ICpkb2VzKiBjYWxsIGl0LCBwYXJ0aWN1bGFybHkgZHVyaW5nIHNjcm9sbGluZyBhbmQgdGV4dCBtb3ZlbWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AgaW9jdGwgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIHZpcnR1YWwgc2NyZWVuIHNpemUsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciB0aGluZyB0byBrZWVwIGluIG1pbmQuCgpJcyB0aGVyZSBhbnkgKm90aGVyKiBpb2N0bCB0aGF0IG1pZ2h0IGRpcmVjdGx5IHVzZSBgZmJfY29weWFyZWFgPyBObywgaXQgbG9va3MgbGlrZSBgZmJjb25gIGlzIHRoZSBwcmltYXJ5IGRpcmVjdCBjb25zdW1lciwgYXMgZmFyIGFzIEkgY2FuIHRlbGwuIEFscmlnaHQsIHNvIGBmYmNvbmAgaXMgYSBjb25zb2xlIGRyaXZlciwgdGhhdCYjMzk7cyBjcnVjaWFsLiBTaW5jZSBpdCYjMzk7cyBhIGNvbnNvbGUgZHJpdmVyLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGJlZW4gZnV6emVkIGJ5IHN5emthbGxlciwgd2hpY2ggc2hvdWxkIGdpdmUgdXMgc29tZSBnb29kIHRlc3QgY2FzZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKRmluYWxseSwgY291bGQgdGhlc2UgZnVuY3Rpb25zIGFsc28gYmUgY2FsbGVkIHRocm91Z2ggb3RoZXIgYGZibWVtYCBpb2N0bHM/IFByb2JhYmx5LCBzbyBuZWVkIHRvIGxvb2sgYXQgYGZibWVtLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW50ZXJlc3RpbmcgZGF0YSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRnJhbWVidWZmZXIgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zIGFyZSB3b3JraW5nIHVuZGVyIHRoZSBob29kLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gemVybyBpbiBvbiBgZmJfZmlsbHJlY3RgIGFuZCBgZmJfaW1hZ2VibGl0YCB3aXRoaW4gYGZibWVtLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29yZSBmdW5jdGlvbnMgaGFuZGxlIHRoZSBiYXNpYyB0YXNrcyBvZiBmaWxsaW5nIHJlY3RhbmdsZXMgYW5kIGJsaXR0aW5nIGltYWdlcyB0byB0aGUgZnJhbWVidWZmZXIuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3IgcGl4ZWwgbWFuaXB1bGF0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yLCBxdWl0ZSBmcmFua2x5LCBkZWJ1Z2dpbmcgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gYWRkcmVzcyBsYXRlci4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgc3R1ZmY7IHVuZGVyc3RhbmRpbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSByZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfZmlsbHJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIENvcHkgQXJlYSBGdW5jdGlvbiBDYWxsZXJzKioKCkhtbSwgc28gYGZiX2NvcHlhcmVhYCBjYWxscyBgY2ZiX2NvcHlhcmVhYCwgYW5kIGFsc28gYHN5c19jb3B5YXJlYWAuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGVyZSBgY2ZiX2NvcHlhcmVhYCBpcyAqYWN0dWFsbHkqIHVzZWQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaGVyZS4gTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IGBjZmJfY29weWFyZWFgIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20uIFRoYXQgc2hvdWxkIHJldmVhbCBhIGxvdC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uIGNhbGwuIFJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IGxvb2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmYl9jb3B5YXJlYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYz05MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXJrZmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYy05NDEtXHQuZmJfZmlsbHJlY3RcdD0gYXJrZmJfZmlsbHJlY3QsXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmM6OTQyOlx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYy05NDMtXHQuZmJfaW1hZ2VibGl0XHQ9IGFya2ZiX2ltYWdlYmxpdCxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM9MjQ1OD1zdGF0aWMgdm9pZCBhdGFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXRhZmIuYy0yNDY2LVx0aWYgKGluZm8tXHUwMDNldmFyLmJpdHNfcGVyX3BpeGVsID09IDE2KSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM6MjQ2NzpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9hdGFmYi5jLTI0NjgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYz0xOTk9dm9pZCBhdHlmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jLTIwOS1cdGlmICghcGFyLVx1MDAzZWFjY2VsX2ZsYWdzKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYzoyMTA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jLTIxMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jPTEzNT12b2lkIHJhZGVvbmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2FjY2VsLmMtMTQ5LVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYzoxNTA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jLTE1MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYz0xNzcwPXN0YXRpYyB2b2lkIGNpcnJ1c2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgwLVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmM6MTc4MTpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jaXJydXNmYi5jLTE3ODItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0zNz1jb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQyLVx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93biAoYWNjZWxlcmF0ZWQpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxOTp2b2lkIGNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMxLX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oPTEyND1zdGF0aWMgaW5saW5lIGludCBtb25vX2NvbChjb25zdCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzItICogJiM0MzsgcmVhZCB3aGF0JiMzOTtzIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIHNjcmVlbiBhbmRcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oOjE3MzogKiAgICAgd3JpdGUgaXQgaW4gYSBkaWZmZXJlbnQgcGxhY2UgKHRoaXMgaXMgY2ZiX2NvcHlhcmVhKCkpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzQtICogJiM0MzsgcmUtcmVuZGVyIHRoZSB0ZXh0IHRvIHRoZSBzY3JlZW5cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM9MTg3PWN5YmVyMjAwMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbilcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmMtMTkzLVx0aWYgKCEoY2ZiLVx1MDAzZWZiLnZhci5hY2NlbF9mbGFncyBcdTAwMjYgRkJfQUNDRUxGX1RFWFQpKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM6MTk0Olx0XHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jPTUyOD1zdGF0aWMgdm9pZCBmZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNS1cdCAgICBhcmVhLVx1MDAzZWR5ID09IGFyZWEtXHUwMDNlc3kpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZmZiLmM6NTM2Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmM9MzI2PXZvaWQgaTgxMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbikgXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9pODEwL2k4MTBfYWNjZWwuYy0zMzItXHQgICAgcGFyLVx1MDAzZWRlcHRoID09IDQpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmM6MzMzOlx0XHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmMtMzM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYz0xMTM9dm9pZCBtYXRyb3hfY2ZiWF9pbml0KHN0cnVjdCBtYXRyb3hfZmJfaW5mbyAqbWluZm8pXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYy0xMjMtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jOjEyNDpcdG1pbmZvLVx1MDAzZWZib3BzLmZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYy0xMjUtXHRtaW5mby1cdTAwM2VmYm9wcy5mYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTI5ND1zdGF0aWMgdm9pZCBtYXRyb3hmYl9jZmI0X2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvKiBpbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEqIGFyZWEpIHtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTI5Ny1cdGlmICgoYXJlYS1cdTAwM2VzeCB8IGFyZWEtXHUwMDNlZHggfCBhcmVhLVx1MDAzZXdpZHRoKSBcdTAwMjYgMSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmM6Mjk4Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTI5OS1cdGVsc2Vcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21iODYyeHgvbWI4NjJ4eGZiX2FjY2VsLmM9MzAyPXZvaWQgbWI4NjJ4eGZiX2luaXRfYWNjZWwoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9vcHMgKmZib3BzLCBpbnQgeHJlcylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21iODYyeHgvbWI4NjJ4eGZiX2FjY2VsLmMtMzA3LVx0XHRmYm9wcy1cdTAwM2VmYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWI4NjJ4eC9tYjg2Mnh4ZmJfYWNjZWwuYzozMDg6XHRcdGZib3BzLVx1MDAzZWZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwOS1cdFx0ZmJvcHMtXHUwMDNlZmJfaW1hZ2VibGl0ID0gY2ZiX2ltYWdlYmxpdDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmM9MTUwOT1uZW9mYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYy0xNTE4LVx0XHRkZWZhdWx0OlxuZHJpdmVycy92aWRlby9mYmRldi9uZW9mYi5jOjE1MTk6XHRcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9uZW9mYi5jLTE1MjAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYz0yOTg9dm9pZCBudmlkaWFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICpyZWdpb24pXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDUtXHRpZiAocGFyLVx1MDAzZWxvY2t1cCkge1xuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYzozMDY6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCByZWdpb24pO1xuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L252aWRpYS9udmlkaWEuYz02MTI9c3RhdGljIGludCBudmlkaWFmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3NS1cdFx0bnZpZGlhX2ZiX29wcy5mYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jOjY3NjpcdFx0bnZpZGlhX2ZiX29wcy5mYl9jb3B5YXJlYSA9IGNmYl9jb3B5YXJlYTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3Ny1cdFx0bnZpZGlhX2ZiX29wcy5mYl9zeW5jID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmM9MTExMD1zdGF0aWMgdm9pZCBwbTJmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTExOS1cdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xuZHJpdmVycy92aWRlby9mYmRldi9wbTJmYi5jOjExMjA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0yZmIuYy0xMTIxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9wbTNmYi5jPTQ0MD1zdGF0aWMgdm9pZCBwbTNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMtNDUwLVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmM6NDUxOlx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMtNDUyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM9MTM5Nz1zdGF0aWMgdm9pZCByaXZhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jLTE0MDEtXHRpZiAoKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSkge1xuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM6MTQwMjpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIHJlZ2lvbik7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYy0xNDAzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zM2ZiLmM9MTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzM2ZiX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYy0xMTI2LVx0LmZiX2ZpbGxyZWN0XHQ9IHMzZmJfZmlsbHJlY3QsXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYzoxMTI3Olx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jLTExMjgtXHQuZmJfaW1hZ2VibGl0XHQ9IHMzZmJfaW1hZ2VibGl0LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oPTI5PWludCBzYnVzZmJfY29tcGF0X2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQxLVx0LmZiX2ZpbGxyZWN0XHQ9IGNmYl9maWxscmVjdCwgXFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oOjQyOlx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSwgXFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQzLVx0LmZiX2ltYWdlYmxpdFx0PSBjZmJfaW1hZ2VibGl0XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmM9MzU2PXZvaWQgZmJjb25fc2lzX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmMtMzY4LVx0aWYoKCFpdmlkZW8tXHUwMDNlYWNjZWwpIHx8ICghaXZpZGVvLVx1MDAzZWVuZ2luZW9rKSkge1xuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmM6MzY5Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYy0zNzAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jPTE3Nz1zdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4Mi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmVwLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTgzOlx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAuYy0xODQtXHRpbmZvLVx1MDAzZXNjcmVlbl9iYXNlICYjNDM7PSBlcC1cdTAwM2VmYjhfYnVmX2RpZmY7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jOjE4NTpcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmMtMTg2LVx0aW5mby1cdTAwM2VzY3JlZW5fYmFzZSAtPSBlcC1cdTAwM2VmYjhfYnVmX2RpZmY7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jPTExNTc9Y29weWFyZWFfOGJwcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIGR4LCB1MzIgZHksIHUzMiBzeCwgdTMyIHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMTcwLVx0aWYgKChkeCB8IHN4IHwgd2lkdGgpIFx1MDAyNiA3KSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM6MTE3MTpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTExNzItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM9MTI2Nj10Z2FmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMzA4LVx0ZWxzZSBpZiAoYnBwID09IDMyKVxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jOjEzMDk6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMzEwLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmM9NjY4PXN0YXRpYyB2b2lkIHRyaWRlbnRmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3My1cdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xuZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIuYzo2NzQ6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBjYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jPTEwMjc9c3RhdGljIHZvaWQgdmdhMTZmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jLTExMTMtXHRkZWZhdWx0OlxuZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmM6MTExNDpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMtMTExNS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYz02OTk9c3RhdGljIHZvaWQgdmlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MDUtXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQgfHwgIXNoYXJlZC1cdTAwM2Vod19iaXRibHQpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmM6NzA2Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcwNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmMtNzE4LVx0XHRhcmVhLVx1MDAzZXN4LCBhcmVhLVx1MDAzZXN5LCAwLCAwLCAwKSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmM6NzE5Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcyMC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jLTY2MC1cdC5mYl9maWxscmVjdFx0PSB2dDg2MjNmYl9maWxscmVjdCxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYzo2NjE6XHQuZmJfY29weWFyZWFcdD0gY2ZiX2NvcHlhcmVhLFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jLTY2Mi1cdC5mYl9pbWFnZWJsaXRcdD0gdnQ4NjIzZmJfaW1hZ2VibGl0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQwMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBjZmJfY29weWFyZWFgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIGBjZmJfY29weWFyZWFgLi4uIHRoYXQmIzM5O3MgYSBmdW5jdGlvbiB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGZyYW1lYnVmZmVyIGRyaXZlcnMsIGlzbiYjMzk7dCBpdD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gYXNrIGlmIHRoZXJlJiMzOTtzIGFuIGlvY3RsIG91dCB0aGVyZSB0aGF0JiMzOTtzIGRpcmVjdGx5IGNhbGxpbmcgYGZiX2NvcHlhcmVhYCBidXQsIGhhbmcgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gTmVlZCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGZyYW1lYnVmZmVyIG1lbW9yeSBtYW5hZ2VtZW50IHN0dWZmIHNob3VsZCBiZSwgYW5kIHdoZXJlIGBmYl9jb3B5YXJlYWAgbGlrZWx5IHJlc2lkZXMuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfY29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjYxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBmYl9jb3B5YXJlYWAqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gRGlkbiYjMzk7dCBJIGFscmVhZHkgY29uZmlybSBzb21ldGhpbmcgYWJvdXQgdGhpcz8gUmlnaHQsIEkga25vdyBob3cgYGZiX2NvcHlhcmVhYCBpcyBhY2Nlc3NlZC4gTGV0JiMzOTtzIHNlZS4uLiBob3cgZXhhY3RseSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZCBmcm9tIHVzZXJzcGFjZSBhZ2Fpbj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyB0aHJvdWdoIGBmYmNvbmAsIHRoZSBjb25zb2xlIGRyaXZlci4gUmlnaHQsIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBmYmNvbmAgZm9yIHRhc2tzIGxpa2Ugc2Nyb2xsaW5nIG9yIG1vdmluZyB0ZXh0IG9uIHRoZSBkaXNwbGF5LgoKT2theSwgaXMgaXQgcmVhY2hlZCB2aWEgYGZiX2lvY3RsYCBkaXJlY3RseT8gTm8sIGRlZmluaXRlbHkgbm90LiBgZmJfd3JpdGVgPyBOb3BlLiBgZmJfbW1hcGA/IE5haCwgZG9lc24mIzM5O3Qgc2VlbSBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBkaWRuJiMzOTt0IEkgcmVtZW1iZXIgYGZiX2NvcHlhcmVhYCBnZXR0aW5nIHVzZWQgd2hlbiBgZmJjb25gIGhhbmRsZXMgc2Nyb2xsaW5nIG9yIHRleHQgbW92ZW1lbnQ/IEFoYSwgeWVzIQoKTm93LCBob3cgZG9lcyBzeXprYWxsZXIgZ2V0IGludm9sdmVkIGluIGZ1enppbmcgdGhpcyB0aGluZz8gSXQgaGl0cyBgZmJjb25gIHVzaW5nIGVpdGhlciBgaW9jdGwoZmQsIFZUX1JFU0laRSwgLi4uKWAgb3IgYnkgY3JhZnRpbmcgZXNjYXBlIHNlcXVlbmNlcyBhbmQgd3JpdGluZyB0aGVtIHRvIHNvbWV0aGluZyBsaWtlIGAvZGV2L3R0eTFgLiBJdCBhbHNvIGZ1enplcyB0aGUgYGZiZGV2YCBpb2N0bHMgbGlrZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AsIHNldHRpbmcgdGhpbmdzIGxpa2UgYHhyZXNfdmlydHVhbGAgYW5kIGB5cmVzX3ZpcnR1YWxgLgoKU28sIHRoZSBidWcgaXMgcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IHNldHRpbmcgdXAgdmVyeSBzbWFsbCB2YWx1ZXMgZm9yIGB4cmVzX3ZpcnR1YWxgIGFuZCBgeXJlc192aXJ0dWFsYCwgYW5kIHRoZW4gY2FsbGluZyBzb21ldGhpbmcgdGhhdCBtYWtlcyBgZmJfY29weWFyZWFgIHJ1biB3aXRoIGNvb3JkaW5hdGVzIHRoYXQgYXJlIG91dC1vZi1ib3VuZHMsIHJpZ2h0PyBUaGF0IG1ha2VzIHNlbnNlLiBBIHNtYWxsIHZpcnR1YWwgcmVzb2x1dGlvbiwgdGhlbiB0cmlnZ2VyIGEgY29uc29sZSBzY3JvbGwuLi4gdGhhdCBzaG91bGQgZG8gaXQhCgpIbW0sIGlzIGBmYl9jb3B5YXJlYWAgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlIGRpcmVjdGx5IHZpYSBgaW9jdGxgIGluIHNvbWUgd2F5PyBObywgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIGFuIGBGQklPUFVUX0NPUFlBUkVBYCBvciBzaW1pbGFyIGRlZmluZWQuIExldCYjMzk7cyBtYWtlIGFic29sdXRlbHkgc3VyZSBhbmQgY2hlY2sgYGluY2x1ZGUvdWFwaS9saW51eC9mYi5oYCBmb3IgYGNvcHlhcmVhYCBkZWZpbml0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIGZ1bmt5IGRlZmluaXRpb24gSSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg9MzI0PXN0cnVjdCBmYl92Ymxhbmsge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMzNjpzdHJ1Y3QgZmJfY29weWFyZWEge1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVx0X191MzIgZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGZyYW1lYnVmZmVycywgYW5kIHRoZSBjb2RlIHJlZmVyZW5jZXMgYHN0cnVjdCBmYl9jb3B5YXJlYWAuIFJpZ2h0LCB0aGF0IHN0cnVjdC4uLiBpdCYjMzk7cyBkZWZpbmVkIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIEkgcmVjYWxsIHRoYXQgaGVhZGVyIOKAkyBpdCYjMzk7cyB0aGUgdXNlcnNwYWNlIGludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgZnJhbWVidWZmZXIgb3BlcmF0aW9ucy4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGdpdmVuIHRoYXQgc3RydWN0dXJlJiMzOTtzIGludm9sdmVkLCBpcyB0byBjaGVjayB3aGV0aGVyIGFuIGBpb2N0bGAgc3lzdGVtIGNhbGwgbGV2ZXJhZ2VzIGl0LiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW9jdGwgY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBgZmJfY29weWFyZWFgIHN0cnVjdHVyZS4gVGhhdCB3b3VsZCBsaWtlbHkgZ2l2ZSBtZSBtb3JlIGNvbnRleHQgYWJvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0IG1lIGxvb2sgYXJvdW5kIHRoZSBjb2RlIGZvciBzb21lIGlvY3RsIGNhbGxzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg9MzI0PXN0cnVjdCBmYl92Ymxhbmsge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMzNjpzdHJ1Y3QgZmJfY29weWFyZWEge1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVx0X191MzIgZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkNoZWNraW5nIHRoZSBGcmFtZWJ1ZmZlciBIZWFkZXIgZm9yIFNwZWNpZmljIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHJlc2VuY2Ugb2Ygc3BlY2lmaWMgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBmcmFtZSBidWZmZXIgSS9PIGNvbnRyb2wgY29kZXMsIHNwZWNpZmljYWxseSB0aG9zZSBzdGFydGluZyB3aXRoIGBGQklPUFVUX2AuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGdvIHRvIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBmcmFtZWJ1ZmZlciBpbmZvcm1hdGlvbjogYGluY2x1ZGUvdWFwaS9saW51eC9mYi5oYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIHZlcmlmeSBpZiB0aGVzZSBwYXJ0aWN1bGFyIGBGQklPUFVUX2AgbWFjcm9zLCBvciBhbnl0aGluZyB2ZXJ5IHNpbWlsYXIgbGlrZSBgRkJJT0dFVF9gIG9yIHJlbGF0ZWQsIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoYXQgaGVhZGVyLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkgZXhpc3QgYW5kIHRoYXQgSSB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCBhbnl0aGluZyBlbHNlLiBUaGlzIHNlZW1zIGxpa2UgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgdG8gZ2V0dGluZyBteSBkdWNrcyBpbiBhIHJvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9mYi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9mYi5oLTE0LSAgIDB4NDYgaXMgJiMzOTtGJiMzOTtcdFx0XHRcdFx0XHRcdFx0Ki9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE1OiNkZWZpbmUgRkJJT0dFVF9WU0NSRUVOSU5GT1x0MHg0NjAwXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxNjojZGVmaW5lIEZCSU9QVVRfVlNDUkVFTklORk9cdDB4NDYwMVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MTc6I2RlZmluZSBGQklPR0VUX0ZTQ1JFRU5JTkZPXHQweDQ2MDJcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE4OiNkZWZpbmUgRkJJT0dFVENNQVBcdFx0MHg0NjA0XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxOTojZGVmaW5lIEZCSU9QVVRDTUFQXHRcdDB4NDYwNVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjA6I2RlZmluZSBGQklPUEFOX0RJU1BMQVlcdFx0MHg0NjA2XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0yMS0jaWZuZGVmIF9fS0VSTkVMX19cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjIyOiNkZWZpbmUgRkJJT19DVVJTT1IgICAgICAgICAgICBfSU9XUigmIzM5O0YmIzM5OywgMHgwOCwgc3RydWN0IGZiX2N1cnNvcilcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTIzLSNlbmRpZlxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMjQtLyogMHg0NjA3LTB4NDYwQiBhcmUgZGVmaW5lZCBiZWxvdyAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjU6LyogI2RlZmluZSBGQklPR0VUX01PTklUT1JTUEVDXHQweDQ2MEMgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI2Oi8qICNkZWZpbmUgRkJJT1BVVF9NT05JVE9SU1BFQ1x0MHg0NjBEICovXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNzovKiAjZGVmaW5lIEZCSU9TV0lUQ0hfTU9OSUJJVFx0MHg0NjBFICovXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyODojZGVmaW5lIEZCSU9HRVRfQ09OMkZCTUFQXHQweDQ2MEZcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI5OiNkZWZpbmUgRkJJT1BVVF9DT04yRkJNQVBcdDB4NDYxMFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzA6I2RlZmluZSBGQklPQkxBTktcdFx0MHg0NjExXHRcdC8qIGFyZzogMCBvciB2ZXNhIGxldmVsICYjNDM7IDEgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMxOiNkZWZpbmUgRkJJT0dFVF9WQkxBTktcdFx0X0lPUigmIzM5O0YmIzM5OywgMHgxMiwgc3RydWN0IGZiX3ZibGFuaylcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMyOiNkZWZpbmUgRkJJT19BTExPQyAgICAgICAgICAgICAgMHg0NjEzXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzojZGVmaW5lIEZCSU9fRlJFRSAgICAgICAgICAgICAgIDB4NDYxNFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzQ6I2RlZmluZSBGQklPR0VUX0dMWVBIICAgICAgICAgICAweDQ2MTVcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM1OiNkZWZpbmUgRkJJT0dFVF9IV0NJTkZPICAgICAgICAgMHg0NjE2XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozNjojZGVmaW5lIEZCSU9QVVRfTU9ERUlORk8gICAgICAgIDB4NDYxN1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6Mzc6I2RlZmluZSBGQklPR0VUX0RJU1BJTkZPICAgICAgICAweDQ2MThcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM4OiNkZWZpbmUgRkJJT19XQUlURk9SVlNZTkNcdF9JT1coJiMzOTtGJiMzOTssIDB4MjAsIF9fdTMyKVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGVjb25zdHJ1Y3RpbmcgYSBQb3RlbnRpYWwgRnJhbWVidWZmZXIgSXNzdWUqKgoKSG1tLCBgRkJJT19DVVJTT1JgLi4uIG5vLCB0aGF0IGRvZXNuJiMzOTt0IGZlZWwgcmlnaHQuIFRoYXQmIzM5O3MgcHJvYmFibHkgYSByZWQgaGVycmluZy4gT2theSwgbGV0JiMzOTtzIHJlLWNlbnRlciBteSBmb2N1cy4gVGhlIGNvcmUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBgZmJfY29weWFyZWFgLiBXaGVyZSBleGFjdGx5IGlzICp0aGF0KiBmdW5jdGlvbiB1dGlsaXplZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHVzYWdlcy4gQWgsIHllcywgSSYjMzk7bGwgZ28gYmFjayB0byBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgY29yZSBvcGVyYXRpb25zIHJlc2lkZS4gTGV0JiMzOTtzIGRpZyBiYWNrIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgaWYgSSBtaXNzZWQgYW55dGhpbmcgdGhlIGZpcnN0IHRpbWUgYXJvdW5kIHJlZ2FyZGluZyBgY29weWFyZWFgLiBJIG5lZWQgYSBtb3JlIGRpcmVjdCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwb3RlbnRpYWwgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDc5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipUcmFja2luZyBEb3duIHRoZSBgZmJfY29weWFyZWFgIENhbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSBgZmJfY29weWFyZWFgIGlzIGJlaW5nIGludm9rZWQgaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uLCB0aGF0IGl0IHdhcyBuZXN0ZWQgd2l0aGluIGBmYm1lbS5jYCwgd2FzIGluY29ycmVjdC4gVGhhdCYjMzk7cyBhIGNvbW1vbiBpbml0aWFsIGd1ZXNzLCBzbyBubyBiaWcgZGVhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBiZSBtZXRob2RpY2FsLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXTigJlzIGNhbGxlZCBpbiBgZHJpdmVycy9jaGFyL3Z0LmNgLiBIbW0sIG5vLCB0aGF0IHNlZW1zIG9mZiwgdG9vLiAgSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZnJhbWVidWZmZXIgY29uc29sZSBjb2RlIG1vcmUgY2xvc2VseS4gR2l2ZW4gdGhlIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIHdpdGggdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgZGlyZWN0bHksIHNvIGxldCBtZSBleHBhbmQgbXkgc2VhcmNoIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgYW5kIGBmYmNvbl9jY3cuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2suIEkmIzM5O2xsIGZvY3VzIG9uIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgZmlyc3QsIHRoYXQmIzM5O3MgdGhlIG1vc3QgZ2VuZXJpYyBhbmQgY29tbW9uIGZyYW1lYnVmZmVyIGNvbnNvbGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfY29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDYxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtleSBDaGFuZ2UgaW4gRnJhbWVidWZmZXIgQ29yZSoqCgpPa2F5LCBzbyBJIGp1c3Qgc2F3IHNvbWUgY2hhbmdlcyB0aGF0IGltbWVkaWF0ZWx5IGNhdWdodCBteSBleWUuIEkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHJlbGF0ZWQgY29kZSBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuY2AgYW5kIGBmYmNvbl9jY3cuY2AgZWFybGllci4gUmlnaHQsIGBiaXRfYm1vdmVgIGNhbGxzIGBpbmZvLSZndDtmYm9wcy0mZ3Q7ZmJfY29weWFyZWEoaW5mbywgJmFtcDthcmVhKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBJJiMzOTt2ZSBzZWVuIGBiaXRfYm1vdmVgIHVzZWQgaGVhdmlseSBpbiBgZmJjb25gLgoKVGhlIGhlYXJ0IG9mIHRoaXMgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGNvcmUgZnJhbWVidWZmZXIgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrczogYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBmcmFtZWJ1ZmZlciBkcml2ZXJzLCBsaWtlIGB2Z2ExNmZiYCwgYHZlc2FmYmAsIGBlZmlmYmAsIGFuZCBgc2ltcGxlZmJgLCBsZXZlcmFnZSB3aGVuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpc24mIzM5O3QgYXZhaWxhYmxlLgoKVGhlIGVzc2VuY2Ugb2YgdGhlIGNoYW5nZSBpcyBib3VuZHMgY2hlY2tpbmcuIFdlJiMzOTtyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gYGR4YCwgYGR5YCwgYHdpZHRoYCwgb3IgYGhlaWdodGAgdmFsdWVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuIEkgbGlrZSB0aGF0LiBUaGlzIGlzIGEgY2xlYXIgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhlIHBhdGNoIHRhcmdldHMuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBmYl9jb3B5YXJlYWAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0YCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhgLCBhbmQgYGZiX2ltYWdlYmxpdGAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaGAuCgpBaCwgdGhlc2UgYXJlIGlubGluZSBmdW5jdGlvbnMuIFNvIHdoZXJlIGFyZSB0aGV5IGdldHRpbmcgKmNhbGxlZCogZnJvbT8gSSYjMzk7bGwgbmVlZCB0byBnbyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaHMuIExvb2tzIGxpa2UgYGNmYl9jb3B5YXJlYWAgaW4gYGNmYmNvcHlhcmVhLmNgLCBgc3lzX2NvcHlhcmVhYCBpbiBgc3lzY29weWFyZWEuY2AsIGFuZCBzbyBvbi4gUmlnaHQsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYl9jb3B5YXJlYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9jb3B5YXJlYS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE5OnZvaWQgY2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjktXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcdGZiX2NvcHlhcmVhKHAsIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzEtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTUzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgR3JhcGhpY3MgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBncmFwaGljcyBmdW5jdGlvbnM6IGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IGFyZWFzIGZvciBtZSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlICYjMzQ7c3lzJiMzNDsgbmFtZXNwYWNlLCBzcGVjaWZpY2FsbHkgYHN5c19maWxscmVjdGAgYW5kIGBzeXNfaW1hZ2VibGl0YC4gSSYjMzk7bGwgdmVyaWZ5IHRoZWlyIGV4aXN0ZW5jZSBhcyBhIHByZWN1cnNvciB0byBhbnkgc3Vic2VxdWVudCBhbmFseXNpcyBvciBvcHRpbWl6YXRpb24gZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjQtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2NTpcdCAgSW5jbHVkZSB0aGUgc3lzX2ZpbGxyZWN0IGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIHJlY3RhbmdsZVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjYtXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJiMzOTt0IHByb3ZpZGUgdGhlaXIgb3duXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYzoxOTp2b2lkIHN5c19maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0KVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTI1LX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjI2OkVYUE9SVF9TWU1CT0woc3lzX2ZpbGxyZWN0KTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgVmVyaWZpY2F0aW9uICZhbXA7IEluaXRpYWwgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjb25maXJtZWQ6IHRoZXkgZG8sIGluIGZhY3QsIHVzZSB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBjZmJfZmlsbHJlY3RgIGFuZCB0aGVuIGBjZmJfaW1hZ2VibGl0YC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aG9zZSBhcmUgdGhlIGxpa2VseSBjdWxwcml0cyB0byBleGFtaW5lIGdpdmVuIHRoZSBjb250ZXh0LiBXZSBuZWVkIHRvIGFzc2VzcyB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1Rcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zMi1cdGhlbHBcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjMzOlx0ICBJbmNsdWRlIHRoZSBjZmJfZmlsbHJlY3QgZnVuY3Rpb24gZm9yIGdlbmVyaWMgc29mdHdhcmUgcmVjdGFuZ2xlXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zNC1cdCAgZmlsbGluZy4gVGhpcyBpcyB1c2VkIGJ5IGRyaXZlcnMgdGhhdCBkb24mIzM5O3QgcHJvdmlkZSB0aGVpciBvd25cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE5OnZvaWQgY2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0yMC17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzEtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfZmlsbHJlY3QpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbWFnZSBCbGl0dGluZyBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGltYWdlIGJsaXR0aW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY29uc2lkZXJpbmcgYGNmYl9pbWFnZWJsaXRgIGFuZCBgc3lzX2ltYWdlYmxpdGAuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBmZXcgY29yZSBhcmVhcyB3aGVuIEkgc2VlIHRob3NlIGZ1bmN0aW9uIG5hbWVzLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3Mgd2hpY2ggY29udGV4dCBpcyBpbnRlbmRlZCBoZXJlLgoKKiAgIEFyZSB3ZSB0YWxraW5nIGFib3V0IHRoZSBmcmFtZWJ1ZmZlciBjb250ZXh0IChgY2ZiYCk/IElmIHNvLCBpcyB0aGlzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMsIHBhcnRpY3VsYXJseSBkaXJlY3QgYWNjZXNzPyBJIHdvbmRlciBhYm91dCBjb2xvciBkZXB0aCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1vZGVsIHdoZW4gYGNmYmAgaXMgaW4gcGxheS4gQW0gSSBsb29raW5nIGF0IGFueSBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRvciBpbnRlcmFjdGlvbnMgaGVyZSwgb3IgaXMgdGhpcyBwcmltYXJpbHkgc29mdHdhcmUtYmFzZWQ/CgoqICAgQWx0ZXJuYXRpdmVseSwgY291bGQgdGhpcyBiZSBzeXN0ZW0tbGV2ZWwgYmxpdHRpbmcgKGBzeXNgKT8gVGhlbiBJIG5lZWQgdG8gY29uc2lkZXIgc3luY2hyb25pemF0aW9uLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgYmV0d2VlbiBkaWZmZXJlbnQgcHJvY2Vzc2VzIG9yIGRyaXZlcnMuIFdoYXQga2luZCBvZiBidWZmZXJpbmcgaXMgaW4gdXNlPyBJcyB0aGVyZSBhbnkgY2FjaGluZyBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyBhbHNvIGJyaW5ncyB1cCBxdWVzdGlvbnMgYWJvdXQgdGhlIHRhcmdldCBkaXNwbGF5OiBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGRlZGljYXRlZCBmcmFtZWJ1ZmZlciBvciBwZXJoYXBzIGEgd2luZG93IG1hbmFnZWQgYnkgYSB3aW5kb3dpbmcgc3lzdGVtIGxpa2UgWDExPwoKVWx0aW1hdGVseSwgdGhpcyByZW1pbmRzIG1lIHRoYXQgSSBuZWVkIHRvIGJlIGF0dGVudGl2ZSB0byB0aGUgc3lzdGVtIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgcmVsYXRlZCB0byBpbWFnZSBtYW5pcHVsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTQ1PWNvbmZpZyBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDgtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0OTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2ltYWdlYmxpdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSBpbWFnZVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNTAtXHQgIGJsaXR0aW5nLiBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93blxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYzoxOTp2b2lkIGNmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMS19XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfaW1hZ2VibGl0KTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwOTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHcmFwaGljcyBBY2NlbGVyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSB0aGUgY29tbW9uIHN1c3BlY3RzIGluIGFjY2VsZXJhdGVkIGdyYXBoaWNzIG9wZXJhdGlvbnMuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLnRoZSBwYXRjaCBpcyBhY3R1YWxseSBtb2RpZnlpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBUaGVzZSBhcmUgKmlubGluZSogZnVuY3Rpb25zISBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGVzZSBpbmxpbmUgZGVmaW5pdGlvbnMgcHJvYmFibHkgZG9lc24mIzM5O3QgbWF0dGVyLiBXaGF0ICpkb2VzKiBtYXR0ZXIgaXMgd2hlcmUgdGhlc2UgYXJlICp1c2VkKi4gVGhlIGNvbXBpbGVyIHdpbGwsIGVmZmVjdGl2ZWx5LCBzdWJzdGl0dXRlIHRoZSBpbmxpbmVkIGNvZGUuIFNvLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCAqY2FsbCogdGhlc2UgaW5saW5lZCBmdW5jdGlvbnMuCgpBbmQgSSBrbm93IHRoZSBtb3N0IGZyZXF1ZW50IGNhbGxlcnMgYXJlIGBjZmJfKmAgYW5kIGBzeXNfKmDigJR0aG9zZSBhcmUgdGhlIHByaW1hcnkgYWNjZWxlcmF0ZWQgcGF0aHMsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHBsYWNlcyB3aGVyZSBgZmJfY29weWFyZWEuaGAgaXMgaW5jbHVkZWQsIHRvIGNhdGNoIGFueSBlZGdlIGNhc2VzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgaW5jbHVkZXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VycHJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9jb3B5YXJlYS5oXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfY29weWFyZWEuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2NvcHlhcmVhLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcwNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBmYl9maWxscmVjdC5oYCoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIHRoYXQgdGhlIGBmYl9maWxscmVjdC5oYCBoZWFkZXIgc2VlbXMgdG8gYmUgaW5jbHVkZWQgc3BlY2lmaWNhbGx5IGJ5IGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLiBUaGF0JiMzOTtzIGEgYml0IGZvY3VzZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcGxhY2VzIHdoZXJlIGl0ICpzaG91bGQqIGJlIGluY2x1ZGVkLCBvciB3aGV0aGVyIGl0cyB1c2FnZSBpcyBpbnRlbnRpb25hbGx5IGxpbWl0ZWQgdG8gdGhlc2UgdHdvIG1vZHVsZXMuIEFyZSB0aGVyZSBvdGhlciBhcmVhcyBvZiB0aGUgc3lzdGVtIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIGFjY2VzcyB0byB0aGF0IGZ1bmN0aW9uYWxpdHk/IENvdWxkIHRoZXJlIGJlIHBvdGVudGlhbCBjb2RlIGR1cGxpY2F0aW9uIG9yIGluZWZmaWNpZW5jaWVzIGlmIGl0JiMzOTtzIG5vdCBtb3JlIHdpZGVseSBhY2Nlc3NpYmxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbnRlbnQgaGVyZTsgaXMgdGhpcyBieSBkZXNpZ24sIG9yIGlzIHRoaXMganVzdCBhbiBvdmVyc2lnaHQ/IE15IGltbWVkaWF0ZSBjb25jZXJuLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaWxlIG5hbWUsIGlzIHRoYXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGxvdyBsZXZlbCBkcmF3aW5nIHByaW1pdGl2ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpbmNsdWRlIFwmIzM0O2ZiX2ZpbGxyZWN0LmhcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9maWxscmVjdC5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcJiMzNDtzeXNtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfZmlsbHJlY3QuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTQ0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIEluY2x1c2lvbiBvZiBgZmJfaW1hZ2VibGl0LmhgKioKCkFscmlnaHQsIHNvIHRoZSBwcm9tcHQgaGFzIG1lIGNpcmNsaW5nIGJhY2sgdG8gdGhlIGltYWdlIGJsaXR0aW5nIGxpYnJhcnksIHNwZWNpZmljYWxseSBgZmJfaW1hZ2VibGl0LmhgLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIHRoaXMgY29udGV4dC4gV2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjY29tcGxpc2g/IEFyZSB3ZSBkZWFsaW5nIHdpdGggcmF3IGZyYW1lYnVmZmVyIGFjY2Vzcz8gRG8gd2UgbmVlZCBvcHRpbWl6ZWQgaW1hZ2UgY29weSByb3V0aW5lcz8gSXMgdGhpcyB0YXJnZXQgcGxhdGZvcm0gZXZlbiB1c2luZyBhIHN0YW5kYXJkIGZyYW1lYnVmZmVyIGFic3RyYWN0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBiZXNwb2tlPyBgZmJfaW1hZ2VibGl0LmhgIHN1Z2dlc3RzIGEgdHJhZGl0aW9uYWwgZnJhbWVidWZmZXIgYXBwcm9hY2gsIHdoaWNoIGlzIGdvb2QgaWYgdGhhdCYjMzk7cyB0aGUgYmFzZSBhc3N1bXB0aW9uLgoKVGhlIHJlYWwgcXVlc3Rpb25zIGFyZTogSXMgdGhpcyB0aGUgY29ycmVjdCBsZXZlbCBvZiBhYnN0cmFjdGlvbj8gSXMgaXQgaGFyZHdhcmUtYWNjZWxlcmF0ZWQsIG9yIHB1cmVseSBzb2Z0d2FyZT8gSWYgc29mdHdhcmUsIGFyZSB0aGVyZSBwb3RlbnRpYWxseSBmYXN0ZXIgbG93LWxldmVsIGFsdGVybmF0aXZlcywgbWF5YmUgcmVseWluZyBvbiBTSU1EIGludHJpbnNpY3Mgb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgcmVnaXN0ZXJzIGlmIHRoZXkgYXJlIGV4cG9zZWQ/CgpNb3JlIGdlbmVyYWxseSwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBtYWludGFpbmFiaWxpdHkgYW5kIHBvcnRhYmlsaXR5IGltcGxpY2F0aW9ucy4gSXMgYGZiX2ltYWdlYmxpdC5oYCB3aWRlbHkgc3VwcG9ydGVkIGFuZCBkb2N1bWVudGVkPyBEb2VzIGl0IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgcmVxdWlyZSB3aXRob3V0IHVubmVjZXNzYXJ5IG92ZXJoZWFkPyBJIG5lZWQgdG8gY29uc2lkZXIgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBncmFwaGljcyBzdGFjay4gSWYgaXQmIzM5O3MgYSBsZWdhY3kgbGlicmFyeSwgdGhlIGNvc3QvYmVuZWZpdCBtaWdodCBub3QgYmUgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyBpdCBwbGF5cyBpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlIGNvdWxkIGJlIGJldHRlciwgbG93ZXItbGV2ZWwgYXBwcm9hY2hlcywgb3IgYmV0dGVyLCBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfaW1hZ2VibGl0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY1NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIGl0JiMzOTtzIGNsZWFyIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIGFyb3VuZCB0aG9zZSBzaXggc3BlY2lmaWMgZnJhbWVidWZmZXIgZnVuY3Rpb25zOiBgRkJfQ0ZCX0NPUFlBUkVBYCwgYEZCX1NZU19DT1BZQVJFQWAsIGBGQl9DRkJfRklMTFJFQ1RgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYEZCX0NGQl9JTUFHRUJMSVRgLCBhbmQgYEZCX1NZU19JTUFHRUJMSVRgLiBUbyBlbnN1cmUgZXZlcnl0aGluZyB3b3JrcyBhcyBleHBlY3RlZCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQsIGF0IGEgbWluaW11bSwgd2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBgRkJgLCB3aGljaCBjb3ZlcnMgdGhlIGZ1bmRhbWVudGFsIGZyYW1lYnVmZmVyIHN1cHBvcnQsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAsIHdoaWNoIGVuYWJsZXMgdGhlIGNydWNpYWwgZnJhbWVidWZmZXIgY29uc29sZSBmdW5jdGlvbmFsaXR5LiBOb3cgSSBuZWVkIHRvIHNlZSBpZiBteSB0aGlua2luZyBpcyByaWdodCBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlc2UgY29uZmlncy4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWdgIGFuZCBkb3VibGUgY2hlY2suIFRoaXMgc2hvdWxkIGJlIHdoZXJlIHRoZXNlIGVzc2VudGlhbCBidWlsZGluZyBibG9ja3MgYXJlIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9TWVNfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2OTpjb25maWcgRkJfU1lTX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy03MC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIENvbmZpZzogQSBUcmlzdGF0ZSBXaXRob3V0IGEgVm9pY2UqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEZCX1NZU19DT1BZQVJFQWAgY29uZmlnIG9wdGlvbiBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSXQmIzM5O3MgYSB0cmlzdGF0ZSwgcmlnaHQ/IFdoaWNoIG1lYW5zIGl0IGNhbiBiZSB5ZXMsIG5vLCBvciBtYXliZS4gQnV0IHRoZXJlJiMzOTtzIG5vIGFzc29jaWF0ZWQgcHJvbXB0IOKAkyBubyB1c2VyLWZhY2luZyBzdHJpbmcgdG8gdGVsbCBtZSB3aGF0IHRoaXMgb3B0aW9uICpkb2VzKiBvciB3aHkgSSYjMzk7ZCB3YW50IHRvIGVuYWJsZSBpdC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgY29udHJvbGxlZCBieSBkZXBlbmRlbmNpZXMsIG5vdCBkaXJlY3RseSBieSBtZSwgdGhlIHVzZXIuIEl04oCZcyBhbiBvcHRpb24gZW5hYmxlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGVuYWJsaW5nIG90aGVyIHRoaW5ncy4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IFdoYXQmIzM5O3MgZHJpdmluZyB0aGlzPyBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSAqc2VsZWN0aW5nKiBgRkJfU1lTX0NPUFlBUkVBYD8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgYmVpbmcgc2V0LiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0JiMzOTtzIGNvbnRyb2xsaW5nIHRoaXMgcGFydGljdWxhciBiaXQuIEkgc3VzcGVjdCB0aGlzIGlzIHNvbWV0aGluZyBkZWVwIGluIHRoZSBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGQl9TWVNfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM1ND1jb25maWcgRkJfVlQ4NTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNTctXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUIGlmICghRkJfV01UX0dFX1JPUFMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM1ODpcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUEgaWYgKCFGQl9XTVRfR0VfUk9QUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzU5LVx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM2Nz1jb25maWcgRkJfV004NTA1XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNzEtXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUIGlmICghRkJfV01UX0dFX1JPUFMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM3MjpcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUEgaWYgKCFGQl9XTVRfR0VfUk9QUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzczLVx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xMzI9Y29uZmlnIEZCX0RNQU1FTV9IRUxQRVJTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTM0LVx0ZGVwZW5kcyBvbiBGQl9DT1JFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxMzU6XHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xMzYtXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTY0PWNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE2Ni1cdGRlcGVuZHMgb24gRkJfQ09SRVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY3Olx0c2VsZWN0IEZCX1NZU19DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY4LVx0c2VsZWN0IEZCX1NZU19GSUxMUkVDVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRnJhbWVidWZmZXIgU3lzdGVtIE1lbW9yeSBIZWxwZXJzKioKClJpZ2h0LCBzbyBgRkJfU1lTTUVNX0hFTFBFUlNgIGlzIGNsZWFybHkgZGVmaW5pbmcgdGhlIHN5c3RlbSBtZW1vcnktYmFzZWQgYWNjZWxlcmF0aW9uIHJvdXRpbmVzLiBJdCYjMzk7cyBvcHRpbmcgZm9yIGBGQl9TWVNfQ09QWUFSRUFgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYW5kIGBGQl9TWVNfSU1BR0VCTElUYC4gTWFrZXMgc2Vuc2UuIFRob3NlIGFyZSB0aGUgY29yZSBvcGVyYXRpb25zIHdlJiMzOTtkIGV4cGVjdCBmb3IgZ2VuZXJhbC1wdXJwb3NlIGFjY2VsZXJhdGlvbiB3aGVuIGRpcmVjdCBtZW1vcnkgYWNjZXNzIGlzIGF2YWlsYWJsZS4KCkJ1dCBoYW5nIG9u4oCmIGlzIGBGQl9DRkJfQ09QWUFSRUFgIGluIHRoZSBtaXggYXMgd2VsbD8gVGhhdCYjMzk7cyB0eXBpY2FsbHkgdXNlZCBmb3IgQml0QkxUIGFuZCBjaGFyYWN0ZXIgY29weWluZyB1c2luZyBhIGNvbG91ciBmcmFtZSBidWZmZXIuIElzIHRoZSBzeXN0ZW0gZ29pbmcgdG8gdXNlICpib3RoKiBvciBjb3VsZCB0aGV5IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIHNvLCB3aHkgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcz8gT3IgaXMgdGhlcmUgYSBkZWVwZXIgaW50ZXJhY3Rpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJldHdlZW4gdGhlbT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9DRkJfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgRkJfQ0ZCX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMzYtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzozNzpjb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zOC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjU1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVbnByb21wdGVkIFRyaXN0YXRlKioKCkhtbSwgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHRyaXN0YXRlIHN5c3RlbSwgYnV0IGNydWNpYWxseSwgdGhlcmUmIzM5O3Mgbm8gZXhwbGljaXQgcHJvbXB0LiBUaGF0JiMzOTtzIHRoZSBrZXkgaXNzdWUuIEEgdHJpc3RhdGUsIGJ5IGl0cyBuYXR1cmUsIG5lZWRzIGEgZGVmaW5lZCBzZWxlY3Rpb24gb3IgY29udHJvbCBtZWNoYW5pc20gdG8gbmF2aWdhdGUgYmV0d2VlbiBpdHMgdGhyZWUgc3RhYmxlIHN0YXRlcy4gV2l0aG91dCB0aGF0LCBpdOKAmXMganVzdC4uLmluZGV0ZXJtaW5hdGUuIEl0JiMzOTtzIGxpa2UgaGF2aW5nIHRocmVlIHN3aXRjaGVzLCBidXQgbm8gbGV2ZXIgb3IgYnV0dG9uIHRvIGRlY2lkZSB3aGljaCBwb3NpdGlvbiB0aGV5JiMzOTtyZSBpbi4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQgbWVjaGFuaXNtLCBpbnRlcm5hbCBvciBleHRlcm5hbCwgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIHN0YXRlcz8gSXMgaXQgYSBwYXNzaXZlIHN5c3RlbSwgcmVseWluZyBvbiBpbmhlcmVudCBwcm9wZXJ0aWVzIG9yIHNvbWUga2luZCBvZiBleHRlcm5hbCBpbmZsdWVuY2UgdG8gZGV0ZXJtaW5lIGl0cyBiZWhhdmlvciwgb3IgaXMgdGhlcmUgYW4gaW1wbGljaXQgY29udHJvbCBzaWduYWwgb3IgY29uZGl0aW9uIEkmIzM5O20gbWlzc2luZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0mIzM5O3Mgc3RhdGVzIGFyZSBiZWluZyBkZXRlcm1pbmVkIHdpdGhvdXQgYW4gb2J2aW91cyBleHBsaWNpdCBpbnB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEZCX0NGQl9DT1BZQVJFQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03MT1jb25maWcgRkJfQ0lSUlVTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjc1Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc2LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTA9Y29uZmlnIEZCX1BNMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05My1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI1OT1jb25maWcgRkJfQVRBUklcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjYyLVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI2MzpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjQtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zMzM9Y29uZmlnIEZCX1ZHQTE2XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMzNy1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMzg6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM5LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzUwPWNvbmZpZyBGQl9TVElcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzUzLVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjM1NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTUtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zODM9Y29uZmlnIEZCX1RHQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zODktXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzkwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM5MS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ3OT1jb25maWcgRkJfU0JVU19IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDgwLVx0Ym9vbFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ4MTpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00ODItXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTUwMD1jb25maWcgRkJfQ0c2XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUwMi1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IChTUEFSQyBcdTAwMjZcdTAwMjYgRkJfU0JVUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1MDM6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTA0LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTEwPWNvbmZpZyBGQl9GRkJcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTEyLVx0ZGVwZW5kcyBvbiBGQl9TQlVTIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTEzOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUxNC1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU1Mj1jb25maWcgRkJfWFZSNTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU1NS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1NTY6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTU3LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTg3PWNvbmZpZyBGQl9QVlIyXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU5MS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1OTI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTkzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjI0PWNvbmZpZyBGQl9TMUQxM1hYWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MjctXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjI4Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYyOS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTY0OD1jb25maWcgRkJfTlZJRElBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY1MS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NTI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjUzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9Njk4PWNvbmZpZyBGQl9SSVZBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTcwMS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3MDI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNzAzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODA1PWNvbmZpZyBGQl9NQVRST1hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODA5LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjgxMDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04MTEtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz05MjY9Y29uZmlnIEZCX1JBREVPTlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05MjktXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTMwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTkzMS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTk4Nz1jb25maWcgRkJfQVRZXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTk5MC1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5OTE6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTkyLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTAzOT1jb25maWcgRkJfUzNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA0My1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDQ0Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNDUtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMDYyPWNvbmZpZyBGQl9TQVZBR0Vcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA2NS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDY2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNjctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTAxPWNvbmZpZyBGQl9TSVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEwNS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTA2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMDctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTMyPWNvbmZpZyBGQl9WSUFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEzNS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTM2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMzctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTcxPWNvbmZpZyBGQl9ORU9NQUdJQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTc0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjExNzU6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE3Ni1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExOTg9Y29uZmlnIEZCXzNERlhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIwMS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjAyOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMDMtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjQ1PWNvbmZpZyBGQl9WVDg2MjNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTI0OS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjUwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNTEtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjYwPWNvbmZpZyBGQl9UUklERU5UXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNjMtXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI2NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjY1LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI4Mz1jb25maWcgRkJfQVJLXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyODctXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI4ODpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjg5LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI5OD1jb25maWcgRkJfUE0zXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMDEtXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwMjpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzAzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU1Mz1jb25maWcgRkJfU001MDFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1Ni1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTU3Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NTgtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE1MD1jb25maWcgRkJfSU9NRU1fSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1Mi1cdGRlcGVuZHMgb24gRkJfQ09SRVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTUzOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM5MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmcmFtZWJ1ZmZlciBoZWxwZXIgb3B0aW9ucywgc3BlY2lmaWNhbGx5IGBGQl9JT01FTV9IRUxQRVJTYCBhbmQgYEZCX1NZU01FTV9IRUxQRVJTYC4gSXQgc2VlbXMgbGlrZSBzZWxlY3RpbmcgYEZCX0lPTUVNX0hFTFBFUlNgIGVuYWJsZXMgdGhlIGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBmdW5jdGlvbnMuIEFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgIGRvZXMgdGhlIHNhbWUsIGJ1dCB3aXRoIHRoZSBgRkJfU1lTX2AgdmFyaWFudHMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgZW5hYmxlIGJvdGgsIHNpbmNlIHRoZXkgc2VlbSB0byBwcm92aWRlIHVzZWZ1bCwgb3B0aW1pemVkIGZ1bmN0aW9ucy4gQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgdGhhdCBtYW55IGRyaXZlcnMgYWxzbyBzZWxlY3QgdGhlc2UuIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgY29uZmxpY3RzIG9yIHVubmVjZXNzYXJ5IHJlZHVuZGFuY3kuCgpTbywgSSBjb3VsZCBsaXN0IGBGQl9JT01FTV9IRUxQRVJTYCBhbmQgYEZCX1NZU01FTV9IRUxQRVJTYCBkaXJlY3RseSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIHNlY3Rpb24sIG9yIG1heWJlIEkgc2hvdWxkIGFpbSBmb3IgdGhlIHNwZWNpZmljIHByaW1pdGl2ZXMgbGlrZSBgRkJfQ0ZCX0NPUFlBUkVBYC4gQnV0LCBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBJIGNhbiBhY3R1YWxseSBlbmFibGUgYEZCX0NGQl9DT1BZQVJFQWAgZGlyZWN0bHkgaW4gYC5jb25maWdgIGlmIGl0JiMzOTtzIHRyaXN0YXRlIGFuZCBkb2VzbiYjMzk7dCBoYXZlIGl0cyBvd24gcHJvbXB0LiBJZiBJIHRyeSB0byBlbmFibGUgaXQsIHRoZSBidWlsZCB3aWxsIGxpa2VseSBmYWlsLgoKUmlnaHQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgYEZCX0lPTUVNX0hFTFBFUlNgIGNvbWVzIGluLiBJdCYjMzk7cyBhIGJvb2xlYW4gd2l0aCBhIHByb21wdC4gSSBzaG91bGQgdmVyaWZ5IHRoaXMgdGhvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJfSU9NRU1fSEVMUEVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE0Nj1jb25maWcgRkJfSU9NRU1fRk9QU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE0OS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1MDpjb25maWcgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTUxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1Ny1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1ODpjb25maWcgRkJfSU9NRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU5LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gSGVscGVycyoqCgpIbW0sIG5vLCB0aGF0IGBGQl9JT01FTV9IRUxQRVJTYCBzeW1ib2wgaXMgYSBib29sZWFuLCBhbmQgdGhlcmUmIzM5O3Mgbm8gYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHByb21wdC4gVGhhdCBwYXRoIGlzbiYjMzk7dCBnb2luZyB0byBnZXQgbWUgYW55d2hlcmUgaW50ZXJlc3RpbmcgcmlnaHQgbm93LiBJdCYjMzk7cyBhIGJpbmFyeSBjaG9pY2UuCgpOb3csIHdoYXQgYWJvdXQgYEZCX1NZU01FTV9IRUxQRVJTYD8gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGF0IG9uZSBpcyBkZWZpbmVkLiBJdCYjMzk7cyBwb3RlbnRpYWxseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvLiBJIHN1c3BlY3QsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgY291bGQgYmUgYSBzaW1pbGFyIHNpdHVhdGlvbiwgYnV0IGl0JiMzOTtzIHdvcnRoIHRoZSBxdWljayBpbnZlc3RpZ2F0aW9uLiBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSBwcm9tcHQgb3IgbW9yZSBkZXRhaWxzIGZvciBtZSB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTU4PWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTYzLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY0OmNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3MS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE3Mjpjb25maWcgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3My1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBSZWFzb25pbmcgb24gRnJhbWVidWZmZXIgRHJpdmVyIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgZnJhbWVidWZmZXIgZHJpdmVycyBhcmUgY2hvc2VuIGFuZCBpdCYjMzk7cyBnZXR0aW5nIGEgbGl0dGxlIGludHJpY2F0ZS4gV2UgaGF2ZSB0aGlzIGJvb2xlYW4gb3B0aW9uLCBsZXQmIzM5O3MgY2FsbCBpdCBhICYjMzQ7ZmxhZyYjMzQ7IGZvciB0aGUgc2FrZSBvZiBjb252ZXJzYXRpb24sIHRoYXQgZG9lc24mIzM5O3QgaGF2ZSBhbiBleHBsaWNpdCBwcm9tcHQgYXR0YWNoZWQgdG8gaXQuIFRoYXQgbWVhbnMgd2UgbmVlZCBzb21lIGtpbmQgb2Ygc21hcnQgZHJpdmVyIHRvIGFjdHVhbGx5ICpzZWxlY3QqIGl0LCBtYWtlIGl0IGFjdGl2ZS4KCkZvciBleGFtcGxlLCBJIHNlZSB0aGF0IHRoZSBgRkJfVkdBMTZgIGRyaXZlciwgaXQgc2VlbXMgdG8gZGlyZWN0bHkgaW1wbHkgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0NPUFlBUkVBYCBlbmFibGVkLiBPaCB3YWl0LCBsb29raW5nIGNsb3NlciwgYEZCX1ZHQTE2YCBhbHNvIGltcGxpZXMgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2x1ZSBhYm91dCBhIHBhdHRlcm4uCgpOb3csIHdoYXTigJlzICpzZWxlY3RpbmcqIGBGQl9TWVNfQ09QWUFSRUFgPyBMZXQmIzM5O3Mgc2VlLi4uIGBGQl9WVDg1MDBgLCBgRkJfV004NTA1YCwgYEZCX0RNQU1FTV9IRUxQRVJTYCwgYW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AuIEludGVyZXN0aW5nLiBTbyB0aGVyZSYjMzk7cyBhIHNldCBvZiBtb3JlIGdlbmVyaWMgb3B0aW9ucyBoZXJlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGEgc2ltaWxhcmx5IGdlbmVyaWMgZHJpdmVyIHRoYXQgd2lsbCBoYW5kbGUgc2V0dGluZyBgRkJfU1lTTUVNX0hFTFBFUlNgIGJ5IGl0c2VsZj8gSXQgbG9va3MgbGlrZSB0aG9zZSBmb3VyIHRoaW5ncyBhcmUgcmVsYXRlZCB0byBsb3ctbGV2ZWwgbWVtb3J5IGhhbmRsaW5nLCBzbyB0aGVyZSBoYXMgdG8gYmUgc29tZXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGF0LiBJIG5lZWQgdG8ga2VlcCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDg9Y29uZmlnIEZCX0hFQ1VCQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MC1cdGRlcGVuZHMgb24gRkJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1MTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUyLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNDY9Y29uZmlnIEZCX0FSQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUIFx1MDAyNlx1MDAyNiAoWDg2IHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNDk6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNTAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1NzE9Y29uZmlnIEZCX1NNU0NVRlhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3NC1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTc1Olx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU4Mz1jb25maWcgRkJfVURMXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODctXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU4ODpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODktXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2MDY9Y29uZmlnIEZCX1BTM1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjA4LVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgUFMzX1BTM0FWXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYwOTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MTAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NTg9Y29uZmlnIEZCX1ZJUlRVQUxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2MC1cdGRlcGVuZHMgb24gRkJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjYxOlx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY3OD1jb25maWcgWEVOX0ZCREVWX0ZST05URU5EXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2ODAtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBYRU5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjgxOlx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY4Mi1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2ODk9Y29uZmlnIEZCX01FVFJPTk9NRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjkxLVx0ZGVwZW5kcyBvbiBGQlxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2OTI6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjkzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NTUtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiAoQVJDSF9QWEEgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE3NTY6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzU3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzc5PWNvbmZpZyBGQl9TU0QxMzA3XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODQtXHRzZWxlY3QgRkJfQkFDS0xJR0hUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc4NTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODYtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTcyPWNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3NS1cdHNlbGVjdCBGQl9ERUZFUlJFRF9JT1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTc2Olx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTQ3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBWaXJ0dWFsIEZyYW1lIEJ1ZmZlciBTdXBwb3J0IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkgc2VlIGBGQl9WSVJUVUFMYCBoYXMgYmVlbiBzZWxlY3RlZCwgYW5kIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcHJvbWlzaW5nLiBgRkJfVklSVFVBTGAgc3BlY2lmaWNhbGx5IHJlZmVycyB0byB0aGUgVmlydHVhbCBGcmFtZSBCdWZmZXIgc3VwcG9ydCwgb3IgdmZiLiBBbmQsIGtub3dpbmcgd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBhbmQgdGhlIHBvd2VyIG9mIGluc3RydW1lbnRlZCB0YXJnZXRzLCB0aGlzIGp1bXBzIG91dCBhcyBhIHBvdGVudGlhbCBnb2xkbWluZS4gVGhlIHZmYiBoYXMgYWx3YXlzIGJlZW4gYSBjb21wZWxsaW5nIHRhcmdldCBhbmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBzZWxlY3RlZCBzdWdnZXN0cyBpdCBpcyBwcmVzZW50LiBTbywgbGV0IG1lIGdldCBhIHF1aWNrIGxvb2sgYXQgYEZCX1ZJUlRVQUxgIGFuZCBzZWUgd2hhdCBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHdlIGhhdmUgdG8gbGV2ZXJhZ2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9WSVJUVUFMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjQ1PWNvbmZpZyBGQl9TSDc3NjBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1Ny1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjU4OmNvbmZpZyBGQl9WSVJUVUFMXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1OS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgRnJhbWUgQnVmZmVyIHN1cHBvcnQgKE9OTFkgRk9SIFRFU1RJTkchKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBgRkJfVklSVFVBTGAgYW5kIGBGQl9JT01FTV9IRUxQRVJTYCoqCgpZZXMsICpGQl9WSVJUVUFMKiBpcyBpbmRlZWQgYSB2ZXJ5IHVzZWZ1bCB0b29sLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBpbnRyaWNhY2llcyBvZiBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudC4gSXQgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5IGluIG1hbnkgc2NlbmFyaW9zLCBwYXJ0aWN1bGFybHkgd2hlbiB5b3UgbmVlZCB0byBhYnN0cmFjdCBhd2F5IGZyb20gdGhlIHBoeXNpY2FsIGRldGFpbHMgYW5kIGhhbmRsZSB2aXJ0dWFsIG1lbW9yeSByZWdpb25zLiBJIGFwcHJlY2lhdGUgaXRzIGVsZWdhbnQgZGVzaWduOyBpdCBtYWtlcyBkZWJ1Z2dpbmcgZnJhbWVidWZmZXIgaXNzdWVzIG11Y2ggZWFzaWVyLiBCdXQgbm93LCBteSBtaW5kIHdhbmRlcnMgdG8gKkZCX0lPTUVNX0hFTFBFUlMqLiBJJiMzOTttIGFza2luZyBteXNlbGYgaWYgaXQmIzM5O3MgdGhlIHJpZ2h0IGNob2ljZSBnaXZlbiB0aGUgdGFzayBJJiMzOTttIGNvbnRlbXBsYXRpbmcuIEFyZSB3ZSByZWFsbHkgbGV2ZXJhZ2luZyB0aGUgYmVuZWZpdHMgb2YgdGhvc2UgaGVscGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIHBvdGVudGlhbCB0cmFkZS1vZmZzIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dD8gVGhpcyBjb3VsZCBpbnZvbHZlIGFuIGFzc2Vzc21lbnQgb2YgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucywgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBvciBldmVuIHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZGVjaXNpb24uIFRpbWUgdG8gdGFrZSBhIGRlZXBlciBkaXZlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGQl9JT01FTV9IRUxQRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTY0PWNvbmZpZyBGQl9HUlZHQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02Ni1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IFNQQVJDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Njc6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY4LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTc9Y29uZmlnIEZCX0FDT1JOXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExOS1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IEFSTSBcdTAwMjZcdTAwMjYgQVJDSF9BQ09STlxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEyMDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjY9Y29uZmlnIEZCX0NMUFM3MTFYXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyOS1cdGRlcGVuZHMgb24gTENEX0NMQVNTX0RFVklDRVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMxLVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzc9Y29uZmlnIEZCX1NBMTEwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzktXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBBUk0gXHUwMDI2XHUwMDI2IEFSQ0hfU0ExMTAwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0OT1jb25maWcgRkJfSU1YXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1My1cdGRlcGVuZHMgb24gTENEX0NMQVNTX0RFVklDRVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1LVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0NZQkVSMjAwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjAtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlQgXHUwMDI2XHUwMDI2IChCUk9LRU4gfHwgIVNQQVJDNjQpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYxOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjItXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE5NT1jb25maWcgRkJfUTQwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE5OTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjAwLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yMzg9Y29uZmlnIEZCX0ZNMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDAtXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBaT1JST1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI0MTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjQyLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNzA9Y29uZmlnIEZCX09GXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI3NC1cdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Mjc1Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNzYtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjgxPWNvbmZpZyBGQl9DT05UUk9MXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI4My1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2ICgoUFBDX1BNQUMgXHUwMDI2XHUwMDI2IFBQQzMyKSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Mjg0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yODUtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjkwPWNvbmZpZyBGQl9QTEFUSU5VTVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yOTItXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBQUENfUE1BQyBcdTAwMjZcdTAwMjYgUFBDMzJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyOTM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI5NC1cdHNlbGVjdCBGQl9NQUNNT0RFU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yOTk9Y29uZmlnIEZCX1ZBTEtZUklFXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMwMS1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IChNQUMgfHwgKFBQQ19QTUFDIFx1MDAyNlx1MDAyNiBQUEMzMikpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzAyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDMtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzA4PWNvbmZpZyBGQl9DVDY1NTUwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMxMC1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IFBQQzMyIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMTE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMxMi1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzE2PWNvbmZpZyBGQl9BU0lMSUFOVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTgtXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMTk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMyMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzcwPWNvbmZpZyBGQl9NQUNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzcyLVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgTUFDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzczOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNzQtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDA3PWNvbmZpZyBGQl9VVkVTQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MTAtXHRkZXBlbmRzIG9uICFVTUxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0MTE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQxMi1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDI0PWNvbmZpZyBGQl9WRVNBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQyNy1cdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NDI4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MjktXHRzZWxlY3QgU1lTRkJcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDM2PWNvbmZpZyBGQl9FRklcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDQwLVx0c2VsZWN0IERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0NDE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ0Mi1cdHNlbGVjdCBTWVNGQlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00NTY9Y29uZmlnIEZCX0dCRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00NTktXHRkZXBlbmRzIG9uIFNHSV9JUDMyIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ2MDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDYxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz01NjY9Y29uZmlnIEZCX1hWUjI1MDBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTY4LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTY5Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzktXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTgwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01ODEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTYxMD1jb25maWcgRkJfT1BFTkNPUkVTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYxMi1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2MTM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYxNC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjM2PWNvbmZpZyBGQl9BVE1FTFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDEtXHRzZWxlY3QgRkJfQkFDS0xJR0hUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjQyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDMtXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTc0Nj1jb25maWcgRkJfSTc0MFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03NDgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3NDk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc1MC1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODk0PWNvbmZpZyBGQl9NQVRST1hfTUFWRU5cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODk2LVx0ZGVwZW5kcyBvbiBGQl9NQVRST1hfRyBcdTAwMjZcdTAwMjYgRkJfTUFUUk9YX0kyQ1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjg5NzpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODk4LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz05NjU9Y29uZmlnIEZCX0FUWTEyOFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NjctXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5Njg6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTk2OS1cdHNlbGVjdCBGQl9NQUNNT0RFUyBpZiBQUENfUE1BQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTg3PWNvbmZpZyBGQl9LWVJPXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExODktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTkwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjI5PWNvbmZpZyBGQl9WT09ET08xXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMzEtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjMyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjMzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzExPWNvbmZpZyBGQl9DQVJNSU5FXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMTMtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMzE0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzE1LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzM1PWNvbmZpZyBGQl9BVTExMDBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMzOC1cdGRlcGVuZHMgb24gTUlQU19BTENIRU1ZIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMzk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNDAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MDE9Y29uZmlnIEZCX1BNQUdfQUFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwMy1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IFRDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwNDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQwOT1jb25maWcgRkJfUE1BR19CQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDExLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgVENcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDEyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDEzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDE3PWNvbmZpZyBGQl9QTUFHQl9CXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBUQ1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0MjA6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MjEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MjY9Y29uZmlnIEZCX01BWElORVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDI4LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgTUFDSF9ERUNTVEFUSU9OXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQyOTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQzNT1jb25maWcgRkJfRzM2NFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDM3LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgKE1JUFNfTUFHTlVNXzQwMDAgfHwgT0xJVkVUVElfTTcwMClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDM4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDM5LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDQzPWNvbmZpZyBGQl82ODMyOFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDQ1LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgKE02ODMyOCB8fCBNNjhFWjMyOCB8fCBNNjhWWjMyOClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDQ2Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDQ3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDUxPWNvbmZpZyBGQl9QWEExNjhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ1NC1cdGRlcGVuZHMgb24gQ1BVX1BYQTE2OCB8fCBDUFVfUFhBOTEwIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0NTU6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0NTYtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0NjA9Y29uZmlnIEZCX1BYQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDYyLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgQVJDSF9QWEFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDYzOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDY0LVx0c2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTIGlmIE9GXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MTE9Y29uZmlnIEZCX0ZTTF9ESVVcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUxMy1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZTTF9TT0NcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTE0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTE1LVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTMyPWNvbmZpZyBGQl9TM0Ncbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUzNS1cdGRlcGVuZHMgb24gQVJDSF9TM0M2NFhYIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1MzY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MzctXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1OTU9Y29uZmlnIEZCX0lCTV9HWFQ0NTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1OTctXHRkZXBlbmRzIG9uIEZCXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU5ODpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU5OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTYyMz1jb25maWcgRkJfWElMSU5YXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MjUtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiAoTUlDUk9CTEFaRSB8fCBBUkNIX1pZTlEgfHwgQVJDSF9aWU5RTVApXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYyNjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYyNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTYzMj1jb25maWcgRkJfR09MREZJU0hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNS1cdGRlcGVuZHMgb24gR09MREZJU0ggfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYzNjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY0MD1jb25maWcgRkJfQ09CQUxUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDItXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBNSVBTX0NPQkFMVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2NDM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDQtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY0NT1jb25maWcgRkJfU0g3NzYwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDgtXHRcdHx8IENQVV9TVUJUWVBFX1NINzcyMCB8fCBDUFVfU1VCVFlQRV9TSDc3MjEpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY0OTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1MC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY5OD1jb25maWcgRkJfTUI4NjJYWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzAxLVx0ZGVwZW5kcyBvbiBQQ0kgfHwgKE9GIFx1MDAyNlx1MDAyNiBQUEMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTcwMjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTcwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTczNz1jb25maWcgRkJfRVA5M1hYXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MzktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBBUkNIX0VQOTNYWFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE3NDA6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NDEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NjM9Y29uZmlnIEZCX1NJTVBMRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY3LVx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzY4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY5LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzkwPWNvbmZpZyBGQl9TTTcxMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzkyLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc5MzpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc5NC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0lPTUVNX0hFTFBFUlNfREVGRVJSRURcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjEtXHRzZWxlY3QgRkJfREVGRVJSRURfSU9cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE2MjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjMtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTEzPWNvbmZpZyBGQl9HRU9ERV9MWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy0xNS1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZCX0dFT0RFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6MTY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTE3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZz0yNj1jb25maWcgRkJfR0VPREVfR1hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMjgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBGQl9HRU9ERVxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnOjI5Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy0zMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc9Mzk9Y29uZmlnIEZCX0dFT0RFX0dYMVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy00MS1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZCX0dFT0RFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6NDI6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTQzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc9Mj1jb25maWcgTU1QX0ZCXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGQlxuZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvS2NvbmZpZzo1Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWctNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnPTI9Y29uZmlnIEZCX09NQVBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBBUkNIX09NQVAxIHx8IChBUk0gXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnOjY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9vbWFwL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnPTU9bWVudWNvbmZpZyBGQl9PTUFQMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWctMTEtXHRzZWxlY3QgT01BUDJfVlJGQiBpZiBBUkNIX09NQVAyIHx8IEFSQ0hfT01BUDNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc6MTI6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvS2NvbmZpZy0xMy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzMjEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBjb25maWd1cmUgdGhpcyBmcmFtZWJ1ZmZlciBzZXR1cC4gUmlnaHQgbm93LCBgRkJfU0lNUExFYCBwdWxscyBpbiBgRkJfSU9NRU1fSEVMUEVSU2AuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWFsIHRyaWNrIGlzIHRvIGdldCAqYm90aCogYEZCX1NZU01FTV9IRUxQRVJTYCBhbmQgYEZCX0lPTUVNX0hFTFBFUlNgLCBhbmQgaXQgbG9va3MgbGlrZSBJIGNhbiBkbyB0aGF0IGJ5IGVuYWJsaW5nIGBGQl9WSVJUVUFMYCAqYW5kKiBgRkJfU0lNUExFYC4gRG9pbmcgdGhhdCB3aWxsIHNlbGVjdCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIGZvciBiYXNpYyBvcGVyYXRpb25zOiBgRkJfU1lTX0NPUFlBUkVBYCwgYEZCX1NZU19GSUxMUkVDVGAsIGBGQl9TWVNfSU1BR0VCTElUYCwgYW5kIHRoZSBDRkIgdmFyaWFudHM6IGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfQ0ZCX0ZJTExSRUNUYCwgYEZCX0NGQl9JTUFHRUJMSVRgLgoKTm93LCBJICphbHNvKiBuZWVkIHRvIGVuc3VyZSBgZmJjb25gIGlzIGVuYWJsZWQsIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoZXNlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgRlJBTUVCVUZGRVJfQ09OU09MRWAgaXMgZW5hYmxlZC4KCldhaXQsIGBGQl9WSVJUVUFMYCBpcyBhIHRyaXN0YXRlLCBub3QgYSBib29sZWFuLCBzbyBJIHNob3VsZCBqdXN0IGJlIHNwZWNpZnlpbmcgYEZCX1ZJUlRVQUxgIGFuZCBgRkJfU0lNUExFYCwgYW5kIGxldCB0aGUgYnVpbGQgc3lzdGVtIHNvcnQgb3V0IHRoZSBpbnRlcm1lZGlhdGUgc3RhdGVzLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWcgbmFtZXMgcmlnaHQgZm9yIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9jb25zb2xlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZz00Nz1jb25maWcgRFVNTVlfQ09OU09MRV9ST1dTXG4tLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTctXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzo1ODpjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTktXHRib29sIFwmIzM0O0ZyYW1lYnVmZmVyIENvbnNvbGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTY3LVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6Njg6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfTEVHQUNZX0FDQ0VMRVJBVElPTlxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNjktXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJjb24gaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNvZGVcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnOjg4OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy04OS0gICAgICAgYm9vbCBcJiMzNDtNYXAgdGhlIGNvbnNvbGUgdG8gdGhlIHByaW1hcnkgZGlzcGxheSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzoxMDQ6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT05cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTEwNS0gICAgICAgYm9vbCBcJiMzNDtGcmFtZWJ1ZmZlciBDb25zb2xlIFJvdGF0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctMTEzLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6MTE0OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O0ZyYW1lYnVmZmVyIENvbnNvbGUgRGVmZXJyZWQgVGFrZW92ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBmcmFtZWJ1ZmZlciBvcHRpb25zIGhlcmUuIFllcCwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGRlZmluaXRlbHkgaW4gdGhlIG1peCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQsIG9mIGNvdXJzZSwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgaG9sZCBvbi4uLiBgRkJfU0lNUExFYC4uLiB0aGF0JiMzOTtzIGp1c3QgYSBkZWZpbml0aW9uLCBpc24mIzM5O3QgaXQ/IEl0JiMzOTtzIGNvbm5lY3RlZCB0byBgY29uZmlnIEZCX1NJTVBMRWAuIE9rYXksIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBGQl9TSU1QTEVgIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyB0aWVkIHRvLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gdGhpcyBlbnRpcmUgY29uZmlndXJhdGlvbiBwdXp6bGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgbGVhdmUgYW55IGNyaXRpY2FsIGNvbXBvbmVudHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJfU0lNUExFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2Mzpjb25maWcgRkJfU0lNUExFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc2NC1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBmcmFtZWJ1ZmZlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTMxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBhcmNoaXRlY3R1cmUuIEl0IGhpbmdlcyBvbiB3aGV0aGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGxpa2UgUFBDLCBBUk0sIFg4NiwgTUlQUywgU1BBUkMsIFJJU0NWLCBvciBhIGNvbXBpbGUgdGVzdCBzZXR1cDsgdGhhdCYjMzk7cyB0aGUgY29yZS4gVGhlbiwgYEZCX1ZJUlRVQUxgIGxvb2tzIGxpa2UgaXQmIzM5O2xsIGdldCBtZSB0aGUgYEZCX1NZU01FTV9IRUxQRVJTYCwgdGhhdCBtYWtlcyBzZW5zZS4gQnV0IHdoYXQgYWJvdXQgYEZCX0lPTUVNX0hFTFBFUlNgLCBob3cgZG8gSSBoYW5kbGUgdGhhdD8gSSBjYW4ganVzdCB0dXJuIG9uIGBGQl9WRVNBYCBvciBgRkJfRUZJYCBvciBgRkJfU0lNUExFYCwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVtLiBZZWFoLCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGJhc2UuCgpIb2xkIG9uLi4uIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgZm9jdXMgaXMgb24gdGhvc2UgY29yZSBvcGVyYXRpb25zLiBBbmQgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBub3cgYXJlIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuCgpIbW0sIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IGBzeXNfY29weWFyZWFgIGlzIGV4cG9ydGVkLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTChzeXNfY29weWFyZWEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgZGVsdmUgaW50byB0aGlzOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCkhtbSwgd2hlcmUgZG8gSSBldmVuIGJlZ2luIHdpdGggdGhpcz8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgYW5kIHRvIGRvIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgbGV0JiMzOTtzIGNoZWNrIGBzeXNjb3B5YXJlYS5jYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIGZpcnN0IHN0ZXAsIHJpZ2h0PyBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgbWVtb3J5IHRyYW5zZmVycy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGZpbGUgd2lsbCBsaWtlbHkgY29udGFpbiB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3Qgb3IgbWF5YmUgdGhlIGZ1bmN0aW9ucyBjYWxsaW5nIGl0LiBUaGlzIGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwgY29tbWVudGVkLiBJIGNhbiBnZXQgc29tZSBjb250ZXh0IHF1aWNrbHkgYW5kIHdvcmsgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jPTE5PXZvaWQgc3lzX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjUtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MjY6RVhQT1JUX1NZTUJPTChzeXNfY29weWFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDIyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgSW5jbHVkZSoqCgpPa2F5LCBpdCYjMzk7cyBleHBvcnRlZCEgSSBrbmV3IGl0IGhhZCB0byBiZSBzb21ldGhpbmcgc2ltcGxlLCBwcm9iYWJseSBhIGZydXN0cmF0aW5nIHR5cG8gb3IgYSByZWdleCBtaXN0YWtlIEkgb3Zlcmxvb2tlZCBlYXJsaWVyLiBUaW1lIHRvIG1vdmUgb24uCgpOb3csIGxldCYjMzk7cyBjYXN0IGEgd2lkZXIgbmV0LiBJIHNob3VsZCBodW50IGZvciBhbnkgb3RoZXIgcGxhY2VzIHRoZXNlIGhlYWRlcnMgYXJlIHB1bGxlZCBpbiwgc3BlY2lmaWNhbGx5IGBmYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0LmhgLCBvciBgZmJfaW1hZ2VibGl0LmhgLiBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IGBmYl9jb3B5YXJlYS5oYCBpcyBvbmx5IHVzZWQgaW4gYGNmYmNvcHlhcmVhLmNgIGFuZCBgc3lzY29weWFyZWEuY2AsIHNvIHRoYXQmIzM5O3MgY292ZXJlZC4gSG1tLCB3aGF0IGFib3V0IGBmYl9maWxscmVjdC5oYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9maWxscmVjdC5oXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfZmlsbHJlY3QuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTgtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2ZpbGxyZWN0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIGBmYl9pbWFnZWJsaXQuaGAqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGZyYW1lYnVmZmVyIGltYWdlIGJsaXR0aW5nIGhlYWRlciwgYGZiX2ltYWdlYmxpdC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHdlICpkb2luZyogd2l0aCB0aGlzPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSBwb3J0YWJpbGl0eSBpc3N1ZT8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBjb250ZXh0cyB3aGVyZSBJJiMzOTt2ZSBlbmNvdW50ZXJlZCB0aGlzIOKAkyBkaXJlY3QgZnJhbWVidWZmZXIgbWFuaXB1bGF0aW9uLCBncmFwaGljcyBsaWJyYXJ5IGludGVncmF0aW9uLCBkZXZpY2Utc3BlY2lmaWMgZHJpdmVyc+KApiB0aGUgbGlzdCBnb2VzIG9uLiBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byByZWFsbHkgZGlnIGluLiBJIGFzc3VtZSB3ZeKAmXJlIGV4cGxvcmluZyBvcHRpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGFsaWdubWVudCBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzLiBBcmUgd2UgY29uY2VybmVkIHdpdGggcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb25zPyBPciBhcmUgd2UgY29uc2lkZXJpbmcgd2F5cyB0byBzdHJlYW1saW5lIHRoZSBibGl0dGluZyBwcm9jZXNzIGl0c2VsZiwgcGVyaGFwcyB0YXJnZXRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmU/IEdvdHRhIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGFjdHVhbCBnb2FsIGJlZm9yZSBJIGNhbiBvZmZlciBhbnkgaW5zaWdodGZ1bCBjb21tZW50LiBXaGF0JiMzOTtzIHRoZSBhcHBsaWNhdGlvbiBoZXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfaW1hZ2VibGl0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMxMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZyYW1lYnVmZmVyIEJvdW5kcyBDaGVja2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgZm9jdXMgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIHRob3NlIHNpeCBmdW5jdGlvbnPigJQgYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGVtLgoKTGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUuIFRoZXkmIzM5O3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAsIHdoaWNoIGFyZSBjb3JlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucy4gSXQmIzM5O3MgYW4gaW5saW5lIHNpdHVhdGlvbiwgdXNlZCBieSB0aGUgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyBpbiBgY2ZiXypgIGFuZCBgc3lzXypgLiBUaGlzIGJvdW5kcyBjaGVja2luZyBzcGVjaWZpY2FsbHkgZ3VhcmRzIGFnYWluc3Qgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggbWl0aWdhdGVzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIG9wZXJhdGlvbnMsIGxpa2Ugc2Nyb2xsaW5nIGluIGBmYmNvbmAsIHVzZSBjb29yZGluYXRlcyB0aGF0IGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCB3aGljaCBpcyBhIGdyZWF0IHBsYWNlIHRvIHN0YXJ0IGZ1enppbmcsIGZvciBzdXJlLgoKVGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgRkJfVklSVFVBTGAgaXMgc3VmZmljaWVudCB0byB0cmlnZ2VyIHRoaXMuIENvbnNpZGVyaW5nIHRoYXQgYHZmYmAgdXNlcyBgc3lzX2ZpbGxyZWN0YCwgYHN5c19jb3B5YXJlYWAsIGFuZCBgc3lzX2ltYWdlYmxpdGAsIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEl0JiMzOTtzIHdvcnRoIGRvdWJsZS1jaGVja2luZyBgdmZiLmNgIGp1c3QgdG8gbWFrZSBzdXJlLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi92ZmIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTMxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQ2hlY2tpbmcgdGhlIEZyYW1lYnVmZmVyIE9wZXJhdGlvbnMqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTGV0JiMzOTtzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGB2ZmIuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGZiX29wc2AgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZHJpdmVyIGFuZCB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUuIEFyZSB3ZSB1c2luZyB0aGUgc3RhbmRhcmQgY2FsbHMsIG92ZXJyaWRpbmcgYW55LCBvciBkZWZpbmluZyBuZXcgb3BlcmF0aW9ucz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGJ1aWxkIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGJyb2FkZXIgc3lzdGVtIGludGVyYWN0aW9uLiBHb3R0YSBiZSByaWdvcm91cyBoZXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz03OD1zdGF0aWMgaW50IHZmYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMtODAtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jLTgyLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz00MjY9c3RhdGljIGludCB2ZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMtNDQzLVx0aW5mby1cdTAwM2VzY3JlZW5fYnVmZmVyID0gdmlkZW9tZW1vcnk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjQ0NDpcdGluZm8tXHUwMDNlZmJvcHMgPSBcdTAwMjZ2ZmJfb3BzO1xuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgYHZmYl9vcHNgIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIGl0LiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBgdmZiX29wc2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBjb250YWlucyB0aGUgY29yZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgZGF0YSBuZWVkZWQgdG8gbWFuYWdlIHRoZSB2aXJ0dWFsIGZyYW1lYnVmZmVyIGRldmljZS4gVGhlIG5hbWUgaXRzZWxmIGlzIHByZXR0eSB0ZWxsaW5nLiAmIzM0O09wZXJhdGlvbnMmIzM0OyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVycyDigJMgdGhlIGhvb2tzIHRoYXQgdGhlIHVwcGVyIGxheWVycyB3aWxsIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoaXMgcGFydGljdWxhciB2aXJ0dWFsIGZyYW1lYnVmZmVyLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleeKAmXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEnigJltIHRoaW5raW5nIGluaXRpYWxpemF0aW9uLCBmcmFtZWJ1ZmZlciBhY2Nlc3MgKHJlYWRpbmcgYW5kIHdyaXRpbmcgcGl4ZWxzKSwgcG9zc2libHkgc29tZSBjb250cm9sIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdGhlIHJlc29sdXRpb24sIHZpcnR1YWwgc2NyZWVuIHNpemVzIGFuZCBwZXJoYXBzIGV2ZW4gY29sb3IgZGVwdGhzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHR5cGVzIHBvaW50ZWQgdG8gYnkgdGhlIHN0cnVjdHVyZSBtZW1iZXJzLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyB2aXJ0dWFsIGZyYW1lYnVmZmVyJiMzOTtzIG92ZXJhbGwgZnVuY3Rpb24gYW5kIGludGVncmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXTigJlzIGluc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XG4gIDgyOlx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiAgODM6XHRcdF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX1JEV1IsXG4gIDg0Olx0XHQuZmJfY2hlY2tfdmFyXHQ9IHZmYl9jaGVja192YXIsXG4gIDg1Olx0XHQuZmJfc2V0X3Bhclx0PSB2ZmJfc2V0X3BhcixcbiAgODY6XHRcdC5mYl9zZXRjb2xyZWdcdD0gdmZiX3NldGNvbHJlZyxcbiAgODc6XHRcdC5mYl9wYW5fZGlzcGxheVx0PSB2ZmJfcGFuX2Rpc3BsYXksXG4gIDg4Olx0XHRfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19EUkFXLFxuICA4OTpcdFx0LmZiX21tYXBcdD0gdmZiX21tYXAsXG4gIDkwOlx0fTtcbiAgOTE6XHRcbiAgOTI6XHQgICAgLypcbiAgOTM6XHQgICAgICogIEludGVybmFsIHJvdXRpbmVzXG4gIDk0Olx0ICAgICAqL1xuICA5NTpcdFxuICA5NjpcdHN0YXRpYyB1X2xvbmcgZ2V0X2xpbmVfbGVuZ3RoKGludCB4cmVzX3ZpcnR1YWwsIGludCBicHApXG4gIDk3Olx0e1xuICA5ODpcdFx0dV9sb25nIGxlbmd0aDtcbiAgOTk6XHRcbiAxMDA6XHRcdGxlbmd0aCA9IHhyZXNfdmlydHVhbCAqIGJwcDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIEdyYXBoaWNzIE9wZXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgX19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBV2AgaW4gcGxheS4gVGhhdCYjMzk7cyBhIGZhbWlsaWFyIHBhdHRlcm4sIHVzdWFsbHkgcG9pbnRpbmcgdG93YXJkcyBhIGRlZmF1bHQgZHJhd2luZyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGZyYW1lYnVmZmVyIHN5c3RlbS4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBhcyB0aGUgdW5kZXJseWluZyBncmFwaGljcyBhcmNoaXRlY3R1cmUgbGlrZWx5IGhhcyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gaW1tZWRpYXRlbHkgZHJpbGwgZG93biBvbiB0aGF0IG1hY3JvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBleHBhbmRzIHRvLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWMgbWVtb3J5IG9wZXJhdGlvbnMgYW5kIGFsZ29yaXRobXMgaW52b2x2ZWQ/IEtub3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhpcyBtYWNybyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBob3cgdGhpcyBzeXN0ZW0gYWN0dWFsbHkgcmVuZGVycyBncmFwaGljcyBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoZXJlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBtaWdodCBsaWUuIFRoaXMgaXMgbGlrZWx5IHRoZSBlbnRyeSBwb2ludCB0byBvcHRpbWl6ZSBmb3IgYSBzcGVjaWZpYyBncmFwaGljcyB3b3JrbG9hZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZiLmg9NTc3PWV4dGVybiBzc2l6ZV90IGZiX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZiLmgtNTgzLVxuaW5jbHVkZS9saW51eC9mYi5oOjU4NDojZGVmaW5lIF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcgXFxcbmluY2x1ZGUvbGludXgvZmIuaC01ODUtXHQuZmJfZmlsbHJlY3RcdD0gc3lzX2ZpbGxyZWN0LCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMxNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgd291bGQgdGhpbmsgYWJvdXQgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uOgoKKipUaGlua2luZyBUaHJvdWdoIHRoZSBGcmFtZWJ1ZmZlciBPcGVyYXRpb25zKioKCkFoLCByaWdodC4gSSBzZWUgaXQgbm93LiBXaGVuIHdlJiMzOTtyZSBjb25zaWRlcmluZyB0aGUgZnJhbWVidWZmZXIgaW1wbGVtZW50YXRpb25zLCB0aGUgZXhwYW5zaW9uIHVuZm9sZHMgY2xlYXJseTogdGhlIGFic3RyYWN0IGZ1bmN0aW9uIGNhbGxzIHJlc29sdmUgdG8gYHN5c19maWxscmVjdGAsIGBzeXNfY29weWFyZWFgLCBhbmQgYHN5c19pbWFnZWJsaXRgLiBUaGlzIGNvbmZpcm1zIHRoZSBpbml0aWFsIGh1bmNoLiBgRkJfVklSVFVBTGAgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCBpbiB0aGlzIHNjZW5hcmlvIOKAkyBpdCBpcyBwZXJmZWN0bHkgc3VpdGVkIGZvciB0aGlzIHB1cnBvc2UgYW5kIEkgY2FuIHNlZSBpdHMgYWR2YW50YWdlcy4KClRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGBGQl9TSU1QTEVgPyBXZSBoYXZlIHRvIGV2YWx1YXRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zIGFuZCB0aGVpciByZXF1aXJlbWVudHMgYW5kIHdoZXRoZXIgd2UgbmVlZCB0aGUgbW9yZSBhZHZhbmNlZCBjYXBhYmlsaXRpZXMgb2YgYSB2aXJ0dWFsIGZyYW1lYnVmZmVyIG9yIGlmIGEgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpcyBzdWZmaWNpZW50LiBUaGlzIGlzIHRoZSBtb3JlIGNydWNpYWwgcG9pbnQgb2YgZXZhbHVhdGlvbiwgYXMgdGhlIHVzZSBvZiBvbmUgdnMgdGhlIG90aGVyIGhhcyBzaWduaWZpY2FudCBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19GQl9ERUZBVUxUX0lPTUVNX09QU19EUkFXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MDMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBmYl9vcHNgIGluIGBzaW1wbGVmYi5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoZSBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBzaW1wbGVmYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBmYl9vcHNgIHN0cnVjdHVyZS4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnJhbWVidWZmZXIgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUg4oCTIHRoaW5ncyBsaWtlIGBmYl9maWxscmVjdGAsIGBmYl9jb3B5YXJlYWAsIGBmYl9pbWFnZWJsaXRgIOKAkyB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9uIGZ1bmN0aW9ucy4gV2hhdCBjdXN0b21pemF0aW9ucyBvciBzcGVjaWFsIGhhbmRsaW5nIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHNpbXBsZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaW50cm9kdWNlPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgdmlydHVhbCBmcmFtZWJ1ZmZlciB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3Igbm90ZXdvcnRoeSBkZXRhaWxzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zPyBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgY29tbWVudHMgZXhwbGFpbmluZyB0aGUgZGVzaWduIGNob2ljZXMgaGVyZS4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB0byBzZWUgdGhlIGZ1bmN0aW9uYWwgYmFja2JvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM9OTY9c3RhdGljIHZvaWQgc2ltcGxlZmJfZGV0YWNoX2dlbnBkcyh2b2lkICpyZXMpO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy05OC0vKlxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jOjk5OiAqIGZiX29wcy5mYl9kZXN0cm95IGlzIGNhbGxlZCBieSB0aGUgbGFzdCBwdXRfZmJfaW5mbygpIGNhbGwgYXQgdGhlIGVuZFxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTEwMC0gKiBvZiB1bnJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3IgZmJfcmVsZWFzZSgpLiBEbyBhbnkgY2xlYW51cCBoZXJlLlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYz0xMDI9c3RhdGljIHZvaWQgc2ltcGxlZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTE4LVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jOjExOTpzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzaW1wbGVmYl9vcHMgPSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTIwLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jPTUzMj1zdGF0aWMgaW50IHNpbXBsZWZiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzo2MDE6XHRpbmZvLVx1MDAzZWZib3BzID0gXHUwMDI2c2ltcGxlZmJfb3BzO1xuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMi1cdGluZm8tXHUwMDNlc2NyZWVuX2Jhc2UgPSBpb3JlbWFwX3djKGluZm8tXHUwMDNlZml4LnNtZW1fc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjI1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYHNpbXBsZWZiX29wc2AqKgoKQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbWluZCBpcywgJiMzNDtMZXQmIzM5O3MgY3JhY2sgb3BlbiBgc2ltcGxlZmJfb3BzYC4mIzM0OyBObyBmbHVmZiwganVzdCBnZXR0aW5nIGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbW9kdWxlLCBpdHMgcHVycG9zZSwgYW5kIGl0cyBpbnRlcm5hbCBtZWNoYW5pc21zLiBUaGUgbmFtZSBzdWdnZXN0cyB0aGlzIG1pZ2h0IGJlIGEgcmVsYXRpdmVseSBiYXNpYyBvciBmb2N1c2VkIHNldCBvZiBvcGVyYXRpb25zIGludGVyYWN0aW5nIHdpdGggdGhlIGZyYW1lYnVmZmVyLCBwZXJoYXBzIGEgc3RyaXBwZWQtZG93biBpbXBsZW1lbnRhdGlvbiBvciBhIHV0aWxpdHkgbGF5ZXIuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0OiBjb2xvciBkZXB0aCBoYW5kbGluZywgYWRkcmVzc2luZyBtZW1vcnkgZGlyZWN0bHksIHNjcmVlbiBidWZmZXIgbWFuaXB1bGF0aW9uLCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nIG1lY2hhbmlzbXMuLi4gYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyB3aGVuIHdvcmtpbmcgYXQgdGhpcyBsZXZlbC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gcmVmbGVjdHMgbXkgaW5pdGlhbCBleHBlY3RhdGlvbnMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExOTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHNpbXBsZWZiX29wcyA9IHtcbiAxMjA6XHRcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIDEyMTpcdFx0RkJfREVGQVVMVF9JT01FTV9PUFMsXG4gMTIyOlx0XHQuZmJfZGVzdHJveVx0PSBzaW1wbGVmYl9kZXN0cm95LFxuIDEyMzpcdFx0LmZiX3NldGNvbHJlZ1x0PSBzaW1wbGVmYl9zZXRjb2xyZWcsXG4gMTI0Olx0fTtcbiAxMjU6XHRcbiAxMjY6XHRzdGF0aWMgc3RydWN0IHNpbXBsZWZiX2Zvcm1hdCBzaW1wbGVmYl9mb3JtYXRzW10gPSBTSU1QTEVGQl9GT1JNQVRTO1xuIDEyNzpcdFxuIDEyODpcdHN0cnVjdCBzaW1wbGVmYl9wYXJhbXMge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYxNwoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJhbWVidWZmZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93biBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnJhbWVidWZmZXItcmVsYXRlZCBwYXRjaCBoZXJlLiAgYEZCX0RFRkFVTFRfSU9NRU1fT1BTYCBpcyBrZXksIGFuZCBpdCBleHBhbmRzIHRvIHRoZSByZWFkL3dyaXRlIGFuZCBkcmF3IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB1c2luZyBgY2ZiX2ZpbGxyZWN0YCwgYGNmYl9jb3B5YXJlYWAsIGFuZCBgY2ZiX2ltYWdlYmxpdGAuICBUaGF0JiMzOTtzIGFsbCBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBzdHVmZiwgYW5kLCBnaXZlbiB0aGF0LCBgRkJfU0lNUExFYCBzaG91bGQgYWJzb2x1dGVseSBiZSByZWxldmFudCwgdG9vLgoKU28sIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCBhbmFseXNpcyBmb3IgZnV6emluZyBwdXJwb3NlczoKCiogICAqKldvcnRoRnV6emluZzogVFJVRSoqLiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlLgoqICAgKipFbmFibGVkIENvbmZpZ3VyYXRpb25zOioqIGBGQmAsIGBGQl9WSVJUVUFMYCwgYEZCX1NJTVBMRWAsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAuIFRoZXNlIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBsaWtlbHkgZXhwb3NlIHRoZSB2dWxuZXJhYmxlIGNvZGUgcGF0aHMuCiogICAqKkZvY3VzZWQgU3ltYm9sczoqKiBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGBjZmJfZmlsbHJlY3RgLCBgc3lzX2ZpbGxyZWN0YCwgYGNmYl9pbWFnZWJsaXRgLCBhbmQgYHN5c19pbWFnZWJsaXRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcGF0Y2gsIHByZXN1bWFibHkgdGhlIG9uZXMgcmVzcG9uc2libGUgZm9yIHRoZSBib3VuZHMgY2hlY2tzLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGFib3V0IGJvdW5kcyBjaGVja2luZyBpbiBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGdvIHBhc3QgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbiBsaW1pdHMuIFRob3NlIGBjZmJfKmAgYW5kIGBzeXNfKmAgZnVuY3Rpb25zIGFyZSwgY3JpdGljYWxseSwgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcy4gVGhleSYjMzk7cmUgd2hhdCBnZXQgdXNlZCB3aGVuIG1vcmUgb3B0aW1pemVkIGhhcmR3YXJlLWFjY2VsZXJhdGVkIHBhdGhzIGFyZW4mIzM5O3QgYXZhaWxhYmxlLCBhbmQgdGhhdCBpbmNsdWRlcyB0aG9zZSByZWFjaGFibGUgdGhyb3VnaCBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXR5LiBJdCBpcyBjb3JyZWN0aW5nIGFuIG9idmlvdXMgc2VjdXJpdHkgcmlzay4gV2UgbmVlZCB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgdGhlIGZpeCBpcyBjb21wbGV0ZSBhbmQgcm9idXN0LiBUaGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJIHdpbGwgbm90ZSB0byBiZSBzdXJlIHRvIGZvY3VzIG9uIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3RscyB3aGVuIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGQiYjMzQ7LAogICAgJiMzNDtGQl9WSVJUVUFMJiMzNDssCiAgICAmIzM0O0ZCX1NJTVBMRSYjMzQ7LAogICAgJiMzNDtGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZiX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O3N5c19jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAgICYjMzQ7c3lzX2ltYWdlYmxpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucyAoZmJfY29weWFyZWEsIGZiX2ZpbGxyZWN0LCBmYl9pbWFnZWJsaXQpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiByZW5kZXJpbmcgY29vcmRpbmF0ZXMgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIChjZmJfKiBhbmQgc3lzXyopLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkImIzM0OywKICAgICYjMzQ7RkJfVklSVFVBTCYjMzQ7LAogICAgJiMzNDtGQl9TSU1QTEUmIzM0OywKICAgICYjMzQ7RlJBTUVCVUZGRVJfQ09OU09MRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmYl9jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtzeXNfY29weWFyZWEmIzM0OywKICAgICYjMzQ7Y2ZiX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O3N5c19maWxscmVjdCYjMzQ7LAogICAgJiMzNDtjZmJfaW1hZ2VibGl0JiMzNDssCiAgICAmIzM0O3N5c19pbWFnZWJsaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMgKGZiX2NvcHlhcmVhLCBmYl9maWxscmVjdCwgZmJfaW1hZ2VibGl0KSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyAoY2ZiXyogYW5kIHN5c18qKSwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgZnJhbWVidWZmZXIgY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1NS45NDE0NjY3NjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY4NTA2OTQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1NS45NDE0NzI1MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDQwNzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzODllZDQyMzcxMjcxODEwNTlmYmY2ZTk3NzMxOTg2Mjk3ZTRjYjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTA6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXFxuQEAgLTM4Niw2ICszODYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWFcXG4gXFx0c3RydWN0IGZiX2FkZHJlc3Mgc3JjID0gZHN0O1xcbiBcXHRib29sIHJldl9jb3B5ID0gKGR5IFxcdTAwM2Ugc3kpIHx8IChkeSA9PSBzeSBcXHUwMDI2XFx1MDAyNiBhcmVhLVxcdTAwM2VkeCBcXHUwMDNlIGFyZWEtXFx1MDAzZXN4KTtcXG4gXFxuK1xcdGlmIChhcmVhLVxcdTAwM2VkeCBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VkeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VzeCBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VzeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2V3aWR0aCBcXHUwMDNlIHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVxcdTAwM2VkeCB8fFxcbitcXHQgICAgYXJlYS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXFx1MDAzZWR5IHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2V3aWR0aCBcXHUwMDNlIHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVxcdTAwM2VzeCB8fFxcbitcXHQgICAgYXJlYS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXFx1MDAzZXN5KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAocmV2X2NvcHkpIHtcXG4gXFx0XFx0ZHkgKz0gaGVpZ2h0IC0gMTtcXG4gXFx0XFx0c3kgKz0gaGVpZ2h0IC0gMTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxcbmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXFxuQEAgLTI2MSw2ICsyNjEsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3RcXG4gXFx0c3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApO1xcbiBcXHRzdHJ1Y3QgZmJfcGF0dGVybiBwYXR0ZXJuO1xcbiBcXG4rXFx0aWYgKHJlY3QtXFx1MDAzZWR4IFxcdTAwM2U9IHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIHJlY3QtXFx1MDAzZWR5IFxcdTAwM2U9IHAtXFx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIHJlY3QtXFx1MDAzZXdpZHRoIFxcdTAwM2UgcC1cXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtXFx1MDAzZWR4IHx8XFxuK1xcdCAgICByZWN0LVxcdTAwM2VoZWlnaHQgXFx1MDAzZSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIC0gcmVjdC1cXHUwMDNlZHkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGZiX2FkZHJlc3NfZm9yd2FyZChcXHUwMDI2ZHN0LCByZWN0LVxcdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyByZWN0LVxcdTAwM2VkeCAqIGJwcCk7XFxuIFxcbiBcXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXFx1MDAzZWNvbG9yXSA6IHJlY3QtXFx1MDAzZWNvbG9yKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXFxuaW5kZXggM2IyYmI0OTQ2NTA1Y2UuLjVlYzE3ZDdiOTkzMzlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxcbkBAIC00ODYsNiArNDg2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXFxuIFxcdHN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7XFxuIFxcdGNvbnN0IHUzMiAqcGFsZXR0ZSA9IGZiX3BhbGV0dGUocCk7XFxuIFxcbitcXHRpZiAoaW1hZ2UtXFx1MDAzZWR4IFxcdTAwM2U9IHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIGltYWdlLVxcdTAwM2VkeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBpbWFnZS1cXHUwMDNld2lkdGggXFx1MDAzZSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtXFx1MDAzZWR4IHx8XFxuK1xcdCAgICBpbWFnZS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLVxcdTAwM2VkeSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0ZmJfYWRkcmVzc19mb3J3YXJkKFxcdTAwMjZkc3QsIGltYWdlLVxcdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyBpbWFnZS1cXHUwMDNlZHggKiBicHApO1xcbiBcXG4gXFx0aWYgKGltYWdlLVxcdTAwM2VkZXB0aCA9PSAxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1Ni41MjI0ODA4NzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTYyNjk2NjY4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMzODllZDQyMzcxMjcxODEwNTlmYmY2ZTk3NzMxOTg2Mjk3ZTRjYjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MDo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmhcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXG4rKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxuQEAgLTM4Niw2ICszODYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWFcbiBcdHN0cnVjdCBmYl9hZGRyZXNzIHNyYyA9IGRzdDtcbiBcdGJvb2wgcmV2X2NvcHkgPSAoZHkgXHUwMDNlIHN5KSB8fCAoZHkgPT0gc3kgXHUwMDI2XHUwMDI2IGFyZWEtXHUwMDNlZHggXHUwMDNlIGFyZWEtXHUwMDNlc3gpO1xuIFxuK1x0aWYgKGFyZWEtXHUwMDNlZHggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBhcmVhLVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4rXHQgICAgYXJlYS1cdTAwM2VzeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuK1x0ICAgIGFyZWEtXHUwMDNlc3kgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR4IHx8XG4rXHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlZHkgfHxcbitcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZXN4IHx8XG4rXHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3kpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChyZXZfY29weSkge1xuIFx0XHRkeSArPSBoZWlnaHQgLSAxO1xuIFx0XHRzeSArPSBoZWlnaHQgLSAxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhcbmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXG4rKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxuQEAgLTI2MSw2ICsyNjEsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3RcbiBcdHN0cnVjdCBmYl9hZGRyZXNzIGRzdCA9IGZiX2FkZHJlc3NfaW5pdChwKTtcbiBcdHN0cnVjdCBmYl9wYXR0ZXJuIHBhdHRlcm47XG4gXG4rXHRpZiAocmVjdC1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuK1x0ICAgIHJlY3QtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICByZWN0LVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSByZWN0LVx1MDAzZWR4IHx8XG4rXHQgICAgcmVjdC1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHkpXG4rXHRcdHJldHVybjtcbitcbiBcdGZiX2FkZHJlc3NfZm9yd2FyZChcdTAwMjZkc3QsIHJlY3QtXHUwMDNlZHkgKiBiaXRzX3Blcl9saW5lICsgcmVjdC1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXHUwMDNlY29sb3JdIDogcmVjdC1cdTAwM2Vjb2xvcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXG5pbmRleCAzYjJiYjQ5NDY1MDVjZS4uNWVjMTdkN2I5OTMzOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmhcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxuQEAgLTQ4Niw2ICs0ODYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSlcbiBcdHN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7XG4gXHRjb25zdCB1MzIgKnBhbGV0dGUgPSBmYl9wYWxldHRlKHApO1xuIFxuK1x0aWYgKGltYWdlLVx1MDAzZWR4IFx1MDAzZT0gcC1cdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XG4rXHQgICAgaW1hZ2UtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBpbWFnZS1cdTAwM2V3aWR0aCBcdTAwM2UgcC1cdTAwM2V2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtXHUwMDNlZHggfHxcbitcdCAgICBpbWFnZS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLVx1MDAzZWR5KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmYl9hZGRyZXNzX2ZvcndhcmQoXHUwMDI2ZHN0LCBpbWFnZS1cdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyBpbWFnZS1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRpZiAoaW1hZ2UtXHUwMDNlZGVwdGggPT0gMSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUwOjU2LjUyMjQ4MjMxMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDYwMDkzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGcmFtZWJ1ZmZlciBEcmF3aW5nIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgIGluIHRob3NlIGNvcmUgZnJhbWVidWZmZXIgaGVhZGVycywgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYC4gVGhvc2UgYXJlIGlubGluZSBmdW5jdGlvbnMsIHNvIHRoZXkncmUgcHJvYmFibHkgdXNlZCBhY3Jvc3MgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBtZWFucyBhIGNoYW5nZSBoZXJlIGhhcyBhIHBvdGVudGlhbGx5IGJyb2FkIGltcGFjdC4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBib3VuZHMgY2hlY2tpbmcuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgZHJhd2luZyByb3V0aW5lcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGhvdyB3aWRlbHkgdGhlc2UgYXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgaW1wYWN0IGFuZCBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MDAuMzY4NDk0MzQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTYzOTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9Mzc9Y29uZmlnIEZCX0NGQl9DT1BZQVJFQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXFx0aGVscFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjQxOlxcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy00Mi1cXHQgIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd24gKGFjY2VsZXJhdGVkKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYz00NT1zdGF0aWMgdm9pZCBiaXRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy00Ny17XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo0ODpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTQ5LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy01Ni1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jOjU3OlxcdGluZm8tXFx1MDAzZWZib3BzLVxcdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcXHUwMDI2YXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy01OC19XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTk6dm9pZCBjZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yOS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmg9MzQ4PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBmYl9jb3B5KHN0cnVjdCBmYl9hZGRyZXNzICpkc3QsIHN0cnVjdCBmYl9hZGRyZXNzICpzcmMsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaC0zNzUtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmg6Mzc2OnN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3Ny17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaD0xMjQ9c3RhdGljIGlubGluZSBpbnQgbW9ub19jb2woY29uc3Qgc3RydWN0IGZiX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzItICogKyByZWFkIHdoYXQncyBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBzY3JlZW4gYW5kXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg6MTczOiAqICAgICB3cml0ZSBpdCBpbiBhIGRpZmZlcmVudCBwbGFjZSAodGhpcyBpcyBjZmJfY29weWFyZWEoKSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzQtICogKyByZS1yZW5kZXIgdGhlIHRleHQgdG8gdGhlIHNjcmVlblxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jPTY0PXN0YXRpYyB2b2lkIGNjd19ibW92ZShzdHJ1Y3QgdmNfZGF0YSAqdmMsIHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgc3ksXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjctXFx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cXHUwMDNlZmJjb25fcGFyO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYzo2ODpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjktXFx0dTMyIHZ5cmVzID0gR0VUVllSRVMocGFyLVxcdTAwM2VwLCBpbmZvKTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy03Ny1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmM6Nzg6XFx0aW5mby1cXHUwMDNlZmJvcHMtXFx1MDAzZWZiX2NvcHlhcmVhKGluZm8sIFxcdTAwMjZhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNzktfVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmM9NDk9c3RhdGljIHZvaWQgY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNTItXFx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cXHUwMDNlZmJjb25fcGFyO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jOjUzOlxcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTU0LVxcdHUzMiB2eHJlcyA9IEdFVFZYUkVTKHBhci1cXHUwMDNlcCwgaW5mbyk7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYy02Mi1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo2MzpcXHRpbmZvLVxcdTAwM2VmYm9wcy1cXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXFx1MDAyNmFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTY0LX1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jPTQ4PXN0YXRpYyB2b2lkIHVkX2Jtb3ZlKHN0cnVjdCB2Y19kYXRhICp2Yywgc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBzeSxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jLTUxLVxcdHN0cnVjdCBmYmNvbl9wYXIgKnBhciA9IGluZm8tXFx1MDAzZWZiY29uX3BhcjtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo1MjpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy01My1cXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXFx1MDAzZXAsIGluZm8pO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNjItXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmM6NjM6XFx0aW5mby1cXHUwMDNlZmJvcHMtXFx1MDAzZWZiX2NvcHlhcmVhKGluZm8sIFxcdTAwMjZhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy02NC19XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTk6dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMy1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYzoyNDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjAwLjQ2MzY2MzI1NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDE2MTczNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgaW5saW5lIGZ1bmN0aW9ucyBpbiB0aGUgaGVhZGVycywgd2hpY2ggYXJlIHRoZW4gdXNlZCBieSBmdW5jdGlvbnMgbGlrZSBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGFuZCBzbyBvbi4gVGhlc2UgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQuIFRoZSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggYGlvY3RsKGZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAuLi4pYCBiZWNhdXNlIHRoYXQgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIHdoaWNoIHNldHMgdXAgYSBwb3NzaWJsZSB3YXkgdG8gaW5mbHVlbmNlIHJlbmRlcmluZy4gVGhlbiB0aGVyZSBpcyBgaW9jdGwoZmQsIEZCSU9QQU5fRElTUExBWSwgLi4uKWAgd2hpY2ggcmVsaWVzIG9uIHRoZSBgaW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKWAgYW5kIG90aGVyIG1ldGhvZHMgb2Ygd3JpdGluZyB0byB0aGUgZnJhbWVidWZmZXIuXG5cbkhhbmcgb27igKYgZG9lcyBgRkJJT1BBTl9ESVNQTEFZYCAqZGlyZWN0bHkqIGNhbGwgYGZiX2NvcHlhcmVhYD8gTm8sIG5vLCBpdCBkb2Vzbid0LiBCdXQgYGZiY29uYCwgdGhlIGNvbnNvbGUgZHJpdmVyLCBkZWZpbml0ZWx5ICpkb2VzKiBjYWxsIGl0LCBwYXJ0aWN1bGFybHkgZHVyaW5nIHNjcm9sbGluZyBhbmQgdGV4dCBtb3ZlbWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AgaW9jdGwgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIHZpcnR1YWwgc2NyZWVuIHNpemUsIHNvIHRoYXQncyBhbm90aGVyIHRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuSXMgdGhlcmUgYW55ICpvdGhlciogaW9jdGwgdGhhdCBtaWdodCBkaXJlY3RseSB1c2UgYGZiX2NvcHlhcmVhYD8gTm8sIGl0IGxvb2tzIGxpa2UgYGZiY29uYCBpcyB0aGUgcHJpbWFyeSBkaXJlY3QgY29uc3VtZXIsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLiBBbHJpZ2h0LCBzbyBgZmJjb25gIGlzIGEgY29uc29sZSBkcml2ZXIsIHRoYXQncyBjcnVjaWFsLiBTaW5jZSBpdCdzIGEgY29uc29sZSBkcml2ZXIsIHRoYXQgbWVhbnMgaXQncyBiZWVuIGZ1enplZCBieSBzeXprYWxsZXIsIHdoaWNoIHNob3VsZCBnaXZlIHVzIHNvbWUgZ29vZCB0ZXN0IGNhc2VzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5GaW5hbGx5LCBjb3VsZCB0aGVzZSBmdW5jdGlvbnMgYWxzbyBiZSBjYWxsZWQgdGhyb3VnaCBvdGhlciBgZmJtZW1gIGlvY3Rscz8gUHJvYmFibHksIHNvIG5lZWQgdG8gbG9vayBhdCBgZmJtZW0uY2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmVzdGluZyBkYXRhIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjA5Ljc2NTI4MjcxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYwNjI4NjEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTowOS45MjEzNTc0NDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc3NDEzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRnJhbWVidWZmZXIgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoZXNlIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMgYXJlIHdvcmtpbmcgdW5kZXIgdGhlIGhvb2QuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byB6ZXJvIGluIG9uIGBmYl9maWxscmVjdGAgYW5kIGBmYl9pbWFnZWJsaXRgIHdpdGhpbiBgZmJtZW0uY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb3JlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIGJhc2ljIHRhc2tzIG9mIGZpbGxpbmcgcmVjdGFuZ2xlcyBhbmQgYmxpdHRpbmcgaW1hZ2VzIHRvIHRoZSBmcmFtZWJ1ZmZlci4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBhbGdvcml0aG1zIHVzZWQgZm9yIHBpeGVsIG1hbmlwdWxhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgcXVpdGUgZnJhbmtseSwgZGVidWdnaW5nIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFkZHJlc3MgbGF0ZXIuIFRoaXMgaXMgZm91bmRhdGlvbmFsIHN0dWZmOyB1bmRlcnN0YW5kaW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjEyLjY5ODc3MzU0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEwMzQwODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2ZpbGxyZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MToxMi44Mjk4MTM0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQxNTQ0NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgQ29weSBBcmVhIEZ1bmN0aW9uIENhbGxlcnMqKlxuXG5IbW0sIHNvIGBmYl9jb3B5YXJlYWAgY2FsbHMgYGNmYl9jb3B5YXJlYWAsIGFuZCBhbHNvIGBzeXNfY29weWFyZWFgLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhbmQgd2hlcmUgYGNmYl9jb3B5YXJlYWAgaXMgKmFjdHVhbGx5KiB1c2VkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaGVyZS4gTGV0J3Mgc2VlIHdoZXJlIHRoYXQgYGNmYl9jb3B5YXJlYWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCBzaG91bGQgcmV2ZWFsIGEgbG90LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gY2FsbC4gUmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MTYuMTcxMzYwODE2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NjM4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYz05MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXJrZmJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hcmtmYi5jLTk0MS1cXHQuZmJfZmlsbHJlY3RcXHQ9IGFya2ZiX2ZpbGxyZWN0LFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYzo5NDI6XFx0LmZiX2NvcHlhcmVhXFx0PSBjZmJfY29weWFyZWEsXFxuZHJpdmVycy92aWRlby9mYmRldi9hcmtmYi5jLTk0My1cXHQuZmJfaW1hZ2VibGl0XFx0PSBhcmtmYl9pbWFnZWJsaXQsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM9MjQ1OD1zdGF0aWMgdm9pZCBhdGFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hdGFmYi5jLTI0NjYtXFx0aWYgKGluZm8tXFx1MDAzZXZhci5iaXRzX3Blcl9waXhlbCA9PSAxNikge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXRhZmIuYzoyNDY3OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmMtMjQ2OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYz0xOTk9dm9pZCBhdHlmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvbWFjaDY0X2FjY2VsLmMtMjA5LVxcdGlmICghcGFyLVxcdTAwM2VhY2NlbF9mbGFncykge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jOjIxMDpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvbWFjaDY0X2FjY2VsLmMtMjExLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jPTEzNT12b2lkIHJhZGVvbmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYy0xNDktXFx0aWYgKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYzoxNTA6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jLTE1MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmM9MTc3MD1zdGF0aWMgdm9pZCBjaXJydXNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgwLVxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9jaXJydXNmYi5jOjE3ODE6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTM3PWNvbmZpZyBGQl9DRkJfQ09QWUFSRUFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQwLVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcXHQgIEluY2x1ZGUgdGhlIGNmYl9jb3B5YXJlYSBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSBhcmVhIGNvcHlpbmcuXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDItXFx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbid0IHByb3ZpZGUgdGhlaXIgb3duIChhY2NlbGVyYXRlZClcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE5OnZvaWQgY2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzEtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMy1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oPTEyND1zdGF0aWMgaW5saW5lIGludCBtb25vX2NvbChjb25zdCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3Mi0gKiArIHJlYWQgd2hhdCdzIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIHNjcmVlbiBhbmRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaDoxNzM6ICogICAgIHdyaXRlIGl0IGluIGEgZGlmZmVyZW50IHBsYWNlICh0aGlzIGlzIGNmYl9jb3B5YXJlYSgpKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3NC0gKiArIHJlLXJlbmRlciB0aGUgdGV4dCB0byB0aGUgc2NyZWVuXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM9MTg3PWN5YmVyMjAwMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbilcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTMtXFx0aWYgKCEoY2ZiLVxcdTAwM2VmYi52YXIuYWNjZWxfZmxhZ3MgXFx1MDAyNiBGQl9BQ0NFTEZfVEVYVCkpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM6MTk0OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCByZWdpb24pO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9mZmIuYz01Mjg9c3RhdGljIHZvaWQgZmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNS1cXHQgICAgYXJlYS1cXHUwMDNlZHkgPT0gYXJlYS1cXHUwMDNlc3kpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jOjUzNjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9mZmIuYy01MzctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9pODEwL2k4MTBfYWNjZWwuYz0zMjY9dm9pZCBpODEwZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKSBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmMtMzMyLVxcdCAgICBwYXItXFx1MDAzZWRlcHRoID09IDQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k4MTAvaTgxMF9hY2NlbC5jOjMzMzpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k4MTAvaTgxMF9hY2NlbC5jLTMzNC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTExMz12b2lkIG1hdHJveF9jZmJYX2luaXQoc3RydWN0IG1hdHJveF9mYl9pbmZvICptaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMTIzLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmM6MTI0OlxcdG1pbmZvLVxcdTAwM2VmYm9wcy5mYl9jb3B5YXJlYSA9IGNmYl9jb3B5YXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTEyNS1cXHRtaW5mby1cXHUwMDNlZmJvcHMuZmJfZmlsbHJlY3QgPSBjZmJfZmlsbHJlY3Q7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTI5ND1zdGF0aWMgdm9pZCBtYXRyb3hmYl9jZmI0X2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvKiBpbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEqIGFyZWEpIHtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMjk3LVxcdGlmICgoYXJlYS1cXHUwMDNlc3ggfCBhcmVhLVxcdTAwM2VkeCB8IGFyZWEtXFx1MDAzZXdpZHRoKSBcXHUwMDI2IDEpXFxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYzoyOTg6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMjk5LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWI4NjJ4eC9tYjg2Mnh4ZmJfYWNjZWwuYz0zMDI9dm9pZCBtYjg2Mnh4ZmJfaW5pdF9hY2NlbChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGZiX29wcyAqZmJvcHMsIGludCB4cmVzKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwNy1cXHRcXHRmYm9wcy1cXHUwMDNlZmJfZmlsbHJlY3QgPSBjZmJfZmlsbHJlY3Q7XFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jOjMwODpcXHRcXHRmYm9wcy1cXHUwMDNlZmJfY29weWFyZWEgPSBjZmJfY29weWFyZWE7XFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwOS1cXHRcXHRmYm9wcy1cXHUwMDNlZmJfaW1hZ2VibGl0ID0gY2ZiX2ltYWdlYmxpdDtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYz0xNTA5PW5lb2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMtMTUxOC1cXHRcXHRkZWZhdWx0OlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYzoxNTE5OlxcdFxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMtMTUyMC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252X2FjY2VsLmM9Mjk4PXZvaWQgbnZpZGlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDUtXFx0aWYgKHBhci1cXHUwMDNlbG9ja3VwKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYzozMDY6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIHJlZ2lvbik7XFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZpZGlhLmM9NjEyPXN0YXRpYyBpbnQgbnZpZGlhZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3NS1cXHRcXHRudmlkaWFfZmJfb3BzLmZiX2ZpbGxyZWN0ID0gY2ZiX2ZpbGxyZWN0O1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jOjY3NjpcXHRcXHRudmlkaWFfZmJfb3BzLmZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3Ny1cXHRcXHRudmlkaWFfZmJfb3BzLmZiX3N5bmMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9wbTJmYi5jPTExMTA9c3RhdGljIHZvaWQgcG0yZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTExOS1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0yZmIuYzoxMTIwOlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTEyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmM9NDQwPXN0YXRpYyB2b2lkIHBtM2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9wbTNmYi5jLTQ1MC1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0zZmIuYzo0NTE6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0zZmIuYy00NTItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM9MTM5Nz1zdGF0aWMgdm9pZCByaXZhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmMtMTQwMS1cXHRpZiAoKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQpKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM6MTQwMjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYy0xNDAzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jPTExMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNmYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYy0xMTI2LVxcdC5mYl9maWxscmVjdFxcdD0gczNmYl9maWxscmVjdCxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYzoxMTI3OlxcdC5mYl9jb3B5YXJlYVxcdD0gY2ZiX2NvcHlhcmVhLFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jLTExMjgtXFx0LmZiX2ltYWdlYmxpdFxcdD0gczNmYl9pbWFnZWJsaXQsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NidXNsaWIuaD0yOT1pbnQgc2J1c2ZiX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQxLVxcdC5mYl9maWxscmVjdFxcdD0gY2ZiX2ZpbGxyZWN0LCBcXFxcXFxuZHJpdmVycy92aWRlby9mYmRldi9zYnVzbGliLmg6NDI6XFx0LmZiX2NvcHlhcmVhXFx0PSBjZmJfY29weWFyZWEsIFxcXFxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NidXNsaWIuaC00My1cXHQuZmJfaW1hZ2VibGl0XFx0PSBjZmJfaW1hZ2VibGl0XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYz0zNTY9dm9pZCBmYmNvbl9zaXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2lzL3Npc19hY2NlbC5jLTM2OC1cXHRpZigoIWl2aWRlby1cXHUwMDNlYWNjZWwpIHx8ICghaXZpZGVvLVxcdTAwM2VlbmdpbmVvaykpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYzozNjk6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2lzL3Npc19hY2NlbC5jLTM3MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jPTE3Nz1zdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmMtMTgyLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlcC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTgzOlxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4NC1cXHRpbmZvLVxcdTAwM2VzY3JlZW5fYmFzZSArPSBlcC1cXHUwMDNlZmI4X2J1Zl9kaWZmO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTg1OlxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4Ni1cXHRpbmZvLVxcdTAwM2VzY3JlZW5fYmFzZSAtPSBlcC1cXHUwMDNlZmI4X2J1Zl9kaWZmO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jPTExNTc9Y29weWFyZWFfOGJwcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIGR4LCB1MzIgZHksIHUzMiBzeCwgdTMyIHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTExNzAtXFx0aWYgKChkeCB8IHN4IHwgd2lkdGgpIFxcdTAwMjYgNykge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYzoxMTcxOlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmMtMTE3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM9MTI2Nj10Z2FmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTEzMDgtXFx0ZWxzZSBpZiAoYnBwID09IDMyKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYzoxMzA5OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmMtMTMxMC1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmM9NjY4PXN0YXRpYyB2b2lkIHRyaWRlbnRmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmMtNjczLVxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIuYzo2NzQ6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGNhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYz0xMDI3PXN0YXRpYyB2b2lkIHZnYTE2ZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jLTExMTMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYzoxMTE0OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYy0xMTE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYz02OTk9c3RhdGljIHZvaWQgdmlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcwNS1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCB8fCAhc2hhcmVkLVxcdTAwM2Vod19iaXRibHQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jOjcwNjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MTgtXFx0XFx0YXJlYS1cXHUwMDNlc3gsIGFyZWEtXFx1MDAzZXN5LCAwLCAwLCAwKSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jOjcxOTpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MjAtfVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Z0ODYyM2ZiLmMtNjYwLVxcdC5mYl9maWxscmVjdFxcdD0gdnQ4NjIzZmJfZmlsbHJlY3QsXFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jOjY2MTpcXHQuZmJfY29weWFyZWFcXHQ9IGNmYl9jb3B5YXJlYSxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Z0ODYyM2ZiLmMtNjYyLVxcdC5mYl9pbWFnZWJsaXRcXHQ9IHZ0ODYyM2ZiX2ltYWdlYmxpdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MTYuMzI2MjI5NjI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjk4OTk3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGNmYl9jb3B5YXJlYWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgY2ZiX2NvcHlhcmVhYC4uLiB0aGF0J3MgYSBmdW5jdGlvbiB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGZyYW1lYnVmZmVyIGRyaXZlcnMsIGlzbid0IGl0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBhc2sgaWYgdGhlcmUncyBhbiBpb2N0bCBvdXQgdGhlcmUgdGhhdCdzIGRpcmVjdGx5IGNhbGxpbmcgYGZiX2NvcHlhcmVhYCBidXQsIGhhbmcgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24ndCBzZWVtIHJpZ2h0LiBOZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIEJlc3QgdG8gY29uZmlybSB0aGF0IGluIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uY2AuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudCBzdHVmZiBzaG91bGQgYmUsIGFuZCB3aGVyZSBgZmJfY29weWFyZWFgIGxpa2VseSByZXNpZGVzLiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MToyMC40OTYxMzI0NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjAxNTYyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJfY29weWFyZWFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjIwLjkyMjE1NDcxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDAyMTU4MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBmYl9jb3B5YXJlYWAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBEaWRuJ3QgSSBhbHJlYWR5IGNvbmZpcm0gc29tZXRoaW5nIGFib3V0IHRoaXM/IFJpZ2h0LCBJIGtub3cgaG93IGBmYl9jb3B5YXJlYWAgaXMgYWNjZXNzZWQuIExldCdzIHNlZS4uLiBob3cgZXhhY3RseSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZCBmcm9tIHVzZXJzcGFjZSBhZ2Fpbj8gSSdtIHByZXR0eSBzdXJlIGl0J3MgdGhyb3VnaCBgZmJjb25gLCB0aGUgY29uc29sZSBkcml2ZXIuIFJpZ2h0LCBpdCdzIHVzZWQgd2l0aGluIGBmYmNvbmAgZm9yIHRhc2tzIGxpa2Ugc2Nyb2xsaW5nIG9yIG1vdmluZyB0ZXh0IG9uIHRoZSBkaXNwbGF5LlxuXG5Pa2F5LCBpcyBpdCByZWFjaGVkIHZpYSBgZmJfaW9jdGxgIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmYl93cml0ZWA/IE5vcGUuIGBmYl9tbWFwYD8gTmFoLCBkb2Vzbid0IHNlZW0gbGlrZWx5LiBCdXQsIGhhbmcgb24uLi4gZGlkbid0IEkgcmVtZW1iZXIgYGZiX2NvcHlhcmVhYCBnZXR0aW5nIHVzZWQgd2hlbiBgZmJjb25gIGhhbmRsZXMgc2Nyb2xsaW5nIG9yIHRleHQgbW92ZW1lbnQ/IEFoYSwgeWVzIVxuXG5Ob3csIGhvdyBkb2VzIHN5emthbGxlciBnZXQgaW52b2x2ZWQgaW4gZnV6emluZyB0aGlzIHRoaW5nPyBJdCBoaXRzIGBmYmNvbmAgdXNpbmcgZWl0aGVyIGBpb2N0bChmZCwgVlRfUkVTSVpFLCAuLi4pYCBvciBieSBjcmFmdGluZyBlc2NhcGUgc2VxdWVuY2VzIGFuZCB3cml0aW5nIHRoZW0gdG8gc29tZXRoaW5nIGxpa2UgYC9kZXYvdHR5MWAuIEl0IGFsc28gZnV6emVzIHRoZSBgZmJkZXZgIGlvY3RscyBsaWtlIGBGQklPUFVUX1ZTQ1JFRU5JTkZPYCwgc2V0dGluZyB0aGluZ3MgbGlrZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuXG5cblNvLCB0aGUgYnVnIGlzIHByb2JhYmx5IHRyaWdnZXJlZCBieSBzZXR0aW5nIHVwIHZlcnkgc21hbGwgdmFsdWVzIGZvciBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIGFuZCB0aGVuIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgbWFrZXMgYGZiX2NvcHlhcmVhYCBydW4gd2l0aCBjb29yZGluYXRlcyB0aGF0IGFyZSBvdXQtb2YtYm91bmRzLCByaWdodD8gVGhhdCBtYWtlcyBzZW5zZS4gQSBzbWFsbCB2aXJ0dWFsIHJlc29sdXRpb24sIHRoZW4gdHJpZ2dlciBhIGNvbnNvbGUgc2Nyb2xsLi4uIHRoYXQgc2hvdWxkIGRvIGl0IVxuXG5IbW0sIGlzIGBmYl9jb3B5YXJlYWAgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlIGRpcmVjdGx5IHZpYSBgaW9jdGxgIGluIHNvbWUgd2F5PyBObywgSSBkb24ndCByZWNhbGwgc2VlaW5nIGFueXRoaW5nIGxpa2UgYW4gYEZCSU9QVVRfQ09QWUFSRUFgIG9yIHNpbWlsYXIgZGVmaW5lZC4gTGV0J3MgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAgZm9yIGBjb3B5YXJlYWAgZGVmaW5pdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBzb21lIGZ1bmt5IGRlZmluaXRpb24gSSBtaXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjYxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjI5LjkyNDMxNTIzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjAxMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9mYi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9mYi5oPTMyND1zdHJ1Y3QgZmJfdmJsYW5rIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzY6c3RydWN0IGZiX2NvcHlhcmVhIHtcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zMzctXFx0X191MzIgZHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjMwLjAzNzkyMTA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNjM1MTQzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBmcmFtZWJ1ZmZlcnMsIGFuZCB0aGUgY29kZSByZWZlcmVuY2VzIGBzdHJ1Y3QgZmJfY29weWFyZWFgLiBSaWdodCwgdGhhdCBzdHJ1Y3QuLi4gaXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIEkgcmVjYWxsIHRoYXQgaGVhZGVyIOKAkyBpdCdzIHRoZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGRlZmluaXRpb25zIGZvciBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zLlxuXG5TbywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBnaXZlbiB0aGF0IHN0cnVjdHVyZSdzIGludm9sdmVkLCBpcyB0byBjaGVjayB3aGV0aGVyIGFuIGBpb2N0bGAgc3lzdGVtIGNhbGwgbGV2ZXJhZ2VzIGl0LiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW9jdGwgY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBgZmJfY29weWFyZWFgIHN0cnVjdHVyZS4gVGhhdCB3b3VsZCBsaWtlbHkgZ2l2ZSBtZSBtb3JlIGNvbnRleHQgYWJvdXQgd2hhdCdzIGdvaW5nIG9uLiBMZXQgbWUgbG9vayBhcm91bmQgdGhlIGNvZGUgZm9yIHNvbWUgaW9jdGwgY2FsbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTozNi4xMDE0Mzg1NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzE0NTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvZmIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvZmIuaD0zMjQ9c3RydWN0IGZiX3ZibGFuayB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zMzUtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzM2OnN0cnVjdCBmYl9jb3B5YXJlYSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVxcdF9fdTMyIGR4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTozNi4zNDg1OTIwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTYyMjg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIHRoZSBGcmFtZWJ1ZmZlciBIZWFkZXIgZm9yIFNwZWNpZmljIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcmVzZW5jZSBvZiBzcGVjaWZpYyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZyYW1lIGJ1ZmZlciBJL08gY29udHJvbCBjb2Rlcywgc3BlY2lmaWNhbGx5IHRob3NlIHN0YXJ0aW5nIHdpdGggYEZCSU9QVVRfYC4gSSdsbCBpbW1lZGlhdGVseSBnbyB0byB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiBsb3ctbGV2ZWwgZnJhbWVidWZmZXIgaW5mb3JtYXRpb246IGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byB2ZXJpZnkgaWYgdGhlc2UgcGFydGljdWxhciBgRkJJT1BVVF9gIG1hY3Jvcywgb3IgYW55dGhpbmcgdmVyeSBzaW1pbGFyIGxpa2UgYEZCSU9HRVRfYCBvciByZWxhdGVkLCBhcmUgYWN0dWFsbHkgZGVmaW5lZCBpbiB0aGF0IGhlYWRlci4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5IGV4aXN0IGFuZCB0aGF0IEkgdW5kZXJzdGFuZCB0aGVpciBjb250ZXh0IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYW55dGhpbmcgZWxzZS4gVGhpcyBzZWVtcyBsaWtlIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGdldHRpbmcgbXkgZHVja3MgaW4gYSByb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDAuMjk0MjE4MDE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNzM5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZCSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMTQtICAgMHg0NiBpcyAnRidcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE1OiNkZWZpbmUgRkJJT0dFVF9WU0NSRUVOSU5GT1xcdDB4NDYwMFxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE2OiNkZWZpbmUgRkJJT1BVVF9WU0NSRUVOSU5GT1xcdDB4NDYwMVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE3OiNkZWZpbmUgRkJJT0dFVF9GU0NSRUVOSU5GT1xcdDB4NDYwMlxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE4OiNkZWZpbmUgRkJJT0dFVENNQVBcXHRcXHQweDQ2MDRcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxOTojZGVmaW5lIEZCSU9QVVRDTUFQXFx0XFx0MHg0NjA1XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjA6I2RlZmluZSBGQklPUEFOX0RJU1BMQVlcXHRcXHQweDQ2MDZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0yMS0jaWZuZGVmIF9fS0VSTkVMX19cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyMjojZGVmaW5lIEZCSU9fQ1VSU09SICAgICAgICAgICAgX0lPV1IoJ0YnLCAweDA4LCBzdHJ1Y3QgZmJfY3Vyc29yKVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTIzLSNlbmRpZlxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTI0LS8qIDB4NDYwNy0weDQ2MEIgYXJlIGRlZmluZWQgYmVsb3cgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNTovKiAjZGVmaW5lIEZCSU9HRVRfTU9OSVRPUlNQRUNcXHQweDQ2MEMgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNjovKiAjZGVmaW5lIEZCSU9QVVRfTU9OSVRPUlNQRUNcXHQweDQ2MEQgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNzovKiAjZGVmaW5lIEZCSU9TV0lUQ0hfTU9OSUJJVFxcdDB4NDYwRSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI4OiNkZWZpbmUgRkJJT0dFVF9DT04yRkJNQVBcXHQweDQ2MEZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyOTojZGVmaW5lIEZCSU9QVVRfQ09OMkZCTUFQXFx0MHg0NjEwXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzA6I2RlZmluZSBGQklPQkxBTktcXHRcXHQweDQ2MTFcXHRcXHQvKiBhcmc6IDAgb3IgdmVzYSBsZXZlbCArIDEgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMTojZGVmaW5lIEZCSU9HRVRfVkJMQU5LXFx0XFx0X0lPUignRicsIDB4MTIsIHN0cnVjdCBmYl92YmxhbmspXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzI6I2RlZmluZSBGQklPX0FMTE9DICAgICAgICAgICAgICAweDQ2MTNcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzojZGVmaW5lIEZCSU9fRlJFRSAgICAgICAgICAgICAgIDB4NDYxNFxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM0OiNkZWZpbmUgRkJJT0dFVF9HTFlQSCAgICAgICAgICAgMHg0NjE1XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzU6I2RlZmluZSBGQklPR0VUX0hXQ0lORk8gICAgICAgICAweDQ2MTZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozNjojZGVmaW5lIEZCSU9QVVRfTU9ERUlORk8gICAgICAgIDB4NDYxN1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM3OiNkZWZpbmUgRkJJT0dFVF9ESVNQSU5GTyAgICAgICAgMHg0NjE4XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6Mzg6I2RlZmluZSBGQklPX1dBSVRGT1JWU1lOQ1xcdF9JT1coJ0YnLCAweDIwLCBfX3UzMilcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDEuODI0OTYyNzg0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODk5NDc3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkRlY29uc3RydWN0aW5nIGEgUG90ZW50aWFsIEZyYW1lYnVmZmVyIElzc3VlKipcblxuSG1tLCBgRkJJT19DVVJTT1JgLi4uIG5vLCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gVGhhdCdzIHByb2JhYmx5IGEgcmVkIGhlcnJpbmcuIE9rYXksIGxldCdzIHJlLWNlbnRlciBteSBmb2N1cy4gVGhlIGNvcmUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBgZmJfY29weWFyZWFgLiBXaGVyZSBleGFjdGx5IGlzICp0aGF0KiBmdW5jdGlvbiB1dGlsaXplZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHVzYWdlcy4gQWgsIHllcywgSSdsbCBnbyBiYWNrIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uY2AuIFRoYXQncyB3aGVyZSB0aGUgZnJhbWVidWZmZXIgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGNvcmUgb3BlcmF0aW9ucyByZXNpZGUuIExldCdzIGRpZyBiYWNrIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgaWYgSSBtaXNzZWQgYW55dGhpbmcgdGhlIGZpcnN0IHRpbWUgYXJvdW5kIHJlZ2FyZGluZyBgY29weWFyZWFgLiBJIG5lZWQgYSBtb3JlIGRpcmVjdCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwb3RlbnRpYWwgY29udGV4dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODI0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDYuOTE0OTEzNTE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjEzNTQ1MTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTo0Ny4yMzYyNzc3MDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI4NjgzMzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDpcblxuKipUcmFja2luZyBEb3duIHRoZSBgZmJfY29weWFyZWFgIENhbGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGZiX2NvcHlhcmVhYCBpcyBiZWluZyBpbnZva2VkIGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgdGhhdCBpdCB3YXMgbmVzdGVkIHdpdGhpbiBgZmJtZW0uY2AsIHdhcyBpbmNvcnJlY3QuIFRoYXQncyBhIGNvbW1vbiBpbml0aWFsIGd1ZXNzLCBzbyBubyBiaWcgZGVhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBiZSBtZXRob2RpY2FsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdOKAmXMgY2FsbGVkIGluIGBkcml2ZXJzL2NoYXIvdnQuY2AuIEhtbSwgbm8sIHRoYXQgc2VlbXMgb2ZmLCB0b28uICBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgY29kZSBtb3JlIGNsb3NlbHkuIEdpdmVuIHRoZSBmdW5jdGlvbmFsaXR5LCBpdCdzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIHdpdGggdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgZGlyZWN0bHksIHNvIGxldCBtZSBleHBhbmQgbXkgc2VhcmNoIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgYW5kIGBmYmNvbl9jY3cuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay4gSSdsbCBmb2N1cyBvbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmNgIGZpcnN0LCB0aGF0J3MgdGhlIG1vc3QgZ2VuZXJpYyBhbmQgY29tbW9uIGZyYW1lYnVmZmVyIGNvbnNvbGUgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjU2LjUyMzExMzg2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1Njc4MTU3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NTYuNzM4Nzk5MTUzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MDQxMTAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2V5IENoYW5nZSBpbiBGcmFtZWJ1ZmZlciBDb3JlKipcblxuT2theSwgc28gSSBqdXN0IHNhdyBzb21lIGNoYW5nZXMgdGhhdCBpbW1lZGlhdGVseSBjYXVnaHQgbXkgZXllLiBJIHJlbWVtYmVyIGVuY291bnRlcmluZyByZWxhdGVkIGNvZGUgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9iaXRibGl0LmNgIGFuZCBgZmJjb25fY2N3LmNgIGVhcmxpZXIuIFJpZ2h0LCBgYml0X2Jtb3ZlYCBjYWxscyBgaW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBJJ3ZlIHNlZW4gYGJpdF9ibW92ZWAgdXNlZCBoZWF2aWx5IGluIGBmYmNvbmAuXG5cblRoZSBoZWFydCBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBjb3JlIGZyYW1lYnVmZmVyIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3M6IGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBmcmFtZWJ1ZmZlciBkcml2ZXJzLCBsaWtlIGB2Z2ExNmZiYCwgYHZlc2FmYmAsIGBlZmlmYmAsIGFuZCBgc2ltcGxlZmJgLCBsZXZlcmFnZSB3aGVuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpc24ndCBhdmFpbGFibGUuXG5cblRoZSBlc3NlbmNlIG9mIHRoZSBjaGFuZ2UgaXMgYm91bmRzIGNoZWNraW5nLiBXZSdyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gYGR4YCwgYGR5YCwgYHdpZHRoYCwgb3IgYGhlaWdodGAgdmFsdWVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuIEkgbGlrZSB0aGF0LiBUaGlzIGlzIGEgY2xlYXIgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoZSBwYXRjaCB0YXJnZXRzLiBXZSdyZSB0YWxraW5nIGFib3V0IGBmYl9jb3B5YXJlYWAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0YCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhgLCBhbmQgYGZiX2ltYWdlYmxpdGAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaGAuXG5cbkFoLCB0aGVzZSBhcmUgaW5saW5lIGZ1bmN0aW9ucy4gU28gd2hlcmUgYXJlIHRoZXkgZ2V0dGluZyAqY2FsbGVkKiBmcm9tPyBJJ2xsIG5lZWQgdG8gZ28gZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGhzLiBMb29rcyBsaWtlIGBjZmJfY29weWFyZWFgIGluIGBjZmJjb3B5YXJlYS5jYCwgYHN5c19jb3B5YXJlYWAgaW4gYHN5c2NvcHlhcmVhLmNgLCBhbmQgc28gb24uIFJpZ2h0LCB0aGF0J3Mgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ2MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjowMy42NDI5MTE2NDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTM0NzEwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTk6dm9pZCBjZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yOS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjowMy45MzgyNjMwMDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNTc0ODg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBHcmFwaGljcyBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBncmFwaGljcyBmdW5jdGlvbnM6IGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IGFyZWFzIGZvciBtZSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFwic3lzXCIgbmFtZXNwYWNlLCBzcGVjaWZpY2FsbHkgYHN5c19maWxscmVjdGAgYW5kIGBzeXNfaW1hZ2VibGl0YC4gSSdsbCB2ZXJpZnkgdGhlaXIgZXhpc3RlbmNlIGFzIGEgcHJlY3Vyc29yIHRvIGFueSBzdWJzZXF1ZW50IGFuYWx5c2lzIG9yIG9wdGltaXphdGlvbiBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU1MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjA5LjY0NDAxNDIyN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNTk2MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c19maWxscmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTYxPWNvbmZpZyBGQl9TWVNfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTY0LVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2NTpcXHQgIEluY2x1ZGUgdGhlIHN5c19maWxscmVjdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSByZWN0YW5nbGVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy02Ni1cXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd25cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE5OnZvaWQgc3lzX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjUtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjI2OkVYUE9SVF9TWU1CT0woc3lzX2ZpbGxyZWN0KTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MDkuOTI0NjI2NTk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTkzNDUxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgVmVyaWZpY2F0aW9uIFx1MDAyNiBJbml0aWFsIEludmVzdGlnYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjb25maXJtZWQ6IHRoZXkgZG8sIGluIGZhY3QsIHVzZSB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgbGV0J3MgZGl2ZSBzdHJhaWdodCBpbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayBvZiBgY2ZiX2ZpbGxyZWN0YCBhbmQgdGhlbiBgY2ZiX2ltYWdlYmxpdGAuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhvc2UgYXJlIHRoZSBsaWtlbHkgY3VscHJpdHMgdG8gZXhhbWluZSBnaXZlbiB0aGUgY29udGV4dC4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoxMy42MjM5NzQ1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjc5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmYl9maWxscmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTMyLVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzozMzpcXHQgIEluY2x1ZGUgdGhlIGNmYl9maWxscmVjdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSByZWN0YW5nbGVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zNC1cXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd25cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE5OnZvaWQgY2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzEtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2ZpbGxyZWN0KTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0zMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MTMuNzE3NjYwNTQyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjY5MzExNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW1hZ2UgQmxpdHRpbmcgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaW1hZ2UgYmxpdHRpbmcuIFNwZWNpZmljYWxseSwgSSdtIGNvbnNpZGVyaW5nIGBjZmJfaW1hZ2VibGl0YCBhbmQgYHN5c19pbWFnZWJsaXRgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgZmV3IGNvcmUgYXJlYXMgd2hlbiBJIHNlZSB0aG9zZSBmdW5jdGlvbiBuYW1lcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHdoaWNoIGNvbnRleHQgaXMgaW50ZW5kZWQgaGVyZS5cblxuKiAgIEFyZSB3ZSB0YWxraW5nIGFib3V0IHRoZSBmcmFtZWJ1ZmZlciBjb250ZXh0IChgY2ZiYCk/IElmIHNvLCBpcyB0aGlzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMsIHBhcnRpY3VsYXJseSBkaXJlY3QgYWNjZXNzPyBJIHdvbmRlciBhYm91dCBjb2xvciBkZXB0aCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1vZGVsIHdoZW4gYGNmYmAgaXMgaW4gcGxheS4gQW0gSSBsb29raW5nIGF0IGFueSBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRvciBpbnRlcmFjdGlvbnMgaGVyZSwgb3IgaXMgdGhpcyBwcmltYXJpbHkgc29mdHdhcmUtYmFzZWQ/XG5cbiogICBBbHRlcm5hdGl2ZWx5LCBjb3VsZCB0aGlzIGJlIHN5c3RlbS1sZXZlbCBibGl0dGluZyAoYHN5c2ApPyBUaGVuIEkgbmVlZCB0byBjb25zaWRlciBzeW5jaHJvbml6YXRpb24sIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBwcm9jZXNzZXMgb3IgZHJpdmVycy4gV2hhdCBraW5kIG9mIGJ1ZmZlcmluZyBpcyBpbiB1c2U/IElzIHRoZXJlIGFueSBjYWNoaW5nIGdvaW5nIG9uIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGFsc28gYnJpbmdzIHVwIHF1ZXN0aW9ucyBhYm91dCB0aGUgdGFyZ2V0IGRpc3BsYXk6IGFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZGVkaWNhdGVkIGZyYW1lYnVmZmVyIG9yIHBlcmhhcHMgYSB3aW5kb3cgbWFuYWdlZCBieSBhIHdpbmRvd2luZyBzeXN0ZW0gbGlrZSBYMTE/XG5cblVsdGltYXRlbHksIHRoaXMgcmVtaW5kcyBtZSB0aGF0IEkgbmVlZCB0byBiZSBhdHRlbnRpdmUgdG8gdGhlIHN5c3RlbSBjb250ZXh0IGFuZCB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gaW1hZ2UgbWFuaXB1bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjIxLjg4NDU5NDMyMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1ODEwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZiX2ltYWdlYmxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTQ1PWNvbmZpZyBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy00OC1cXHRoZWxwXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6NDk6XFx0ICBJbmNsdWRlIHRoZSBjZmJfaW1hZ2VibGl0IGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGltYWdlXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNTAtXFx0ICBibGl0dGluZy4gVGhpcyBpcyB1c2VkIGJ5IGRyaXZlcnMgdGhhdCBkb24ndCBwcm92aWRlIHRoZWlyIG93blxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYzoxOTp2b2lkIGNmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2ltYWdlYmxpdCk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMS45NjgxODEzNTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2MjAxNDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdyYXBoaWNzIEFjY2VsZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSB0aGUgY29tbW9uIHN1c3BlY3RzIGluIGFjY2VsZXJhdGVkIGdyYXBoaWNzIG9wZXJhdGlvbnMuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4udGhlIHBhdGNoIGlzIGFjdHVhbGx5IG1vZGlmeWluZyBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAuIFRoZXNlIGFyZSAqaW5saW5lKiBmdW5jdGlvbnMhIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24gb2YgdGhlc2UgaW5saW5lIGRlZmluaXRpb25zIHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyLiBXaGF0ICpkb2VzKiBtYXR0ZXIgaXMgd2hlcmUgdGhlc2UgYXJlICp1c2VkKi4gVGhlIGNvbXBpbGVyIHdpbGwsIGVmZmVjdGl2ZWx5LCBzdWJzdGl0dXRlIHRoZSBpbmxpbmVkIGNvZGUuIFNvLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCAqY2FsbCogdGhlc2UgaW5saW5lZCBmdW5jdGlvbnMuXG5cbkFuZCBJIGtub3cgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGVycyBhcmUgYGNmYl8qYCBhbmQgYHN5c18qYOKAlHRob3NlIGFyZSB0aGUgcHJpbWFyeSBhY2NlbGVyYXRlZCBwYXRocywgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBwbGFjZXMgd2hlcmUgYGZiX2NvcHlhcmVhLmhgIGlzIGluY2x1ZGVkLCB0byBjYXRjaCBhbnkgZWRnZSBjYXNlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGluY2x1ZGVzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwOTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjcuNzMwMTk4Mjk3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc1MDc4ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXFxcImNmYm1lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFxcXCJmYl9jb3B5YXJlYS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE4LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFxcXCJmYl9jb3B5YXJlYS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyOC4wMzc3MTIwNjhaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MjM2MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYGZiX2ZpbGxyZWN0LmhgKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIG5vdGljaW5nIHRoYXQgdGhlIGBmYl9maWxscmVjdC5oYCBoZWFkZXIgc2VlbXMgdG8gYmUgaW5jbHVkZWQgc3BlY2lmaWNhbGx5IGJ5IGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLiBUaGF0J3MgYSBiaXQgZm9jdXNlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwbGFjZXMgd2hlcmUgaXQgKnNob3VsZCogYmUgaW5jbHVkZWQsIG9yIHdoZXRoZXIgaXRzIHVzYWdlIGlzIGludGVudGlvbmFsbHkgbGltaXRlZCB0byB0aGVzZSB0d28gbW9kdWxlcy4gQXJlIHRoZXJlIG90aGVyIGFyZWFzIG9mIHRoZSBzeXN0ZW0gdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gYWNjZXNzIHRvIHRoYXQgZnVuY3Rpb25hbGl0eT8gQ291bGQgdGhlcmUgYmUgcG90ZW50aWFsIGNvZGUgZHVwbGljYXRpb24gb3IgaW5lZmZpY2llbmNpZXMgaWYgaXQncyBub3QgbW9yZSB3aWRlbHkgYWNjZXNzaWJsZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW50ZW50IGhlcmU7IGlzIHRoaXMgYnkgZGVzaWduLCBvciBpcyB0aGlzIGp1c3QgYW4gb3ZlcnNpZ2h0PyBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZmlsZSBuYW1lLCBpcyB0aGF0IGl0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBsb3cgbGV2ZWwgZHJhd2luZyBwcmltaXRpdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjMyLjIxMDA3NzU5N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc0OTc2OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXFxcImNmYm1lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9maWxscmVjdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE4LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9maWxscmVjdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjozMi4zMDc1ODUyNzFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwOTI0NTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEluY2x1c2lvbiBvZiBgZmJfaW1hZ2VibGl0LmhgKipcblxuQWxyaWdodCwgc28gdGhlIHByb21wdCBoYXMgbWUgY2lyY2xpbmcgYmFjayB0byB0aGUgaW1hZ2UgYmxpdHRpbmcgbGlicmFyeSwgc3BlY2lmaWNhbGx5IGBmYl9pbWFnZWJsaXQuaGAuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBpbiB0aGlzIGNvbnRleHQuIFdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2NvbXBsaXNoPyBBcmUgd2UgZGVhbGluZyB3aXRoIHJhdyBmcmFtZWJ1ZmZlciBhY2Nlc3M/IERvIHdlIG5lZWQgb3B0aW1pemVkIGltYWdlIGNvcHkgcm91dGluZXM/IElzIHRoaXMgdGFyZ2V0IHBsYXRmb3JtIGV2ZW4gdXNpbmcgYSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBhYnN0cmFjdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgYmVzcG9rZT8gYGZiX2ltYWdlYmxpdC5oYCBzdWdnZXN0cyBhIHRyYWRpdGlvbmFsIGZyYW1lYnVmZmVyIGFwcHJvYWNoLCB3aGljaCBpcyBnb29kIGlmIHRoYXQncyB0aGUgYmFzZSBhc3N1bXB0aW9uLlxuXG5UaGUgcmVhbCBxdWVzdGlvbnMgYXJlOiBJcyB0aGlzIHRoZSBjb3JyZWN0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyBpdCBoYXJkd2FyZS1hY2NlbGVyYXRlZCwgb3IgcHVyZWx5IHNvZnR3YXJlPyBJZiBzb2Z0d2FyZSwgYXJlIHRoZXJlIHBvdGVudGlhbGx5IGZhc3RlciBsb3ctbGV2ZWwgYWx0ZXJuYXRpdmVzLCBtYXliZSByZWx5aW5nIG9uIFNJTUQgaW50cmluc2ljcyBvciBzcGVjaWFsaXplZCBoYXJkd2FyZSByZWdpc3RlcnMgaWYgdGhleSBhcmUgZXhwb3NlZD9cblxuTW9yZSBnZW5lcmFsbHksIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgbWFpbnRhaW5hYmlsaXR5IGFuZCBwb3J0YWJpbGl0eSBpbXBsaWNhdGlvbnMuIElzIGBmYl9pbWFnZWJsaXQuaGAgd2lkZWx5IHN1cHBvcnRlZCBhbmQgZG9jdW1lbnRlZD8gRG9lcyBpdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHdlIHJlcXVpcmUgd2l0aG91dCB1bm5lY2Vzc2FyeSBvdmVyaGVhZD8gSSBuZWVkIHRvIGNvbnNpZGVyIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZ3JhcGhpY3Mgc3RhY2suIElmIGl0J3MgYSBsZWdhY3kgbGlicmFyeSwgdGhlIGNvc3QvYmVuZWZpdCBtaWdodCBub3QgYmUgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyBpdCBwbGF5cyBpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlIGNvdWxkIGJlIGJldHRlciwgbG93ZXItbGV2ZWwgYXBwcm9hY2hlcywgb3IgYmV0dGVyLCBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE0NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjM4LjQxNjgzMzYxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI4MDAxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2ltYWdlYmxpdC5oXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9pbWFnZWJsaXQuaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmMtMTgtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcXFwiZmJfaW1hZ2VibGl0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjozOC42ODk2NDIwNjNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4MDQ5MTU4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZyYW1lYnVmZmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIGl0J3MgY2xlYXIgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBoaW5nZXMgYXJvdW5kIHRob3NlIHNpeCBzcGVjaWZpYyBmcmFtZWJ1ZmZlciBmdW5jdGlvbnM6IGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfU1lTX0NPUFlBUkVBYCwgYEZCX0NGQl9GSUxMUkVDVGAsIGBGQl9TWVNfRklMTFJFQ1RgLCBgRkJfQ0ZCX0lNQUdFQkxJVGAsIGFuZCBgRkJfU1lTX0lNQUdFQkxJVGAuIFRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0LCBhdCBhIG1pbmltdW0sIHdlJ2xsIGRlZmluaXRlbHkgbmVlZCBgRkJgLCB3aGljaCBjb3ZlcnMgdGhlIGZ1bmRhbWVudGFsIGZyYW1lYnVmZmVyIHN1cHBvcnQsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAsIHdoaWNoIGVuYWJsZXMgdGhlIGNydWNpYWwgZnJhbWVidWZmZXIgY29uc29sZSBmdW5jdGlvbmFsaXR5LiBOb3cgSSBuZWVkIHRvIHNlZSBpZiBteSB0aGlua2luZyBpcyByaWdodCBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlc2UgY29uZmlncy4gTGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ2AgYW5kIGRvdWJsZSBjaGVjay4gVGhpcyBzaG91bGQgYmUgd2hlcmUgdGhlc2UgZXNzZW50aWFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTEuNDk0NTYyMjEzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYyMzc2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCX1NZU19DT1BZQVJFQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy02OC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2OTpjb25maWcgRkJfU1lTX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNzAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTEuNjEwODA1OTI2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTM1NzQ0NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb2RpbmcgdGhlIENvbmZpZzogQSBUcmlzdGF0ZSBXaXRob3V0IGEgVm9pY2UqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGBGQl9TWVNfQ09QWUFSRUFgIGNvbmZpZyBvcHRpb24gYW5kIHNvbWV0aGluZydzIG5vdCBxdWl0ZSByaWdodC4gSXQncyBhIHRyaXN0YXRlLCByaWdodD8gV2hpY2ggbWVhbnMgaXQgY2FuIGJlIHllcywgbm8sIG9yIG1heWJlLiBCdXQgdGhlcmUncyBubyBhc3NvY2lhdGVkIHByb21wdCDigJMgbm8gdXNlci1mYWNpbmcgc3RyaW5nIHRvIHRlbGwgbWUgd2hhdCB0aGlzIG9wdGlvbiAqZG9lcyogb3Igd2h5IEknZCB3YW50IHRvIGVuYWJsZSBpdC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgY29udHJvbGxlZCBieSBkZXBlbmRlbmNpZXMsIG5vdCBkaXJlY3RseSBieSBtZSwgdGhlIHVzZXIuIEl04oCZcyBhbiBvcHRpb24gZW5hYmxlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGVuYWJsaW5nIG90aGVyIHRoaW5ncy5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gYmVjb21lczogV2hhdCdzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgKnNlbGVjdGluZyogYEZCX1NZU19DT1BZQVJFQWA/IEkgbmVlZCB0byB0cmFjZSBiYWNrIHRob3NlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgYmVpbmcgc2V0LiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgY29udHJvbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIGJpdC4gSSBzdXNwZWN0IHRoaXMgaXMgc29tZXRoaW5nIGRlZXAgaW4gdGhlIGZyYW1ld29yay4gTGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEwMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjU1Ljg2NDM4MzA2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY3NTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfU1lTX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzU0PWNvbmZpZyBGQl9WVDg1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzU3LVxcdHNlbGVjdCBGQl9TWVNfRklMTFJFQ1QgaWYgKCFGQl9XTVRfR0VfUk9QUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM1ODpcXHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBIGlmICghRkJfV01UX0dFX1JPUFMpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNTktXFx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzY3PWNvbmZpZyBGQl9XTTg1MDVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzcxLVxcdHNlbGVjdCBGQl9TWVNfRklMTFJFQ1QgaWYgKCFGQl9XTVRfR0VfUk9QUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM3MjpcXHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBIGlmICghRkJfV01UX0dFX1JPUFMpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNzMtXFx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTEzMj1jb25maWcgRkJfRE1BTUVNX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTEzNC1cXHRkZXBlbmRzIG9uIEZCX0NPUkVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxMzU6XFx0c2VsZWN0IEZCX1NZU19DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTEzNi1cXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNjQ9Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjYtXFx0ZGVwZW5kcyBvbiBGQl9DT1JFXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY3OlxcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjgtXFx0c2VsZWN0IEZCX1NZU19GSUxMUkVDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mjo1NS45NTQwNjQyNjVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMTQyMzYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBGcmFtZWJ1ZmZlciBTeXN0ZW0gTWVtb3J5IEhlbHBlcnMqKlxuXG5SaWdodCwgc28gYEZCX1NZU01FTV9IRUxQRVJTYCBpcyBjbGVhcmx5IGRlZmluaW5nIHRoZSBzeXN0ZW0gbWVtb3J5LWJhc2VkIGFjY2VsZXJhdGlvbiByb3V0aW5lcy4gSXQncyBvcHRpbmcgZm9yIGBGQl9TWVNfQ09QWUFSRUFgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYW5kIGBGQl9TWVNfSU1BR0VCTElUYC4gTWFrZXMgc2Vuc2UuIFRob3NlIGFyZSB0aGUgY29yZSBvcGVyYXRpb25zIHdlJ2QgZXhwZWN0IGZvciBnZW5lcmFsLXB1cnBvc2UgYWNjZWxlcmF0aW9uIHdoZW4gZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaXMgYXZhaWxhYmxlLlxuXG5CdXQgaGFuZyBvbuKApiBpcyBgRkJfQ0ZCX0NPUFlBUkVBYCBpbiB0aGUgbWl4IGFzIHdlbGw/IFRoYXQncyB0eXBpY2FsbHkgdXNlZCBmb3IgQml0QkxUIGFuZCBjaGFyYWN0ZXIgY29weWluZyB1c2luZyBhIGNvbG91ciBmcmFtZSBidWZmZXIuIElzIHRoZSBzeXN0ZW0gZ29pbmcgdG8gdXNlICpib3RoKiBvciBjb3VsZCB0aGV5IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIHNvLCB3aHkgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcz8gT3IgaXMgdGhlcmUgYSBkZWVwZXIgaW50ZXJhY3Rpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJldHdlZW4gdGhlbT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MDAuNDU1NDkwOTEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODU0MTc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkJfQ0ZCX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjM3OmNvbmZpZyBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC41NDQwMzk2NDhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyMzE5MjQyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVbnByb21wdGVkIFRyaXN0YXRlKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSB0cmlzdGF0ZSBzeXN0ZW0sIGJ1dCBjcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXhwbGljaXQgcHJvbXB0LiBUaGF0J3MgdGhlIGtleSBpc3N1ZS4gQSB0cmlzdGF0ZSwgYnkgaXRzIG5hdHVyZSwgbmVlZHMgYSBkZWZpbmVkIHNlbGVjdGlvbiBvciBjb250cm9sIG1lY2hhbmlzbSB0byBuYXZpZ2F0ZSBiZXR3ZWVuIGl0cyB0aHJlZSBzdGFibGUgc3RhdGVzLiBXaXRob3V0IHRoYXQsIGl04oCZcyBqdXN0Li4uaW5kZXRlcm1pbmF0ZS4gSXQncyBsaWtlIGhhdmluZyB0aHJlZSBzd2l0Y2hlcywgYnV0IG5vIGxldmVyIG9yIGJ1dHRvbiB0byBkZWNpZGUgd2hpY2ggcG9zaXRpb24gdGhleSdyZSBpbi4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQgbWVjaGFuaXNtLCBpbnRlcm5hbCBvciBleHRlcm5hbCwgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIHN0YXRlcz8gSXMgaXQgYSBwYXNzaXZlIHN5c3RlbSwgcmVseWluZyBvbiBpbmhlcmVudCBwcm9wZXJ0aWVzIG9yIHNvbWUga2luZCBvZiBleHRlcm5hbCBpbmZsdWVuY2UgdG8gZGV0ZXJtaW5lIGl0cyBiZWhhdmlvciwgb3IgaXMgdGhlcmUgYW4gaW1wbGljaXQgY29udHJvbCBzaWduYWwgb3IgY29uZGl0aW9uIEknbSBtaXNzaW5nPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSdzIHN0YXRlcyBhcmUgYmVpbmcgZGV0ZXJtaW5lZCB3aXRob3V0IGFuIG9idmlvdXMgZXhwbGljaXQgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MjU1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MTMuNzc1OTY3OTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzg0MDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03MT1jb25maWcgRkJfQ0lSUlVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNzQtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3NTpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc2LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTA9Y29uZmlnIEZCX1BNMlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTkzLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTQ6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI1OT1jb25maWcgRkJfQVRBUklcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjItXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNjM6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjQtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zMzM9Y29uZmlnIEZCX1ZHQTE2XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzM4OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM5LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzUwPWNvbmZpZyBGQl9TVElcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTMtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozNTQ6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTUtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zODM9Y29uZmlnIEZCX1RHQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM4OS1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjM5MDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM5MS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ3OT1jb25maWcgRkJfU0JVU19IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ4MC1cXHRib29sXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ4MTpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ4Mi1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTAwPWNvbmZpZyBGQl9DRzZcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MDItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoU1BBUkMgXFx1MDAyNlxcdTAwMjYgRkJfU0JVUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTAzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTA0LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTEwPWNvbmZpZyBGQl9GRkJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MTItXFx0ZGVwZW5kcyBvbiBGQl9TQlVTIFxcdTAwMjZcXHUwMDI2IFNQQVJDNjRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTEzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTE0LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTUyPWNvbmZpZyBGQl9YVlI1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NTUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1NTY6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NTctXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz01ODc9Y29uZmlnIEZCX1BWUjJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01OTEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1OTI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01OTMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02MjQ9Y29uZmlnIEZCX1MxRDEzWFhYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjI3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjI4OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjI5LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjQ4PWNvbmZpZyBGQl9OVklESUFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NTEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NTI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NTMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02OTg9Y29uZmlnIEZCX1JJVkFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03MDEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3MDI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03MDMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz04MDU9Y29uZmlnIEZCX01BVFJPWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTgwOS1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjgxMDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTgxMS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTkyNj1jb25maWcgRkJfUkFERU9OXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTI5LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTMwOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTMxLVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTg3PWNvbmZpZyBGQl9BVFlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05OTAtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5OTE6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05OTItXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMDM5PWNvbmZpZyBGQl9TM1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNDMtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDQ0OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA0NS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEwNjI9Y29uZmlnIEZCX1NBVkFHRVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNjUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDY2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA2Ny1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExMDE9Y29uZmlnIEZCX1NJU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMDUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTA2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEwNy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExMzI9Y29uZmlnIEZCX1ZJQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMzUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTM2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEzNy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExNzE9Y29uZmlnIEZCX05FT01BR0lDXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE3NC1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjExNzU6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTc2LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTE5OD1jb25maWcgRkJfM0RGWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMDEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjAyOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIwMy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEyNDU9Y29uZmlnIEZCX1ZUODYyM1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNDktXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjUwOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTI1MS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEyNjA9Y29uZmlnIEZCX1RSSURFTlRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjYzLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI2NDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNjUtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjgzPWNvbmZpZyBGQl9BUktcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjg3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI4ODpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyODktXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjk4PWNvbmZpZyBGQl9QTTNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzAxLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwMjpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMDMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTUzPWNvbmZpZyBGQl9TTTUwMVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NTYtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTU3OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1OC1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTUwPWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTItXFx0ZGVwZW5kcyBvbiBGQl9DT1JFXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTUzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTQtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzoxMy45MDk4MTQwMjJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODg0NDM5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZyYW1lYnVmZmVyIGhlbHBlciBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYEZCX0lPTUVNX0hFTFBFUlNgIGFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgLiBJdCBzZWVtcyBsaWtlIHNlbGVjdGluZyBgRkJfSU9NRU1fSEVMUEVSU2AgZW5hYmxlcyB0aGUgYEZCX0NGQl9DT1BZQVJFQWAsIGBGQl9DRkJfRklMTFJFQ1RgLCBhbmQgYEZCX0NGQl9JTUFHRUJMSVRgIGZ1bmN0aW9ucy4gQW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AgZG9lcyB0aGUgc2FtZSwgYnV0IHdpdGggdGhlIGBGQl9TWVNfYCB2YXJpYW50cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBqdXN0IGVuYWJsZSBib3RoLCBzaW5jZSB0aGV5IHNlZW0gdG8gcHJvdmlkZSB1c2VmdWwsIG9wdGltaXplZCBmdW5jdGlvbnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgbWFueSBkcml2ZXJzIGFsc28gc2VsZWN0IHRoZXNlLiBUaGF0J3MgYSBrZXkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgdW5uZWNlc3NhcnkgcmVkdW5kYW5jeS5cblxuU28sIEkgY291bGQgbGlzdCBgRkJfSU9NRU1fSEVMUEVSU2AgYW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AgZGlyZWN0bHkgaW4gdGhlIGBFbmFibGVDb25maWdzYCBzZWN0aW9uLCBvciBtYXliZSBJIHNob3VsZCBhaW0gZm9yIHRoZSBzcGVjaWZpYyBwcmltaXRpdmVzIGxpa2UgYEZCX0NGQl9DT1BZQVJFQWAuIEJ1dCwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgZW5hYmxlIGBGQl9DRkJfQ09QWUFSRUFgIGRpcmVjdGx5IGluIGAuY29uZmlnYCBpZiBpdCdzIHRyaXN0YXRlIGFuZCBkb2Vzbid0IGhhdmUgaXRzIG93biBwcm9tcHQuIElmIEkgdHJ5IHRvIGVuYWJsZSBpdCwgdGhlIGJ1aWxkIHdpbGwgbGlrZWx5IGZhaWwuXG5cblJpZ2h0LCBzbyB0aGF0J3Mgd2hlcmUgYEZCX0lPTUVNX0hFTFBFUlNgIGNvbWVzIGluLiBJdCdzIGEgYm9vbGVhbiB3aXRoIGEgcHJvbXB0LiBJIHNob3VsZCB2ZXJpZnkgdGhpcyB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzkxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjI1LjM5ODI2MTE3MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MzU2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9JT01FTV9IRUxQRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE0Nj1jb25maWcgRkJfSU9NRU1fRk9QU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTQ5LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1MDpjb25maWcgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTctXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTU4OmNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MjUuNTUzNjIzNTMxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODI1MTA4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gSGVscGVycyoqXG5cbkhtbSwgbm8sIHRoYXQgYEZCX0lPTUVNX0hFTFBFUlNgIHN5bWJvbCBpcyBhIGJvb2xlYW4sIGFuZCB0aGVyZSdzIG5vIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBwcm9tcHQuIFRoYXQgcGF0aCBpc24ndCBnb2luZyB0byBnZXQgbWUgYW55d2hlcmUgaW50ZXJlc3RpbmcgcmlnaHQgbm93LiBJdCdzIGEgYmluYXJ5IGNob2ljZS5cblxuTm93LCB3aGF0IGFib3V0IGBGQl9TWVNNRU1fSEVMUEVSU2A/IEkgbmVlZCB0byBjaGVjayBob3cgdGhhdCBvbmUgaXMgZGVmaW5lZC4gSXQncyBwb3RlbnRpYWxseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvLiBJIHN1c3BlY3QsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgY291bGQgYmUgYSBzaW1pbGFyIHNpdHVhdGlvbiwgYnV0IGl0J3Mgd29ydGggdGhlIHF1aWNrIGludmVzdGlnYXRpb24uIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhIHByb21wdCBvciBtb3JlIGRldGFpbHMgZm9yIG1lIHRvIGNvbnNpZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjI4LjgzNjEzNzQ4NVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNzc1MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0lPTUVNX0hFTFBFUlNfREVGRVJSRURcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNjQ6Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNzI6Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTczLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MjkuMDM3OTE4ODIyWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODQ3NjcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBSZWFzb25pbmcgb24gRnJhbWVidWZmZXIgRHJpdmVyIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZXNlIGZyYW1lYnVmZmVyIGRyaXZlcnMgYXJlIGNob3NlbiBhbmQgaXQncyBnZXR0aW5nIGEgbGl0dGxlIGludHJpY2F0ZS4gV2UgaGF2ZSB0aGlzIGJvb2xlYW4gb3B0aW9uLCBsZXQncyBjYWxsIGl0IGEgXCJmbGFnXCIgZm9yIHRoZSBzYWtlIG9mIGNvbnZlcnNhdGlvbiwgdGhhdCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgcHJvbXB0IGF0dGFjaGVkIHRvIGl0LiBUaGF0IG1lYW5zIHdlIG5lZWQgc29tZSBraW5kIG9mIHNtYXJ0IGRyaXZlciB0byBhY3R1YWxseSAqc2VsZWN0KiBpdCwgbWFrZSBpdCBhY3RpdmUuXG5cbkZvciBleGFtcGxlLCBJIHNlZSB0aGF0IHRoZSBgRkJfVkdBMTZgIGRyaXZlciwgaXQgc2VlbXMgdG8gZGlyZWN0bHkgaW1wbHkgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0NPUFlBUkVBYCBlbmFibGVkLiBPaCB3YWl0LCBsb29raW5nIGNsb3NlciwgYEZCX1ZHQTE2YCBhbHNvIGltcGxpZXMgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2x1ZSBhYm91dCBhIHBhdHRlcm4uXG5cbk5vdywgd2hhdOKAmXMgKnNlbGVjdGluZyogYEZCX1NZU19DT1BZQVJFQWA/IExldCdzIHNlZS4uLiBgRkJfVlQ4NTAwYCwgYEZCX1dNODUwNWAsIGBGQl9ETUFNRU1fSEVMUEVSU2AsIGFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgLiBJbnRlcmVzdGluZy4gU28gdGhlcmUncyBhIHNldCBvZiBtb3JlIGdlbmVyaWMgb3B0aW9ucyBoZXJlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGEgc2ltaWxhcmx5IGdlbmVyaWMgZHJpdmVyIHRoYXQgd2lsbCBoYW5kbGUgc2V0dGluZyBgRkJfU1lTTUVNX0hFTFBFUlNgIGJ5IGl0c2VsZj8gSXQgbG9va3MgbGlrZSB0aG9zZSBmb3VyIHRoaW5ncyBhcmUgcmVsYXRlZCB0byBsb3ctbGV2ZWwgbWVtb3J5IGhhbmRsaW5nLCBzbyB0aGVyZSBoYXMgdG8gYmUgc29tZXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGF0LiBJIG5lZWQgdG8ga2VlcCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzozNC44MjI2ODg4OTdaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTEyNDI5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ4PWNvbmZpZyBGQl9IRUNVQkFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MC1cXHRkZXBlbmRzIG9uIEZCXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjUxOlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01Mi1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNDY9Y29uZmlnIEZCX0FSQ1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI0OC1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IEhBU19JT1BPUlQgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI0OTpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTcxPWNvbmZpZyBGQl9TTVNDVUZYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3NC1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NzU6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NzYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1ODM9Y29uZmlnIEZCX1VETFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODctXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTg4OlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjA2PWNvbmZpZyBGQl9QUzNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjA4LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUFMzX1BTM0FWXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2MDk6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NTg9Y29uZmlnIEZCX1ZJUlRVQUxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjYwLVxcdGRlcGVuZHMgb24gRkJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY2MTpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY3OD1jb25maWcgWEVOX0ZCREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY4MC1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFhFTlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjgxOlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjgyLVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY4OT1jb25maWcgRkJfTUVUUk9OT01FXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY5MS1cXHRkZXBlbmRzIG9uIEZCXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2OTI6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2OTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NTM9Y29uZmlnIEZCX0JST0FEU0hFRVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzU1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUFhBIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc1NjpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc1Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTc3OT1jb25maWcgRkJfU1NEMTMwN1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODQtXFx0c2VsZWN0IEZCX0JBQ0tMSUdIVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzg1OlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzg2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE3Mj1jb25maWcgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3NS1cXHRzZWxlY3QgRkJfREVGRVJSRURfSU9cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzozNC45NzM4MTkwODhaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2MjYzOTU5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgVmlydHVhbCBGcmFtZSBCdWZmZXIgU3VwcG9ydCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgc2VlIGBGQl9WSVJUVUFMYCBoYXMgYmVlbiBzZWxlY3RlZCwgYW5kIHRoYXQncyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIGBGQl9WSVJUVUFMYCBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvIHRoZSBWaXJ0dWFsIEZyYW1lIEJ1ZmZlciBzdXBwb3J0LCBvciB2ZmIuIEFuZCwga25vd2luZyB3aGF0IEkga25vdyBhYm91dCBmdXp6aW5nIGFuZCB0aGUgcG93ZXIgb2YgaW5zdHJ1bWVudGVkIHRhcmdldHMsIHRoaXMganVtcHMgb3V0IGFzIGEgcG90ZW50aWFsIGdvbGRtaW5lLiBUaGUgdmZiIGhhcyBhbHdheXMgYmVlbiBhIGNvbXBlbGxpbmcgdGFyZ2V0IGFuZCB0aGUgZmFjdCB0aGF0IGl0IGlzIHNlbGVjdGVkIHN1Z2dlc3RzIGl0IGlzIHByZXNlbnQuIFNvLCBsZXQgbWUgZ2V0IGEgcXVpY2sgbG9vayBhdCBgRkJfVklSVFVBTGAgYW5kIHNlZSB3aGF0IG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgd2UgaGF2ZSB0byBsZXZlcmFnZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mzo0OC42MDAyMTg5ODZaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTY4MDEyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkJfVklSVFVBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDU9Y29uZmlnIEZCX1NINzc2MFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NTctXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2NTg6Y29uZmlnIEZCX1ZJUlRVQUxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1OS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBGcmFtZSBCdWZmZXIgc3VwcG9ydCAoT05MWSBGT1IgVEVTVElORyEpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mzo0OC44MzU5MDU5NjFaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5OTE5NzIxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIGBGQl9WSVJUVUFMYCBhbmQgYEZCX0lPTUVNX0hFTFBFUlNgKipcblxuWWVzLCAqRkJfVklSVFVBTCogaXMgaW5kZWVkIGEgdmVyeSB1c2VmdWwgdG9vbCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgZnJhbWVidWZmZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEl0IHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseSBpbiBtYW55IHNjZW5hcmlvcywgcGFydGljdWxhcmx5IHdoZW4geW91IG5lZWQgdG8gYWJzdHJhY3QgYXdheSBmcm9tIHRoZSBwaHlzaWNhbCBkZXRhaWxzIGFuZCBoYW5kbGUgdmlydHVhbCBtZW1vcnkgcmVnaW9ucy4gSSBhcHByZWNpYXRlIGl0cyBlbGVnYW50IGRlc2lnbjsgaXQgbWFrZXMgZGVidWdnaW5nIGZyYW1lYnVmZmVyIGlzc3VlcyBtdWNoIGVhc2llci4gQnV0IG5vdywgbXkgbWluZCB3YW5kZXJzIHRvICpGQl9JT01FTV9IRUxQRVJTKi4gSSdtIGFza2luZyBteXNlbGYgaWYgaXQncyB0aGUgcmlnaHQgY2hvaWNlIGdpdmVuIHRoZSB0YXNrIEknbSBjb250ZW1wbGF0aW5nLiBBcmUgd2UgcmVhbGx5IGxldmVyYWdpbmcgdGhlIGJlbmVmaXRzIG9mIHRob3NlIGhlbHBlciBmdW5jdGlvbnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgdHJhZGUtb2ZmcyBpbiB0aGlzIHNwZWNpZmljIGNvbnRleHQ/IFRoaXMgY291bGQgaW52b2x2ZSBhbiBhc3Nlc3NtZW50IG9mIG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgb3IgZXZlbiBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGRlY2lzaW9uLiBUaW1lIHRvIHRha2UgYSBkZWVwZXIgZGl2ZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjAwLjgyNzg4MDc2M1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTcxNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02ND1jb25maWcgRkJfR1JWR0FcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02Ni1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFNQQVJDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjY3OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTc9Y29uZmlnIEZCX0FDT1JOXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE5LVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgQVJNIFxcdTAwMjZcXHUwMDI2IEFSQ0hfQUNPUk5cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTIwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI2PWNvbmZpZyBGQl9DTFBTNzExWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyOS1cXHRkZXBlbmRzIG9uIExDRF9DTEFTU19ERVZJQ0VcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMS1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM3PWNvbmZpZyBGQl9TQTExMDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzktXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBBUk0gXFx1MDAyNlxcdTAwMjYgQVJDSF9TQTExMDBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQ5PWNvbmZpZyBGQl9JTVhcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTMtXFx0ZGVwZW5kcyBvbiBMQ0RfQ0xBU1NfREVWSUNFXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTUtXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1OD1jb25maWcgRkJfQ1lCRVIyMDAwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYwLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT1BPUlQgXFx1MDAyNlxcdTAwMjYgKEJST0tFTiB8fCAhU1BBUkM2NClcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYxOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTk1PWNvbmZpZyBGQl9RNDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE5OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yMDAtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjM4PWNvbmZpZyBGQl9GTTJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDAtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBaT1JST1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNDE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjQyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNzA9Y29uZmlnIEZCX09GXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjc0LVxcdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI3NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNzYtXFx0c2VsZWN0IEZCX01BQ01PREVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjgxPWNvbmZpZyBGQl9DT05UUk9MXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjgzLVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgKChQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMikgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyODQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjg1LVxcdHNlbGVjdCBGQl9NQUNNT0RFU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI5MD1jb25maWcgRkJfUExBVElOVU1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yOTItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyOTM6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjk0LVxcdHNlbGVjdCBGQl9NQUNNT0RFU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI5OT1jb25maWcgRkJfVkFMS1lSSUVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDEtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoTUFDIHx8IChQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMikpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjMwMjpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDMtXFx0c2VsZWN0IEZCX01BQ01PREVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzA4PWNvbmZpZyBGQl9DVDY1NTUwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzEwLVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgUFBDMzIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjMxMTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTMxNj1jb25maWcgRkJfQVNJTElBTlRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTgtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzE5OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMyMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzcwPWNvbmZpZyBGQl9NQUNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNzItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBNQUNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzczOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM3NC1cXHRzZWxlY3QgRkJfTUFDTU9ERVNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MDc9Y29uZmlnIEZCX1VWRVNBXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDEwLVxcdGRlcGVuZHMgb24gIVVNTFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0MTE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDEyLVxcdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MjQ9Y29uZmlnIEZCX1ZFU0FcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MjctXFx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NDI4OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQyOS1cXHRzZWxlY3QgU1lTRkJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MzY9Y29uZmlnIEZCX0VGSVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ0MC1cXHRzZWxlY3QgRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0NDE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDQyLVxcdHNlbGVjdCBTWVNGQlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ1Nj1jb25maWcgRkJfR0JFXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDU5LVxcdGRlcGVuZHMgb24gU0dJX0lQMzIgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ2MDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00NjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU2Nj1jb25maWcgRkJfWFZSMjUwMFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU2OC1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBTUEFSQzY0XFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjU2OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU3OS1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IFNQQVJDNjRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTgwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU4MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjEwPWNvbmZpZyBGQl9PUEVOQ09SRVNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MTItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjYxMzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTYzNj1jb25maWcgRkJfQVRNRUxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDEtXFx0c2VsZWN0IEZCX0JBQ0tMSUdIVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NDI6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjQzLVxcdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03NDY9Y29uZmlnIEZCX0k3NDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03NDgtXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NzQ5OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc1MC1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODk0PWNvbmZpZyBGQl9NQVRST1hfTUFWRU5cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04OTYtXFx0ZGVwZW5kcyBvbiBGQl9NQVRST1hfRyBcXHUwMDI2XFx1MDAyNiBGQl9NQVRST1hfSTJDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjg5NzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04OTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTk2NT1jb25maWcgRkJfQVRZMTI4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTY3LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjk2ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NjktXFx0c2VsZWN0IEZCX01BQ01PREVTIGlmIFBQQ19QTUFDXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTE4Nz1jb25maWcgRkJfS1lST1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExODktXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTE5MDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjI5PWNvbmZpZyBGQl9WT09ET08xXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIzMS1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjMyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEzMTE9Y29uZmlnIEZCX0NBUk1JTkVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzEzLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMTQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMxNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTMzNT1jb25maWcgRkJfQVUxMTAwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMzOC1cXHRkZXBlbmRzIG9uIE1JUFNfQUxDSEVNWSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMzOTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzQwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDAxPWNvbmZpZyBGQl9QTUFHX0FBXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwMy1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFRDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0MDQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQwOT1jb25maWcgRkJfUE1BR19CQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTEtXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBUQ1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDEyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MTc9Y29uZmlnIEZCX1BNQUdCX0JcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDE5LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgVENcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQyMDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDI2PWNvbmZpZyBGQl9NQVhJTkVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDI4LVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgTUFDSF9ERUNTVEFUSU9OXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0Mjk6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQzNT1jb25maWcgRkJfRzM2NFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MzctXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoTUlQU19NQUdOVU1fNDAwMCB8fCBPTElWRVRUSV9NNzAwKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDM4OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0NDM9Y29uZmlnIEZCXzY4MzI4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ0NS1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IChNNjgzMjggfHwgTTY4RVozMjggfHwgTTY4VlozMjgpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0NDY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ0Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQ1MT1jb25maWcgRkJfUFhBMTY4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ1NC1cXHRkZXBlbmRzIG9uIENQVV9QWEExNjggfHwgQ1BVX1BYQTkxMCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQ1NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDU2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDYwPWNvbmZpZyBGQl9QWEFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDYyLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQ2MzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDY0LVxcdHNlbGVjdCBWSURFT01PREVfSEVMUEVSUyBpZiBPRlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MTE9Y29uZmlnIEZCX0ZTTF9ESVVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTEzLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRlNMX1NPQ1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTE0OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MTUtXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MzI9Y29uZmlnIEZCX1MzQ1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MzUtXFx0ZGVwZW5kcyBvbiBBUkNIX1MzQzY0WFggfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1MzY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUzNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU5NT1jb25maWcgRkJfSUJNX0dYVDQ1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTk3LVxcdGRlcGVuZHMgb24gRkJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU5ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTk5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjIzPWNvbmZpZyBGQl9YSUxJTlhcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjI1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgKE1JQ1JPQkxBWkUgfHwgQVJDSF9aWU5RIHx8IEFSQ0hfWllOUU1QKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjI2OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2MzI9Y29uZmlnIEZCX0dPTERGSVNIXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNS1cXHRkZXBlbmRzIG9uIEdPTERGSVNIIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjM2OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDA9Y29uZmlnIEZCX0NPQkFMVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBNSVBTX0NPQkFMVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjQzOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDQtXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDU9Y29uZmlnIEZCX1NINzc2MFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDgtXFx0XFx0fHwgQ1BVX1NVQlRZUEVfU0g3NzIwIHx8IENQVV9TVUJUWVBFX1NINzcyMSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY0OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjk4PWNvbmZpZyBGQl9NQjg2MlhYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTcwMS1cXHRkZXBlbmRzIG9uIFBDSSB8fCAoT0YgXFx1MDAyNlxcdTAwMjYgUFBDKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzAyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3Mzc9Y29uZmlnIEZCX0VQOTNYWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MzktXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBBUkNIX0VQOTNYWFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzQwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NDEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NjM9Y29uZmlnIEZCX1NJTVBMRVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjctXFx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzkwPWNvbmZpZyBGQl9TTTcxMlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3OTItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzkzOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3OTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTU4PWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEZCX0RFRkVSUkVEX0lPXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTYyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTYzLVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTEzPWNvbmZpZyBGQl9HRU9ERV9MWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTE1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRkJfR0VPREVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6MTY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTI2PWNvbmZpZyBGQl9HRU9ERV9HWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTI4LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRkJfR0VPREVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6Mjk6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTM5PWNvbmZpZyBGQl9HRU9ERV9HWDFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy00MS1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IEZCX0dFT0RFXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnOjQyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTQzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc9Mj1jb25maWcgTU1QX0ZCXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBGQlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc6NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWctNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnPTI9Y29uZmlnIEZCX09NQVBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnLTUtXFx0ZGVwZW5kcyBvbiBBUkNIX09NQVAxIHx8IChBUk0gXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnOjY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc9NT1tZW51Y29uZmlnIEZCX09NQVAyXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnLTExLVxcdHNlbGVjdCBPTUFQMl9WUkZCIGlmIEFSQ0hfT01BUDIgfHwgQVJDSF9PTUFQM1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc6MTI6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnLTEzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MDAuOTQ0NDU3MzE2WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzcyMDAzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyB0aHJvdWdoIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gY29uZmlndXJlIHRoaXMgZnJhbWVidWZmZXIgc2V0dXAuIFJpZ2h0IG5vdywgYEZCX1NJTVBMRWAgcHVsbHMgaW4gYEZCX0lPTUVNX0hFTFBFUlNgLiBUaGF0IG1ha2VzIHNlbnNlLiBUaGUgcmVhbCB0cmljayBpcyB0byBnZXQgKmJvdGgqIGBGQl9TWVNNRU1fSEVMUEVSU2AgYW5kIGBGQl9JT01FTV9IRUxQRVJTYCwgYW5kIGl0IGxvb2tzIGxpa2UgSSBjYW4gZG8gdGhhdCBieSBlbmFibGluZyBgRkJfVklSVFVBTGAgKmFuZCogYEZCX1NJTVBMRWAuIERvaW5nIHRoYXQgd2lsbCBzZWxlY3QgdGhlIGNvcmUgZnVuY3Rpb25zIEkgbmVlZCBmb3IgYmFzaWMgb3BlcmF0aW9uczogYEZCX1NZU19DT1BZQVJFQWAsIGBGQl9TWVNfRklMTFJFQ1RgLCBgRkJfU1lTX0lNQUdFQkxJVGAsIGFuZCB0aGUgQ0ZCIHZhcmlhbnRzOiBgRkJfQ0ZCX0NPUFlBUkVBYCwgYEZCX0NGQl9GSUxMUkVDVGAsIGBGQl9DRkJfSU1BR0VCTElUYC5cblxuTm93LCBJICphbHNvKiBuZWVkIHRvIGVuc3VyZSBgZmJjb25gIGlzIGVuYWJsZWQsIHNpbmNlIHRoYXQncyB3aGF0J3MgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBmcmFtZWJ1ZmZlciBmdW5jdGlvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGVuYWJsZWQuXG5cbldhaXQsIGBGQl9WSVJUVUFMYCBpcyBhIHRyaXN0YXRlLCBub3QgYSBib29sZWFuLCBzbyBJIHNob3VsZCBqdXN0IGJlIHNwZWNpZnlpbmcgYEZCX1ZJUlRVQUxgIGFuZCBgRkJfU0lNUExFYCwgYW5kIGxldCB0aGUgYnVpbGQgc3lzdGVtIHNvcnQgb3V0IHRoZSBpbnRlcm1lZGlhdGUgc3RhdGVzLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWcgbmFtZXMgcmlnaHQgZm9yIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjA2LjcyMTY2MDU4NVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjE5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vY29uc29sZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc9NDc9Y29uZmlnIERVTU1ZX0NPTlNPTEVfUk9XU1xcbi0tXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTctXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6NTg6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVcXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy01OS1cXHRib29sIFxcXCJGcmFtZWJ1ZmZlciBDb25zb2xlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy02Ny1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzo2ODpjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRV9MRUdBQ1lfQUNDRUxFUkFUSU9OXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRW5hYmxlIGxlZ2FjeSBmYmNvbiBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY29kZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnOjg4OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctODktICAgICAgIGJvb2wgXFxcIk1hcCB0aGUgY29uc29sZSB0byB0aGUgcHJpbWFyeSBkaXNwbGF5IGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzoxMDQ6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT05cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMDUtICAgICAgIGJvb2wgXFxcIkZyYW1lYnVmZmVyIENvbnNvbGUgUm90YXRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMTMtXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6MTE0OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctMTE1LVxcdGJvb2wgXFxcIkZyYW1lYnVmZmVyIENvbnNvbGUgRGVmZXJyZWQgVGFrZW92ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjA2LjgyMzI4ODMwOVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk1MTI2NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBmcmFtZWJ1ZmZlciBvcHRpb25zIGhlcmUuIFllcCwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGRlZmluaXRlbHkgaW4gdGhlIG1peCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQsIG9mIGNvdXJzZSwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgaG9sZCBvbi4uLiBgRkJfU0lNUExFYC4uLiB0aGF0J3MganVzdCBhIGRlZmluaXRpb24sIGlzbid0IGl0PyBJdCdzIGNvbm5lY3RlZCB0byBgY29uZmlnIEZCX1NJTVBMRWAuIE9rYXksIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIExldCdzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEZCX1NJTVBMRWAgYW5kIHNlZSB3aGF0IGl0J3MgdGllZCB0by4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIHRoaXMgZW50aXJlIGNvbmZpZ3VyYXRpb24gcHV6emxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgbGVhdmUgYW55IGNyaXRpY2FsIGNvbXBvbmVudHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjE3MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjExLjYxODQxODc4OVoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9TSU1QTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc2Mi1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2Mzpjb25maWcgRkJfU0lNUExFXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBmcmFtZWJ1ZmZlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoxMS43MjEyMTkyNDNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNDExNDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGFyY2hpdGVjdHVyZS4gSXQgaGluZ2VzIG9uIHdoZXRoZXIgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIFBQQywgQVJNLCBYODYsIE1JUFMsIFNQQVJDLCBSSVNDViwgb3IgYSBjb21waWxlIHRlc3Qgc2V0dXA7IHRoYXQncyB0aGUgY29yZS4gVGhlbiwgYEZCX1ZJUlRVQUxgIGxvb2tzIGxpa2UgaXQnbGwgZ2V0IG1lIHRoZSBgRkJfU1lTTUVNX0hFTFBFUlNgLCB0aGF0IG1ha2VzIHNlbnNlLiBCdXQgd2hhdCBhYm91dCBgRkJfSU9NRU1fSEVMUEVSU2AsIGhvdyBkbyBJIGhhbmRsZSB0aGF0PyBJIGNhbiBqdXN0IHR1cm4gb24gYEZCX1ZFU0FgIG9yIGBGQl9FRklgIG9yIGBGQl9TSU1QTEVgLCBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZW0uIFllYWgsIGxldCdzIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0IGxpc3QgYEZCX1ZJUlRVQUxgLCBgRkJfU0lNUExFYCwgYW5kIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gVGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBiYXNlLlxuXG5Ib2xkIG9uLi4uIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgZm9jdXMgaXMgb24gdGhvc2UgY29yZSBvcGVyYXRpb25zLiBBbmQgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBub3cgYXJlIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuXG5cbkhtbSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYHN5c19jb3B5YXJlYWAgaXMgZXhwb3J0ZWQuIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBhY2Nlc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoxNy4zMzUzMzYzNjJaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MTUzMzI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MKHN5c19jb3B5YXJlYSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MTcuNDMyNDk1NTQ2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjQyNzcwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGRlbHZlIGludG8gdGhpczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuSG1tLCB3aGVyZSBkbyBJIGV2ZW4gYmVnaW4gd2l0aCB0aGlzPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24sIGFuZCB0byBkbyB0aGF0LCBJJ20gdGhpbmtpbmcsIFwiV2FpdCwgbGV0J3MgY2hlY2sgYHN5c2NvcHlhcmVhLmNgLlwiIFRoYXQncyB0aGUgb2J2aW91cyBmaXJzdCBzdGVwLCByaWdodD8gSXQncyBhIGtleSBmdW5jdGlvbiBmb3IgbWVtb3J5IHRyYW5zZmVycy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGZpbGUgd2lsbCBsaWtlbHkgY29udGFpbiB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3Qgb3IgbWF5YmUgdGhlIGZ1bmN0aW9ucyBjYWxsaW5nIGl0LiBUaGlzIGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwgY29tbWVudGVkLiBJIGNhbiBnZXQgc29tZSBjb250ZXh0IHF1aWNrbHkgYW5kIHdvcmsgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMwOTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoyMS4yNTY3NzU3MTdaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMjc4MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM9MTk9dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTI1LX1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYzoyNjpFWFBPUlRfU1lNQk9MKHN5c19jb3B5YXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjIxLjM1MDA1ODYyMloiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzIxMjk4OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyB0aGUgSW5jbHVkZSoqXG5cbk9rYXksIGl0J3MgZXhwb3J0ZWQhIEkga25ldyBpdCBoYWQgdG8gYmUgc29tZXRoaW5nIHNpbXBsZSwgcHJvYmFibHkgYSBmcnVzdHJhdGluZyB0eXBvIG9yIGEgcmVnZXggbWlzdGFrZSBJIG92ZXJsb29rZWQgZWFybGllci4gVGltZSB0byBtb3ZlIG9uLlxuXG5Ob3csIGxldCdzIGNhc3QgYSB3aWRlciBuZXQuIEkgc2hvdWxkIGh1bnQgZm9yIGFueSBvdGhlciBwbGFjZXMgdGhlc2UgaGVhZGVycyBhcmUgcHVsbGVkIGluLCBzcGVjaWZpY2FsbHkgYGZiX2NvcHlhcmVhLmhgLCBgZmJfZmlsbHJlY3QuaGAsIG9yIGBmYl9pbWFnZWJsaXQuaGAuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgZmJfY29weWFyZWEuaGAgaXMgb25seSB1c2VkIGluIGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLCBzbyB0aGF0J3MgY292ZXJlZC4gSG1tLCB3aGF0IGFib3V0IGBmYl9maWxscmVjdC5oYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQyMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoyNi4wNzEzNjA3MDdaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTE3NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXFwiZmJfZmlsbHJlY3QuaFxcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTgtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjI2LjIyMDU0MTgxOFoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxMTQyNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipDb25zaWRlcmluZyBgZmJfaW1hZ2VibGl0LmhgKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCB0aGUgZnJhbWVidWZmZXIgaW1hZ2UgYmxpdHRpbmcgaGVhZGVyLCBgZmJfaW1hZ2VibGl0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgKmRvaW5nKiB3aXRoIHRoaXM/IEFyZSB3ZSBsb29raW5nIGF0IGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBhIHBvcnRhYmlsaXR5IGlzc3VlPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgY29udGV4dHMgd2hlcmUgSSd2ZSBlbmNvdW50ZXJlZCB0aGlzIOKAkyBkaXJlY3QgZnJhbWVidWZmZXIgbWFuaXB1bGF0aW9uLCBncmFwaGljcyBsaWJyYXJ5IGludGVncmF0aW9uLCBkZXZpY2Utc3BlY2lmaWMgZHJpdmVyc+KApiB0aGUgbGlzdCBnb2VzIG9uLiBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byByZWFsbHkgZGlnIGluLiBJIGFzc3VtZSB3ZeKAmXJlIGV4cGxvcmluZyBvcHRpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGFsaWdubWVudCBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzLiBBcmUgd2UgY29uY2VybmVkIHdpdGggcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb25zPyBPciBhcmUgd2UgY29uc2lkZXJpbmcgd2F5cyB0byBzdHJlYW1saW5lIHRoZSBibGl0dGluZyBwcm9jZXNzIGl0c2VsZiwgcGVyaGFwcyB0YXJnZXRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmU/IEdvdHRhIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGFjdHVhbCBnb2FsIGJlZm9yZSBJIGNhbiBvZmZlciBhbnkgaW5zaWdodGZ1bCBjb21tZW50LiBXaGF0J3MgdGhlIGFwcGxpY2F0aW9uIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODgyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzAuMDIxNjg3NzNaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDM1NjM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXFwiZmJfaW1hZ2VibGl0LmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFxcXCJjZmJtZW0uaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ltYWdlYmxpdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9pbWFnZWJsaXQuaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjMwLjIyNjA0ODQ5N1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM3MzYwNTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnJhbWVidWZmZXIgQm91bmRzIENoZWNraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZvY3VzIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBpdCdzIHRob3NlIHNpeCBmdW5jdGlvbnPigJQgYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGVtLlxuXG5MZXQncyByZWNhcCB0aGUgcmF0aW9uYWxlLiBUaGV5J3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAsIHdoaWNoIGFyZSBjb3JlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucy4gSXQncyBhbiBpbmxpbmUgc2l0dWF0aW9uLCB1c2VkIGJ5IHRoZSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIGluIGBjZmJfKmAgYW5kIGBzeXNfKmAuIFRoaXMgYm91bmRzIGNoZWNraW5nIHNwZWNpZmljYWxseSBndWFyZHMgYWdhaW5zdCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBtaXRpZ2F0ZXMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gb3BlcmF0aW9ucywgbGlrZSBzY3JvbGxpbmcgaW4gYGZiY29uYCwgdXNlIGNvb3JkaW5hdGVzIHRoYXQgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24sIHdoaWNoIGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgZnV6emluZywgZm9yIHN1cmUuXG5cblRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcmUgYEZCYCwgYEZCX1ZJUlRVQUxgLCBgRkJfU0lNUExFYCwgYW5kIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYEZCX1ZJUlRVQUxgIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGlzLiBDb25zaWRlcmluZyB0aGF0IGB2ZmJgIHVzZXMgYHN5c19maWxscmVjdGAsIGBzeXNfY29weWFyZWFgLCBhbmQgYHN5c19pbWFnZWJsaXRgLCBpdCBsb29rcyBsaWtlIGl0IGlzLiBJdCdzIHdvcnRoIGRvdWJsZS1jaGVja2luZyBgdmZiLmNgIGp1c3QgdG8gbWFrZSBzdXJlLiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzYuMjYzNDEyNTkxWiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQzNTY5ODAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c19jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDozNi40MTc4MDQ1MDFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MzY2MjQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6XG5cbioqQ2hlY2tpbmcgdGhlIEZyYW1lYnVmZmVyIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwuIExldCdzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGB2ZmIuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGZiX29wc2AgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZHJpdmVyIGFuZCB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUuIEFyZSB3ZSB1c2luZyB0aGUgc3RhbmRhcmQgY2FsbHMsIG92ZXJyaWRpbmcgYW55LCBvciBkZWZpbmluZyBuZXcgb3BlcmF0aW9ucz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGJ1aWxkIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGJyb2FkZXIgc3lzdGVtIGludGVyYWN0aW9uLiBHb3R0YSBiZSByaWdvcm91cyBoZXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzkuODExNDcxNDI5WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0MTA1MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz03OD1zdGF0aWMgaW50IHZmYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy04MC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy04Mi1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz00MjY9c3RhdGljIGludCB2ZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDMtXFx0aW5mby1cXHUwMDNlc2NyZWVuX2J1ZmZlciA9IHZpZGVvbWVtb3J5O1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmM6NDQ0OlxcdGluZm8tXFx1MDAzZWZib3BzID0gXFx1MDAyNnZmYl9vcHM7XFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjM5LjkxMjg4Nzg1M1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1NjAyMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgYHZmYl9vcHNgIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gaXQuIFRoZSBpbW1lZGlhdGUgZ29hbCBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGB2ZmJfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIHRoZSBjb3JlIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBkYXRhIG5lZWRlZCB0byBtYW5hZ2UgdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZGV2aWNlLiBUaGUgbmFtZSBpdHNlbGYgaXMgcHJldHR5IHRlbGxpbmcuIFwiT3BlcmF0aW9uc1wiIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBhIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb24gcG9pbnRlcnMg4oCTIHRoZSBob29rcyB0aGF0IHRoZSB1cHBlciBsYXllcnMgd2lsbCB1c2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmlydHVhbCBmcmFtZWJ1ZmZlci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXnigJlyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBJ4oCZbSB0aGlua2luZyBpbml0aWFsaXphdGlvbiwgZnJhbWVidWZmZXIgYWNjZXNzIChyZWFkaW5nIGFuZCB3cml0aW5nIHBpeGVscyksIHBvc3NpYmx5IHNvbWUgY29udHJvbCBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIHRoZSByZXNvbHV0aW9uLCB2aXJ0dWFsIHNjcmVlbiBzaXplcyBhbmQgcGVyaGFwcyBldmVuIGNvbG9yIGRlcHRocy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSB0eXBlcyBwb2ludGVkIHRvIGJ5IHRoZSBzdHJ1Y3R1cmUgbWVtYmVycy4gSXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyB2aXJ0dWFsIGZyYW1lYnVmZmVyJ3Mgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF04oCZcyBpbnNpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDQuMDM4NDkzOTI1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdmZiX29wcyA9IHtcXG4gIDgyOlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuICA4MzpcXHRcXHRfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19SRFdSLFxcbiAgODQ6XFx0XFx0LmZiX2NoZWNrX3ZhclxcdD0gdmZiX2NoZWNrX3ZhcixcXG4gIDg1OlxcdFxcdC5mYl9zZXRfcGFyXFx0PSB2ZmJfc2V0X3BhcixcXG4gIDg2OlxcdFxcdC5mYl9zZXRjb2xyZWdcXHQ9IHZmYl9zZXRjb2xyZWcsXFxuICA4NzpcXHRcXHQuZmJfcGFuX2Rpc3BsYXlcXHQ9IHZmYl9wYW5fZGlzcGxheSxcXG4gIDg4OlxcdFxcdF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcsXFxuICA4OTpcXHRcXHQuZmJfbW1hcFxcdD0gdmZiX21tYXAsXFxuICA5MDpcXHR9O1xcbiAgOTE6XFx0XFxuICA5MjpcXHQgICAgLypcXG4gIDkzOlxcdCAgICAgKiAgSW50ZXJuYWwgcm91dGluZXNcXG4gIDk0OlxcdCAgICAgKi9cXG4gIDk1OlxcdFxcbiAgOTY6XFx0c3RhdGljIHVfbG9uZyBnZXRfbGluZV9sZW5ndGgoaW50IHhyZXNfdmlydHVhbCwgaW50IGJwcClcXG4gIDk3OlxcdHtcXG4gIDk4OlxcdFxcdHVfbG9uZyBsZW5ndGg7XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdGxlbmd0aCA9IHhyZXNfdmlydHVhbCAqIGJwcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDQuMDM4NTc5ODg1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzQwMjEwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBHcmFwaGljcyBPcGVyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBgX19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBV2AgaW4gcGxheS4gVGhhdCdzIGEgZmFtaWxpYXIgcGF0dGVybiwgdXN1YWxseSBwb2ludGluZyB0b3dhcmRzIGEgZGVmYXVsdCBkcmF3aW5nIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIgc3lzdGVtLiBJdCdzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgYXMgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3MgYXJjaGl0ZWN0dXJlIGxpa2VseSBoYXMgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRyaWxsIGRvd24gb24gdGhhdCBtYWNyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZXhwYW5kcyB0by4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIG1lbW9yeSBvcGVyYXRpb25zIGFuZCBhbGdvcml0aG1zIGludm9sdmVkPyBLbm93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoaXMgbWFjcm8gd2lsbCBiZSBjcml0aWNhbCB0byBhc3Nlc3NpbmcgaG93IHRoaXMgc3lzdGVtIGFjdHVhbGx5IHJlbmRlcnMgZ3JhcGhpY3MgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBwb3RlbnRpYWwgYm90dGxlbmVja3MgbWlnaHQgbGllLiBUaGlzIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQgdG8gb3B0aW1pemUgZm9yIGEgc3BlY2lmaWMgZ3JhcGhpY3Mgd29ya2xvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTUyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDo0OC4yMTI2MDc1MjVaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzk0MTUwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19EUkFXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvZmIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ZiLmg9NTc3PWV4dGVybiBzc2l6ZV90IGZiX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmluY2x1ZGUvbGludXgvZmIuaC01ODMtXFxuaW5jbHVkZS9saW51eC9mYi5oOjU4NDojZGVmaW5lIF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcgXFxcXFxcbmluY2x1ZGUvbGludXgvZmIuaC01ODUtXFx0LmZiX2ZpbGxyZWN0XFx0PSBzeXNfZmlsbHJlY3QsIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDguMzM2NTU0NzI3WiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2Mzc3OTM5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHRoaW5rIGFib3V0IHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipUaGlua2luZyBUaHJvdWdoIHRoZSBGcmFtZWJ1ZmZlciBPcGVyYXRpb25zKipcblxuQWgsIHJpZ2h0LiBJIHNlZSBpdCBub3cuIFdoZW4gd2UncmUgY29uc2lkZXJpbmcgdGhlIGZyYW1lYnVmZmVyIGltcGxlbWVudGF0aW9ucywgdGhlIGV4cGFuc2lvbiB1bmZvbGRzIGNsZWFybHk6IHRoZSBhYnN0cmFjdCBmdW5jdGlvbiBjYWxscyByZXNvbHZlIHRvIGBzeXNfZmlsbHJlY3RgLCBgc3lzX2NvcHlhcmVhYCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gVGhpcyBjb25maXJtcyB0aGUgaW5pdGlhbCBodW5jaC4gYEZCX1ZJUlRVQUxgIGlzIHByZWNpc2VseSB3aGF0IHdlIHdhbnQgaW4gdGhpcyBzY2VuYXJpbyDigJMgaXQgaXMgcGVyZmVjdGx5IHN1aXRlZCBmb3IgdGhpcyBwdXJwb3NlIGFuZCBJIGNhbiBzZWUgaXRzIGFkdmFudGFnZXMuXG5cblRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGBGQl9TSU1QTEVgPyBXZSBoYXZlIHRvIGV2YWx1YXRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zIGFuZCB0aGVpciByZXF1aXJlbWVudHMgYW5kIHdoZXRoZXIgd2UgbmVlZCB0aGUgbW9yZSBhZHZhbmNlZCBjYXBhYmlsaXRpZXMgb2YgYSB2aXJ0dWFsIGZyYW1lYnVmZmVyIG9yIGlmIGEgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpcyBzdWZmaWNpZW50LiBUaGlzIGlzIHRoZSBtb3JlIGNydWNpYWwgcG9pbnQgb2YgZXZhbHVhdGlvbiwgYXMgdGhlIHVzZSBvZiBvbmUgdnMgdGhlIG90aGVyIGhhcyBzaWduaWZpY2FudCBjb25zZXF1ZW5jZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NTYuOTc0MzUyMzg4WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAxMjM3NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fRkJfREVGQVVMVF9JT01FTV9PUFNfRFJBV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjU3LjIzNDQ4MjI1MVoiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkwNjc2NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBmYl9vcHNgIGluIGBzaW1wbGVmYi5jYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgc2ltcGxlZmIuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIGBmYl9vcHNgIHN0cnVjdHVyZS4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnJhbWVidWZmZXIgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUg4oCTIHRoaW5ncyBsaWtlIGBmYl9maWxscmVjdGAsIGBmYl9jb3B5YXJlYWAsIGBmYl9pbWFnZWJsaXRgIOKAkyB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9uIGZ1bmN0aW9ucy4gV2hhdCBjdXN0b21pemF0aW9ucyBvciBzcGVjaWFsIGhhbmRsaW5nIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHNpbXBsZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaW50cm9kdWNlPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgdmlydHVhbCBmcmFtZWJ1ZmZlciB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3Igbm90ZXdvcnRoeSBkZXRhaWxzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zPyBJJ2xsIGFsc28gY2hlY2sgZm9yIGFueSBjb21tZW50cyBleHBsYWluaW5nIHRoZSBkZXNpZ24gY2hvaWNlcyBoZXJlLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50IHRvIHNlZSB0aGUgZnVuY3Rpb25hbCBiYWNrYm9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2MDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NTowMS40MjUxNjE0OVoiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyOTk5NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jPTk2PXN0YXRpYyB2b2lkIHNpbXBsZWZiX2RldGFjaF9nZW5wZHModm9pZCAqcmVzKTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy05OC0vKlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzo5OTogKiBmYl9vcHMuZmJfZGVzdHJveSBpcyBjYWxsZWQgYnkgdGhlIGxhc3QgcHV0X2ZiX2luZm8oKSBjYWxsIGF0IHRoZSBlbmRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTAwLSAqIG9mIHVucmVnaXN0ZXJfZnJhbWVidWZmZXIoKSBvciBmYl9yZWxlYXNlKCkuIERvIGFueSBjbGVhbnVwIGhlcmUuXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM9MTAyPXN0YXRpYyB2b2lkIHNpbXBsZWZiX2Rlc3Ryb3koc3RydWN0IGZiX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzoxMTk6c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ltcGxlZmJfb3BzID0ge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy0xMjAtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYz01MzI9c3RhdGljIGludCBzaW1wbGVmYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM6NjAxOlxcdGluZm8tXFx1MDAzZWZib3BzID0gXFx1MDAyNnNpbXBsZWZiX29wcztcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtNjAyLVxcdGluZm8tXFx1MDAzZXNjcmVlbl9iYXNlID0gaW9yZW1hcF93YyhpbmZvLVxcdTAwM2VmaXguc21lbV9zdGFydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTU6MDEuNTM4MTY1NTUzWiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzk5MjQ5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGBzaW1wbGVmYl9vcHNgKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbWluZCBpcywgXCJMZXQncyBjcmFjayBvcGVuIGBzaW1wbGVmYl9vcHNgLlwiIE5vIGZsdWZmLCBqdXN0IGdldHRpbmcgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBtb2R1bGUsIGl0cyBwdXJwb3NlLCBhbmQgaXRzIGludGVybmFsIG1lY2hhbmlzbXMuIFRoZSBuYW1lIHN1Z2dlc3RzIHRoaXMgbWlnaHQgYmUgYSByZWxhdGl2ZWx5IGJhc2ljIG9yIGZvY3VzZWQgc2V0IG9mIG9wZXJhdGlvbnMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZnJhbWVidWZmZXIsIHBlcmhhcHMgYSBzdHJpcHBlZC1kb3duIGltcGxlbWVudGF0aW9uIG9yIGEgdXRpbGl0eSBsYXllci4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhcmVhcyBvZiBpbnRlcmVzdDogY29sb3IgZGVwdGggaGFuZGxpbmcsIGFkZHJlc3NpbmcgbWVtb3J5IGRpcmVjdGx5LCBzY3JlZW4gYnVmZmVyIG1hbmlwdWxhdGlvbiwgYW55IGFzc29jaWF0ZWQgbG9ja2luZyBtZWNoYW5pc21zLi4uIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB3b3JraW5nIGF0IHRoaXMgbGV2ZWwuIExldCdzIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gcmVmbGVjdHMgbXkgaW5pdGlhbCBleHBlY3RhdGlvbnMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NTowNS44MTgwOTQ2NzVaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTksXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ltcGxlZmJfb3BzID0ge1xcbiAxMjA6XFx0XFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gMTIxOlxcdFxcdEZCX0RFRkFVTFRfSU9NRU1fT1BTLFxcbiAxMjI6XFx0XFx0LmZiX2Rlc3Ryb3lcXHQ9IHNpbXBsZWZiX2Rlc3Ryb3ksXFxuIDEyMzpcXHRcXHQuZmJfc2V0Y29scmVnXFx0PSBzaW1wbGVmYl9zZXRjb2xyZWcsXFxuIDEyNDpcXHR9O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRzdGF0aWMgc3RydWN0IHNpbXBsZWZiX2Zvcm1hdCBzaW1wbGVmYl9mb3JtYXRzW10gPSBTSU1QTEVGQl9GT1JNQVRTO1xcbiAxMjc6XFx0XFxuIDEyODpcXHRzdHJ1Y3Qgc2ltcGxlZmJfcGFyYW1zIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTU6MDUuODE4MjEyNjU1WiIsIlNlcSI6ODEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjUzNDg4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJhbWVidWZmZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZyYW1lYnVmZmVyLXJlbGF0ZWQgcGF0Y2ggaGVyZS4gIGBGQl9ERUZBVUxUX0lPTUVNX09QU2AgaXMga2V5LCBhbmQgaXQgZXhwYW5kcyB0byB0aGUgcmVhZC93cml0ZSBhbmQgZHJhdyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdXNpbmcgYGNmYl9maWxscmVjdGAsIGBjZmJfY29weWFyZWFgLCBhbmQgYGNmYl9pbWFnZWJsaXRgLiAgVGhhdCdzIGFsbCBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBzdHVmZiwgYW5kLCBnaXZlbiB0aGF0LCBgRkJfU0lNUExFYCBzaG91bGQgYWJzb2x1dGVseSBiZSByZWxldmFudCwgdG9vLlxuXG5TbywgaGVyZSdzIG15IHN1bW1hcml6ZWQgYW5hbHlzaXMgZm9yIGZ1enppbmcgcHVycG9zZXM6XG5cbiogICAqKldvcnRoRnV6emluZzogVFJVRSoqLiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlLlxuKiAgICoqRW5hYmxlZCBDb25maWd1cmF0aW9uczoqKiBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBUaGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgd291bGQgbGlrZWx5IGV4cG9zZSB0aGUgdnVsbmVyYWJsZSBjb2RlIHBhdGhzLlxuKiAgICoqRm9jdXNlZCBTeW1ib2xzOioqIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFyZSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIHRhcmdldGVkIGJ5IHRoZSBwYXRjaCwgcHJlc3VtYWJseSB0aGUgb25lcyByZXNwb25zaWJsZSBmb3IgdGhlIGJvdW5kcyBjaGVja3MuXG5cblRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBhYm91dCBib3VuZHMgY2hlY2tpbmcgaW4gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgaXQncyBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGdvIHBhc3QgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbiBsaW1pdHMuIFRob3NlIGBjZmJfKmAgYW5kIGBzeXNfKmAgZnVuY3Rpb25zIGFyZSwgY3JpdGljYWxseSwgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcy4gVGhleSdyZSB3aGF0IGdldCB1c2VkIHdoZW4gbW9yZSBvcHRpbWl6ZWQgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgcGF0aHMgYXJlbid0IGF2YWlsYWJsZSwgYW5kIHRoYXQgaW5jbHVkZXMgdGhvc2UgcmVhY2hhYmxlIHRocm91Z2ggY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXR5LiBJdCBpcyBjb3JyZWN0aW5nIGFuIG9idmlvdXMgc2VjdXJpdHkgcmlzay4gV2UgbmVlZCB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgdGhlIGZpeCBpcyBjb21wbGV0ZSBhbmQgcm9idXN0LiBUaGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJIHdpbGwgbm90ZSB0byBiZSBzdXJlIHRvIGZvY3VzIG9uIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3RscyB3aGVuIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjE3LCJPdXRwdXRUb2tlbnMiOjE4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU1OjEyLjY0MzU2NDM0WiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NTc5MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGQlwiLFxuICAgIFwiRkJfVklSVFVBTFwiLFxuICAgIFwiRkJfU0lNUExFXCIsXG4gICAgXCJGUkFNRUJVRkZFUl9DT05TT0xFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZiX2NvcHlhcmVhXCIsXG4gICAgXCJzeXNfY29weWFyZWFcIixcbiAgICBcImNmYl9maWxscmVjdFwiLFxuICAgIFwic3lzX2ZpbGxyZWN0XCIsXG4gICAgXCJjZmJfaW1hZ2VibGl0XCIsXG4gICAgXCJzeXNfaW1hZ2VibGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMgKGZiX2NvcHlhcmVhLCBmYl9maWxscmVjdCwgZmJfaW1hZ2VibGl0KSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyAoY2ZiXyogYW5kIHN5c18qKSwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgZnJhbWVidWZmZXIgY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowtlm84[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-22 17:15:48 +0000 UTC FinishedAt: 2026-07-22 17:55:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FB", "FB_VIRTUAL", "FB_SIMPLE", "FRAMEBUFFER_CONSOLE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1590cf0329716306e948a8fc29f1d3ee87d3989f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "FB", "FB_VIRTUAL", "FB_SIMPLE", "FRAMEBUFFER_CONSOLE" ], "series_id": "21e89343-2393-43e2-b99e-d8ce5ff32663" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cfb_copyarea", "sys_copyarea", "cfb_fillrect", "sys_fillrect", "cfb_imageblit", "sys_imageblit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZCJiMzNDssCiAgICAmIzM0O0ZCX1ZJUlRVQUwmIzM0OywKICAgICYjMzQ7RkJfU0lNUExFJiMzNDssCiAgICAmIzM0O0ZSQU1FQlVGRkVSX0NPTlNPTEUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjZmJfY29weWFyZWEmIzM0OywKICAgICYjMzQ7c3lzX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O2NmYl9maWxscmVjdCYjMzQ7LAogICAgJiMzNDtzeXNfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7Y2ZiX2ltYWdlYmxpdCYjMzQ7LAogICAgJiMzNDtzeXNfaW1hZ2VibGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzM4OWVkNDIzNzEyNzE4MTA1OWZiZjZlOTc3MzE5ODYyOTdlNGNiNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDIyIDE3OjUwOjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmhcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxuQEAgLTM4Niw2ICYjNDM7Mzg2LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhXG4gXHRzdHJ1Y3QgZmJfYWRkcmVzcyBzcmMgPSBkc3Q7XG4gXHRib29sIHJldl9jb3B5ID0gKGR5IFx1MDAzZSBzeSkgfHwgKGR5ID09IHN5IFx1MDAyNlx1MDAyNiBhcmVhLVx1MDAzZWR4IFx1MDAzZSBhcmVhLVx1MDAzZXN4KTtcbiBcbiYjNDM7XHRpZiAoYXJlYS1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICBhcmVhLVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNlc3ggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgYXJlYS1cdTAwM2VzeSBcdTAwM2U9IHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR4IHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNlaGVpZ2h0IFx1MDAzZSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR5IHx8XG4mIzQzO1x0ICAgIGFyZWEtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3ggfHxcbiYjNDM7XHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3kpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKHJldl9jb3B5KSB7XG4gXHRcdGR5ICYjNDM7PSBoZWlnaHQgLSAxO1xuIFx0XHRzeSAmIzQzOz0gaGVpZ2h0IC0gMTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaCBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXG5pbmRleCBmMzY2NjcwYTUzYWY4Mi4uMzdmNTVhZGIyZTZmMDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhcbkBAIC0yNjEsNiAmIzQzOzI2MSwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfZmlsbHJlY3Qoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9maWxscmVjdCAqcmVjdFxuIFx0c3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApO1xuIFx0c3RydWN0IGZiX3BhdHRlcm4gcGF0dGVybjtcbiBcbiYjNDM7XHRpZiAocmVjdC1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuJiM0MztcdCAgICByZWN0LVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4mIzQzO1x0ICAgIHJlY3QtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHggfHxcbiYjNDM7XHQgICAgcmVjdC1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZmJfYWRkcmVzc19mb3J3YXJkKFx1MDAyNmRzdCwgcmVjdC1cdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgcmVjdC1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXHUwMDNlY29sb3JdIDogcmVjdC1cdTAwM2Vjb2xvcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXG5pbmRleCAzYjJiYjQ5NDY1MDVjZS4uNWVjMTdkN2I5OTMzOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxuQEAgLTQ4Niw2ICYjNDM7NDg2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXG4gXHRzdHJ1Y3QgZmJfcmV2ZXJzZSByZXZlcnNlID0gZmJfcmV2ZXJzZV9pbml0KHApO1xuIFx0Y29uc3QgdTMyICpwYWxldHRlID0gZmJfcGFsZXR0ZShwKTtcbiBcbiYjNDM7XHRpZiAoaW1hZ2UtXHUwMDNlZHggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgaW1hZ2UtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbiYjNDM7XHQgICAgaW1hZ2UtXHUwMDNld2lkdGggXHUwMDNlIHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIGltYWdlLVx1MDAzZWR4IHx8XG4mIzQzO1x0ICAgIGltYWdlLVx1MDAzZWhlaWdodCBcdTAwM2UgcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIC0gaW1hZ2UtXHUwMDNlZHkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0ZmJfYWRkcmVzc19mb3J3YXJkKFx1MDAyNmRzdCwgaW1hZ2UtXHUwMDNlZHkgKiBiaXRzX3Blcl9saW5lICYjNDM7IGltYWdlLVx1MDAzZWR4ICogYnBwKTtcbiBcbiBcdGlmIChpbWFnZS1cdTAwM2VkZXB0aCA9PSAxKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGQiYjMzQ7LAogICAgJiMzNDtGQl9WSVJUVUFMJiMzNDssCiAgICAmIzM0O0ZCX1NJTVBMRSYjMzQ7LAogICAgJiMzNDtGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZiX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O3N5c19jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAgICYjMzQ7c3lzX2ltYWdlYmxpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucyAoZmJfY29weWFyZWEsIGZiX2ZpbGxyZWN0LCBmYl9pbWFnZWJsaXQpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiByZW5kZXJpbmcgY29vcmRpbmF0ZXMgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIChjZmJfKiBhbmQgc3lzXyopLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzM4OWVkNDIzNzEyNzE4MTA1OWZiZjZlOTc3MzE5ODYyOTdlNGNiNApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVsIDIyIDE3OjUwOjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaAppbmRleCA1M2YxZDUzODVjNmU0MS4uZjRmYzg2YTUxNGNiNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oCkBAIC0zODYsNiAmIzQzOzM4NiwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYQogCXN0cnVjdCBmYl9hZGRyZXNzIHNyYyA9IGRzdDsKIAlib29sIHJldl9jb3B5ID0gKGR5ICZndDsgc3kpIHx8IChkeSA9PSBzeSAmYW1wOyZhbXA7IGFyZWEtJmd0O2R4ICZndDsgYXJlYS0mZ3Q7c3gpOwogCiYjNDM7CWlmIChhcmVhLSZndDtkeCAmZ3Q7PSBwLSZndDt2YXIueHJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtkeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtzeCAmZ3Q7PSBwLSZndDt2YXIueHJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDtzeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBhcmVhLSZndDt3aWR0aCAmZ3Q7IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgLSBhcmVhLSZndDtkeCB8fAomIzQzOwkgICAgYXJlYS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtJmd0O2R5IHx8CiYjNDM7CSAgICBhcmVhLSZndDt3aWR0aCAmZ3Q7IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgLSBhcmVhLSZndDtzeCB8fAomIzQzOwkgICAgYXJlYS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtJmd0O3N5KQomIzQzOwkJcmV0dXJuOwomIzQzOwogCWlmIChyZXZfY29weSkgewogCQlkeSAmIzQzOz0gaGVpZ2h0IC0gMTsKIAkJc3kgJiM0Mzs9IGhlaWdodCAtIDE7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaCBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oCmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmgKQEAgLTI2MSw2ICYjNDM7MjYxLDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0CiAJc3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApOwogCXN0cnVjdCBmYl9wYXR0ZXJuIHBhdHRlcm47CiAKJiM0MzsJaWYgKHJlY3QtJmd0O2R4ICZndDs9IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIHJlY3QtJmd0O2R5ICZndDs9IHAtJmd0O3Zhci55cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIHJlY3QtJmd0O3dpZHRoICZndDsgcC0mZ3Q7dmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtJmd0O2R4IHx8CiYjNDM7CSAgICByZWN0LSZndDtoZWlnaHQgJmd0OyBwLSZndDt2YXIueXJlc192aXJ0dWFsIC0gcmVjdC0mZ3Q7ZHkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJZmJfYWRkcmVzc19mb3J3YXJkKCZhbXA7ZHN0LCByZWN0LSZndDtkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgcmVjdC0mZ3Q7ZHggKiBicHApOwogCiAJcGF0dGVybi5waXhlbHMgPSBwaXhlbF90b19wYXQoYnBwLCBwYWxldHRlID8gcGFsZXR0ZVtyZWN0LSZndDtjb2xvcl0gOiByZWN0LSZndDtjb2xvcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmgKaW5kZXggM2IyYmI0OTQ2NTA1Y2UuLjVlYzE3ZDdiOTkzMzlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oCkBAIC00ODYsNiAmIzQzOzQ4NiwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmJfaW1hZ2VibGl0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQogCXN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7CiAJY29uc3QgdTMyICpwYWxldHRlID0gZmJfcGFsZXR0ZShwKTsKIAomIzQzOwlpZiAoaW1hZ2UtJmd0O2R4ICZndDs9IHAtJmd0O3Zhci54cmVzX3ZpcnR1YWwgfHwKJiM0MzsJICAgIGltYWdlLSZndDtkeSAmZ3Q7PSBwLSZndDt2YXIueXJlc192aXJ0dWFsIHx8CiYjNDM7CSAgICBpbWFnZS0mZ3Q7d2lkdGggJmd0OyBwLSZndDt2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtJmd0O2R4IHx8CiYjNDM7CSAgICBpbWFnZS0mZ3Q7aGVpZ2h0ICZndDsgcC0mZ3Q7dmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLSZndDtkeSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlmYl9hZGRyZXNzX2ZvcndhcmQoJmFtcDtkc3QsIGltYWdlLSZndDtkeSAqIGJpdHNfcGVyX2xpbmUgJiM0MzsgaW1hZ2UtJmd0O2R4ICogYnBwKTsKIAogCWlmIChpbWFnZS0mZ3Q7ZGVwdGggPT0gMSkKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjcwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZyYW1lYnVmZmVyIERyYXdpbmcgRnVuY3Rpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YCBpbiB0aG9zZSBjb3JlIGZyYW1lYnVmZmVyIGhlYWRlcnMsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2AuIFRob3NlIGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBzbyB0aGV5JiMzOTtyZSBwcm9iYWJseSB1c2VkIGFjcm9zcyBhIGJ1bmNoIG9mIGZyYW1lYnVmZmVyIGRyaXZlcnMsIHdoaWNoIG1lYW5zIGEgY2hhbmdlIGhlcmUgaGFzIGEgcG90ZW50aWFsbHkgYnJvYWQgaW1wYWN0LiBUaGUga2V5IGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGJvdW5kcyBjaGVja2luZy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgZHJhd2luZyByb3V0aW5lcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGhvdyB3aWRlbHkgdGhlc2UgYXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgaW1wYWN0IGFuZCBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0zNz1jb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQyLVx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93biAoYWNjZWxlcmF0ZWQpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYz00NT1zdGF0aWMgdm9pZCBiaXRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9iaXRibGl0LmMtNDcte1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo0ODpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy00OS1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTU2LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo1NzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTU4LX1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfY29weWFyZWEuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxOTp2b2lkIGNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTI5LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzA6XHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMxLX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oPTM0OD1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgZmJfY29weShzdHJ1Y3QgZmJfYWRkcmVzcyAqZHN0LCBzdHJ1Y3QgZmJfYWRkcmVzcyAqc3JjLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3NS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oOjM3NjpzdGF0aWMgaW5saW5lIHZvaWQgZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3Ny17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg9MTI0PXN0YXRpYyBpbmxpbmUgaW50IG1vbm9fY29sKGNvbnN0IHN0cnVjdCBmYl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3Mi0gKiAmIzQzOyByZWFkIHdoYXQmIzM5O3MgYWxyZWFkeSByZW5kZXJlZCBvbiB0aGUgc2NyZWVuIGFuZFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg6MTczOiAqICAgICB3cml0ZSBpdCBpbiBhIGRpZmZlcmVudCBwbGFjZSAodGhpcyBpcyBjZmJfY29weWFyZWEoKSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3NC0gKiAmIzQzOyByZS1yZW5kZXIgdGhlIHRleHQgdG8gdGhlIHNjcmVlblxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYz02ND1zdGF0aWMgdm9pZCBjY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy02Ny1cdHN0cnVjdCBmYmNvbl9wYXIgKnBhciA9IGluZm8tXHUwMDNlZmJjb25fcGFyO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jOjY4Olx0c3RydWN0IGZiX2NvcHlhcmVhIGFyZWE7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjktXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jLTc3LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jOjc4Olx0aW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy03OS19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmM9NDk9c3RhdGljIHZvaWQgY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTUyLVx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cdTAwM2VmYmNvbl9wYXI7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo1MzpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNTQtXHR1MzIgdnhyZXMgPSBHRVRWWFJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo2MzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYy02NC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmM9NDg9c3RhdGljIHZvaWQgdWRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jLTUxLVx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cdTAwM2VmYmNvbl9wYXI7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo1MjpcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNTMtXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXHUwMDNlcCwgaW5mbyk7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo2MzpcdGluZm8tXHUwMDNlZmJvcHMtXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXHUwMDI2YXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy02NC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2NvcHlhcmVhLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTk6dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTIwLXtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMy1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjI0Olx0ZmJfY29weWFyZWEocCwgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgaW5saW5lIGZ1bmN0aW9ucyBpbiB0aGUgaGVhZGVycywgd2hpY2ggYXJlIHRoZW4gdXNlZCBieSBmdW5jdGlvbnMgbGlrZSBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGFuZCBzbyBvbi4gVGhlc2UgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQuIFRoZSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggYGlvY3RsKGZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAuLi4pYCBiZWNhdXNlIHRoYXQgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIHdoaWNoIHNldHMgdXAgYSBwb3NzaWJsZSB3YXkgdG8gaW5mbHVlbmNlIHJlbmRlcmluZy4gVGhlbiB0aGVyZSBpcyBgaW9jdGwoZmQsIEZCSU9QQU5fRElTUExBWSwgLi4uKWAgd2hpY2ggcmVsaWVzIG9uIHRoZSBgaW5mby0mZ3Q7ZmJvcHMtJmd0O2ZiX2NvcHlhcmVhKGluZm8sICZhbXA7YXJlYSlgIGFuZCBvdGhlciBtZXRob2RzIG9mIHdyaXRpbmcgdG8gdGhlIGZyYW1lYnVmZmVyLgoKSGFuZyBvbuKApiBkb2VzIGBGQklPUEFOX0RJU1BMQVlgICpkaXJlY3RseSogY2FsbCBgZmJfY29weWFyZWFgPyBObywgbm8sIGl0IGRvZXNuJiMzOTt0LiBCdXQgYGZiY29uYCwgdGhlIGNvbnNvbGUgZHJpdmVyLCBkZWZpbml0ZWx5ICpkb2VzKiBjYWxsIGl0LCBwYXJ0aWN1bGFybHkgZHVyaW5nIHNjcm9sbGluZyBhbmQgdGV4dCBtb3ZlbWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AgaW9jdGwgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIHZpcnR1YWwgc2NyZWVuIHNpemUsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciB0aGluZyB0byBrZWVwIGluIG1pbmQuCgpJcyB0aGVyZSBhbnkgKm90aGVyKiBpb2N0bCB0aGF0IG1pZ2h0IGRpcmVjdGx5IHVzZSBgZmJfY29weWFyZWFgPyBObywgaXQgbG9va3MgbGlrZSBgZmJjb25gIGlzIHRoZSBwcmltYXJ5IGRpcmVjdCBjb25zdW1lciwgYXMgZmFyIGFzIEkgY2FuIHRlbGwuIEFscmlnaHQsIHNvIGBmYmNvbmAgaXMgYSBjb25zb2xlIGRyaXZlciwgdGhhdCYjMzk7cyBjcnVjaWFsLiBTaW5jZSBpdCYjMzk7cyBhIGNvbnNvbGUgZHJpdmVyLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGJlZW4gZnV6emVkIGJ5IHN5emthbGxlciwgd2hpY2ggc2hvdWxkIGdpdmUgdXMgc29tZSBnb29kIHRlc3QgY2FzZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKRmluYWxseSwgY291bGQgdGhlc2UgZnVuY3Rpb25zIGFsc28gYmUgY2FsbGVkIHRocm91Z2ggb3RoZXIgYGZibWVtYCBpb2N0bHM/IFByb2JhYmx5LCBzbyBuZWVkIHRvIGxvb2sgYXQgYGZibWVtLmNgIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgaW50ZXJlc3RpbmcgZGF0YSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgRnJhbWVidWZmZXIgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zIGFyZSB3b3JraW5nIHVuZGVyIHRoZSBob29kLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gemVybyBpbiBvbiBgZmJfZmlsbHJlY3RgIGFuZCBgZmJfaW1hZ2VibGl0YCB3aXRoaW4gYGZibWVtLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY29yZSBmdW5jdGlvbnMgaGFuZGxlIHRoZSBiYXNpYyB0YXNrcyBvZiBmaWxsaW5nIHJlY3RhbmdsZXMgYW5kIGJsaXR0aW5nIGltYWdlcyB0byB0aGUgZnJhbWVidWZmZXIuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3IgcGl4ZWwgbWFuaXB1bGF0aW9uLCBhbmQgYW55IHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIG9yLCBxdWl0ZSBmcmFua2x5LCBkZWJ1Z2dpbmcgdGhhdCBJIG1pZ2h0IG5lZWQgdG8gYWRkcmVzcyBsYXRlci4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgc3R1ZmY7IHVuZGVyc3RhbmRpbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSByZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfZmlsbHJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTgwOQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLgoKKipJbnZlc3RpZ2F0aW5nIENvcHkgQXJlYSBGdW5jdGlvbiBDYWxsZXJzKioKCkhtbSwgc28gYGZiX2NvcHlhcmVhYCBjYWxscyBgY2ZiX2NvcHlhcmVhYCwgYW5kIGFsc28gYHN5c19jb3B5YXJlYWAuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgZnVuY3Rpb25zIGFuZCB3aGVyZSBgY2ZiX2NvcHlhcmVhYCBpcyAqYWN0dWFsbHkqIHVzZWQuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaGVyZS4gTGV0JiMzOTtzIHNlZSB3aGVyZSB0aGF0IGBjZmJfY29weWFyZWFgIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGZyb20uIFRoYXQgc2hvdWxkIHJldmVhbCBhIGxvdC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIGZ1bmN0aW9uIGNhbGwuIFJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGludG8gdGhlIGNvZGUgYW5kIHN0YXJ0IGxvb2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmYl9jb3B5YXJlYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYz05MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXJrZmJfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYy05NDEtXHQuZmJfZmlsbHJlY3RcdD0gYXJrZmJfZmlsbHJlY3QsXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Fya2ZiLmM6OTQyOlx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYy05NDMtXHQuZmJfaW1hZ2VibGl0XHQ9IGFya2ZiX2ltYWdlYmxpdCxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM9MjQ1OD1zdGF0aWMgdm9pZCBhdGFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXRhZmIuYy0yNDY2LVx0aWYgKGluZm8tXHUwMDNldmFyLmJpdHNfcGVyX3BpeGVsID09IDE2KSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM6MjQ2NzpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9hdGFmYi5jLTI0NjgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYz0xOTk9dm9pZCBhdHlmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jLTIwOS1cdGlmICghcGFyLVx1MDAzZWFjY2VsX2ZsYWdzKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYzoyMTA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jLTIxMS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jPTEzNT12b2lkIHJhZGVvbmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvcmFkZW9uX2FjY2VsLmMtMTQ5LVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYzoxNTA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jLTE1MS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYz0xNzcwPXN0YXRpYyB2b2lkIGNpcnJ1c2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgwLVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmM6MTc4MTpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jaXJydXNmYi5jLTE3ODItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0zNz1jb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQyLVx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93biAoYWNjZWxlcmF0ZWQpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxOTp2b2lkIGNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMxLX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oPTEyND1zdGF0aWMgaW5saW5lIGludCBtb25vX2NvbChjb25zdCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzItICogJiM0MzsgcmVhZCB3aGF0JiMzOTtzIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIHNjcmVlbiBhbmRcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oOjE3MzogKiAgICAgd3JpdGUgaXQgaW4gYSBkaWZmZXJlbnQgcGxhY2UgKHRoaXMgaXMgY2ZiX2NvcHlhcmVhKCkpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzQtICogJiM0MzsgcmUtcmVuZGVyIHRoZSB0ZXh0IHRvIHRoZSBzY3JlZW5cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM9MTg3PWN5YmVyMjAwMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbilcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmMtMTkzLVx0aWYgKCEoY2ZiLVx1MDAzZWZiLnZhci5hY2NlbF9mbGFncyBcdTAwMjYgRkJfQUNDRUxGX1RFWFQpKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM6MTk0Olx0XHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jPTUyOD1zdGF0aWMgdm9pZCBmZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNS1cdCAgICBhcmVhLVx1MDAzZWR5ID09IGFyZWEtXHUwMDNlc3kpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZmZiLmM6NTM2Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmM9MzI2PXZvaWQgaTgxMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbikgXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9pODEwL2k4MTBfYWNjZWwuYy0zMzItXHQgICAgcGFyLVx1MDAzZWRlcHRoID09IDQpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmM6MzMzOlx0XHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmMtMzM0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYz0xMTM9dm9pZCBtYXRyb3hfY2ZiWF9pbml0KHN0cnVjdCBtYXRyb3hfZmJfaW5mbyAqbWluZm8pXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYy0xMjMtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jOjEyNDpcdG1pbmZvLVx1MDAzZWZib3BzLmZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYy0xMjUtXHRtaW5mby1cdTAwM2VmYm9wcy5mYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTI5ND1zdGF0aWMgdm9pZCBtYXRyb3hmYl9jZmI0X2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvKiBpbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEqIGFyZWEpIHtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTI5Ny1cdGlmICgoYXJlYS1cdTAwM2VzeCB8IGFyZWEtXHUwMDNlZHggfCBhcmVhLVx1MDAzZXdpZHRoKSBcdTAwMjYgMSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmM6Mjk4Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTI5OS1cdGVsc2Vcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21iODYyeHgvbWI4NjJ4eGZiX2FjY2VsLmM9MzAyPXZvaWQgbWI4NjJ4eGZiX2luaXRfYWNjZWwoc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9vcHMgKmZib3BzLCBpbnQgeHJlcylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21iODYyeHgvbWI4NjJ4eGZiX2FjY2VsLmMtMzA3LVx0XHRmYm9wcy1cdTAwM2VmYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWI4NjJ4eC9tYjg2Mnh4ZmJfYWNjZWwuYzozMDg6XHRcdGZib3BzLVx1MDAzZWZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwOS1cdFx0ZmJvcHMtXHUwMDNlZmJfaW1hZ2VibGl0ID0gY2ZiX2ltYWdlYmxpdDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmM9MTUwOT1uZW9mYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYy0xNTE4LVx0XHRkZWZhdWx0OlxuZHJpdmVycy92aWRlby9mYmRldi9uZW9mYi5jOjE1MTk6XHRcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9uZW9mYi5jLTE1MjAtXHRcdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYz0yOTg9dm9pZCBudmlkaWFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICpyZWdpb24pXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDUtXHRpZiAocGFyLVx1MDAzZWxvY2t1cCkge1xuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYzozMDY6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCByZWdpb24pO1xuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L252aWRpYS9udmlkaWEuYz02MTI9c3RhdGljIGludCBudmlkaWFmYl9zZXRfcGFyKHN0cnVjdCBmYl9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3NS1cdFx0bnZpZGlhX2ZiX29wcy5mYl9maWxscmVjdCA9IGNmYl9maWxscmVjdDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jOjY3NjpcdFx0bnZpZGlhX2ZiX29wcy5mYl9jb3B5YXJlYSA9IGNmYl9jb3B5YXJlYTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3Ny1cdFx0bnZpZGlhX2ZiX29wcy5mYl9zeW5jID0gTlVMTDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmM9MTExMD1zdGF0aWMgdm9pZCBwbTJmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTExOS1cdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xuZHJpdmVycy92aWRlby9mYmRldi9wbTJmYi5jOjExMjA6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0yZmIuYy0xMTIxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9wbTNmYi5jPTQ0MD1zdGF0aWMgdm9pZCBwbTNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMtNDUwLVx0aWYgKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmM6NDUxOlx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmMtNDUyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM9MTM5Nz1zdGF0aWMgdm9pZCByaXZhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvcml2YS9mYmRldi5jLTE0MDEtXHRpZiAoKGluZm8tXHUwMDNlZmxhZ3MgXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSkge1xuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM6MTQwMjpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIHJlZ2lvbik7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYy0xNDAzLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zM2ZiLmM9MTExNj1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzM2ZiX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYy0xMTI2LVx0LmZiX2ZpbGxyZWN0XHQ9IHMzZmJfZmlsbHJlY3QsXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYzoxMTI3Olx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jLTExMjgtXHQuZmJfaW1hZ2VibGl0XHQ9IHMzZmJfaW1hZ2VibGl0LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oPTI5PWludCBzYnVzZmJfY29tcGF0X2lvY3RsKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQgY21kLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQxLVx0LmZiX2ZpbGxyZWN0XHQ9IGNmYl9maWxscmVjdCwgXFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oOjQyOlx0LmZiX2NvcHlhcmVhXHQ9IGNmYl9jb3B5YXJlYSwgXFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQzLVx0LmZiX2ltYWdlYmxpdFx0PSBjZmJfaW1hZ2VibGl0XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmM9MzU2PXZvaWQgZmJjb25fc2lzX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmMtMzY4LVx0aWYoKCFpdmlkZW8tXHUwMDNlYWNjZWwpIHx8ICghaXZpZGVvLVx1MDAzZWVuZ2luZW9rKSkge1xuZHJpdmVycy92aWRlby9mYmRldi9zaXMvc2lzX2FjY2VsLmM6MzY5Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYy0zNzAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jPTE3Nz1zdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4Mi1cdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmVwLVx1MDAzZWxvY2ssIGZsYWdzKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTgzOlx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9zdW54dnI1MDAuYy0xODQtXHRpbmZvLVx1MDAzZXNjcmVlbl9iYXNlICYjNDM7PSBlcC1cdTAwM2VmYjhfYnVmX2RpZmY7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jOjE4NTpcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmMtMTg2LVx0aW5mby1cdTAwM2VzY3JlZW5fYmFzZSAtPSBlcC1cdTAwM2VmYjhfYnVmX2RpZmY7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jPTExNTc9Y29weWFyZWFfOGJwcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIGR4LCB1MzIgZHksIHUzMiBzeCwgdTMyIHN5LFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMTcwLVx0aWYgKChkeCB8IHN4IHwgd2lkdGgpIFx1MDAyNiA3KSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM6MTE3MTpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTExNzItXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM9MTI2Nj10Z2FmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMzA4LVx0ZWxzZSBpZiAoYnBwID09IDMyKVxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jOjEzMDk6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYy0xMzEwLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmM9NjY4PXN0YXRpYyB2b2lkIHRyaWRlbnRmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3My1cdGlmIChpbmZvLVx1MDAzZWZsYWdzIFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xuZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIuYzo2NzQ6XHRcdGNmYl9jb3B5YXJlYShpbmZvLCBjYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jPTEwMjc9c3RhdGljIHZvaWQgdmdhMTZmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jLTExMTMtXHRkZWZhdWx0OlxuZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmM6MTExNDpcdFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi92Z2ExNmZiLmMtMTExNS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYz02OTk9c3RhdGljIHZvaWQgdmlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MDUtXHRpZiAoaW5mby1cdTAwM2VmbGFncyBcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQgfHwgIXNoYXJlZC1cdTAwM2Vod19iaXRibHQpIHtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmM6NzA2Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcwNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmMtNzE4LVx0XHRhcmVhLVx1MDAzZXN4LCBhcmVhLVx1MDAzZXN5LCAwLCAwLCAwKSlcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhL3ZpYWZiZGV2LmM6NzE5Olx0XHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcyMC19XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jLTY2MC1cdC5mYl9maWxscmVjdFx0PSB2dDg2MjNmYl9maWxscmVjdCxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdnQ4NjIzZmIuYzo2NjE6XHQuZmJfY29weWFyZWFcdD0gY2ZiX2NvcHlhcmVhLFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jLTY2Mi1cdC5mYl9pbWFnZWJsaXRcdD0gdnQ4NjIzZmJfaW1hZ2VibGl0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQwMgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBjZmJfY29weWFyZWFgIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIGBjZmJfY29weWFyZWFgLi4uIHRoYXQmIzM5O3MgYSBmdW5jdGlvbiB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGZyYW1lYnVmZmVyIGRyaXZlcnMsIGlzbiYjMzk7dCBpdD8gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gYXNrIGlmIHRoZXJlJiMzOTtzIGFuIGlvY3RsIG91dCB0aGVyZSB0aGF0JiMzOTtzIGRpcmVjdGx5IGNhbGxpbmcgYGZiX2NvcHlhcmVhYCBidXQsIGhhbmcgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gTmVlZCB0byB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBCZXN0IHRvIGNvbmZpcm0gdGhhdCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGZyYW1lYnVmZmVyIG1lbW9yeSBtYW5hZ2VtZW50IHN0dWZmIHNob3VsZCBiZSwgYW5kIHdoZXJlIGBmYl9jb3B5YXJlYWAgbGlrZWx5IHJlc2lkZXMuIExldCYjMzk7cyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfY29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjYxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBmYl9jb3B5YXJlYWAqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gRGlkbiYjMzk7dCBJIGFscmVhZHkgY29uZmlybSBzb21ldGhpbmcgYWJvdXQgdGhpcz8gUmlnaHQsIEkga25vdyBob3cgYGZiX2NvcHlhcmVhYCBpcyBhY2Nlc3NlZC4gTGV0JiMzOTtzIHNlZS4uLiBob3cgZXhhY3RseSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZCBmcm9tIHVzZXJzcGFjZSBhZ2Fpbj8gSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCYjMzk7cyB0aHJvdWdoIGBmYmNvbmAsIHRoZSBjb25zb2xlIGRyaXZlci4gUmlnaHQsIGl0JiMzOTtzIHVzZWQgd2l0aGluIGBmYmNvbmAgZm9yIHRhc2tzIGxpa2Ugc2Nyb2xsaW5nIG9yIG1vdmluZyB0ZXh0IG9uIHRoZSBkaXNwbGF5LgoKT2theSwgaXMgaXQgcmVhY2hlZCB2aWEgYGZiX2lvY3RsYCBkaXJlY3RseT8gTm8sIGRlZmluaXRlbHkgbm90LiBgZmJfd3JpdGVgPyBOb3BlLiBgZmJfbW1hcGA/IE5haCwgZG9lc24mIzM5O3Qgc2VlbSBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBkaWRuJiMzOTt0IEkgcmVtZW1iZXIgYGZiX2NvcHlhcmVhYCBnZXR0aW5nIHVzZWQgd2hlbiBgZmJjb25gIGhhbmRsZXMgc2Nyb2xsaW5nIG9yIHRleHQgbW92ZW1lbnQ/IEFoYSwgeWVzIQoKTm93LCBob3cgZG9lcyBzeXprYWxsZXIgZ2V0IGludm9sdmVkIGluIGZ1enppbmcgdGhpcyB0aGluZz8gSXQgaGl0cyBgZmJjb25gIHVzaW5nIGVpdGhlciBgaW9jdGwoZmQsIFZUX1JFU0laRSwgLi4uKWAgb3IgYnkgY3JhZnRpbmcgZXNjYXBlIHNlcXVlbmNlcyBhbmQgd3JpdGluZyB0aGVtIHRvIHNvbWV0aGluZyBsaWtlIGAvZGV2L3R0eTFgLiBJdCBhbHNvIGZ1enplcyB0aGUgYGZiZGV2YCBpb2N0bHMgbGlrZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AsIHNldHRpbmcgdGhpbmdzIGxpa2UgYHhyZXNfdmlydHVhbGAgYW5kIGB5cmVzX3ZpcnR1YWxgLgoKU28sIHRoZSBidWcgaXMgcHJvYmFibHkgdHJpZ2dlcmVkIGJ5IHNldHRpbmcgdXAgdmVyeSBzbWFsbCB2YWx1ZXMgZm9yIGB4cmVzX3ZpcnR1YWxgIGFuZCBgeXJlc192aXJ0dWFsYCwgYW5kIHRoZW4gY2FsbGluZyBzb21ldGhpbmcgdGhhdCBtYWtlcyBgZmJfY29weWFyZWFgIHJ1biB3aXRoIGNvb3JkaW5hdGVzIHRoYXQgYXJlIG91dC1vZi1ib3VuZHMsIHJpZ2h0PyBUaGF0IG1ha2VzIHNlbnNlLiBBIHNtYWxsIHZpcnR1YWwgcmVzb2x1dGlvbiwgdGhlbiB0cmlnZ2VyIGEgY29uc29sZSBzY3JvbGwuLi4gdGhhdCBzaG91bGQgZG8gaXQhCgpIbW0sIGlzIGBmYl9jb3B5YXJlYWAgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlIGRpcmVjdGx5IHZpYSBgaW9jdGxgIGluIHNvbWUgd2F5PyBObywgSSBkb24mIzM5O3QgcmVjYWxsIHNlZWluZyBhbnl0aGluZyBsaWtlIGFuIGBGQklPUFVUX0NPUFlBUkVBYCBvciBzaW1pbGFyIGRlZmluZWQuIExldCYjMzk7cyBtYWtlIGFic29sdXRlbHkgc3VyZSBhbmQgY2hlY2sgYGluY2x1ZGUvdWFwaS9saW51eC9mYi5oYCBmb3IgYGNvcHlhcmVhYCBkZWZpbml0aW9ucyBhbmQgbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIGZ1bmt5IGRlZmluaXRpb24gSSBtaXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg9MzI0PXN0cnVjdCBmYl92Ymxhbmsge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMzNjpzdHJ1Y3QgZmJfY29weWFyZWEge1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVx0X191MzIgZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDk0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHNvbWV0aGluZyByZWxhdGVkIHRvIGZyYW1lYnVmZmVycywgYW5kIHRoZSBjb2RlIHJlZmVyZW5jZXMgYHN0cnVjdCBmYl9jb3B5YXJlYWAuIFJpZ2h0LCB0aGF0IHN0cnVjdC4uLiBpdCYjMzk7cyBkZWZpbmVkIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIEkgcmVjYWxsIHRoYXQgaGVhZGVyIOKAkyBpdCYjMzk7cyB0aGUgdXNlcnNwYWNlIGludGVyZmFjZSBkZWZpbml0aW9ucyBmb3IgZnJhbWVidWZmZXIgb3BlcmF0aW9ucy4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAsIGdpdmVuIHRoYXQgc3RydWN0dXJlJiMzOTtzIGludm9sdmVkLCBpcyB0byBjaGVjayB3aGV0aGVyIGFuIGBpb2N0bGAgc3lzdGVtIGNhbGwgbGV2ZXJhZ2VzIGl0LiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW9jdGwgY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBgZmJfY29weWFyZWFgIHN0cnVjdHVyZS4gVGhhdCB3b3VsZCBsaWtlbHkgZ2l2ZSBtZSBtb3JlIGNvbnRleHQgYWJvdXQgd2hhdCYjMzk7cyBnb2luZyBvbi4gTGV0IG1lIGxvb2sgYXJvdW5kIHRoZSBjb2RlIGZvciBzb21lIGlvY3RsIGNhbGxzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg9MzI0PXN0cnVjdCBmYl92Ymxhbmsge1xuLS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMzNjpzdHJ1Y3QgZmJfY29weWFyZWEge1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVx0X191MzIgZHg7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODA4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkNoZWNraW5nIHRoZSBGcmFtZWJ1ZmZlciBIZWFkZXIgZm9yIFNwZWNpZmljIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB0aGUgcHJlc2VuY2Ugb2Ygc3BlY2lmaWMgZGVmaW5pdGlvbnMgcmVsYXRlZCB0byBmcmFtZSBidWZmZXIgSS9PIGNvbnRyb2wgY29kZXMsIHNwZWNpZmljYWxseSB0aG9zZSBzdGFydGluZyB3aXRoIGBGQklPUFVUX2AuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGdvIHRvIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgdGhpcyBraW5kIG9mIGxvdy1sZXZlbCBmcmFtZWJ1ZmZlciBpbmZvcm1hdGlvbjogYGluY2x1ZGUvdWFwaS9saW51eC9mYi5oYC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRvIHZlcmlmeSBpZiB0aGVzZSBwYXJ0aWN1bGFyIGBGQklPUFVUX2AgbWFjcm9zLCBvciBhbnl0aGluZyB2ZXJ5IHNpbWlsYXIgbGlrZSBgRkJJT0dFVF9gIG9yIHJlbGF0ZWQsIGFyZSBhY3R1YWxseSBkZWZpbmVkIGluIHRoYXQgaGVhZGVyLiBJIG5lZWQgdG8gZW5zdXJlIHRoZXkgZXhpc3QgYW5kIHRoYXQgSSB1bmRlcnN0YW5kIHRoZWlyIGNvbnRleHQgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCBhbnl0aGluZyBlbHNlLiBUaGlzIHNlZW1zIGxpa2UgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgdG8gZ2V0dGluZyBteSBkdWNrcyBpbiBhIHJvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RkJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9mYi5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvdWFwaS9saW51eC9mYi5oLTE0LSAgIDB4NDYgaXMgJiMzOTtGJiMzOTtcdFx0XHRcdFx0XHRcdFx0Ki9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE1OiNkZWZpbmUgRkJJT0dFVF9WU0NSRUVOSU5GT1x0MHg0NjAwXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxNjojZGVmaW5lIEZCSU9QVVRfVlNDUkVFTklORk9cdDB4NDYwMVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MTc6I2RlZmluZSBGQklPR0VUX0ZTQ1JFRU5JTkZPXHQweDQ2MDJcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE4OiNkZWZpbmUgRkJJT0dFVENNQVBcdFx0MHg0NjA0XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxOTojZGVmaW5lIEZCSU9QVVRDTUFQXHRcdDB4NDYwNVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjA6I2RlZmluZSBGQklPUEFOX0RJU1BMQVlcdFx0MHg0NjA2XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0yMS0jaWZuZGVmIF9fS0VSTkVMX19cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjIyOiNkZWZpbmUgRkJJT19DVVJTT1IgICAgICAgICAgICBfSU9XUigmIzM5O0YmIzM5OywgMHgwOCwgc3RydWN0IGZiX2N1cnNvcilcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTIzLSNlbmRpZlxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMjQtLyogMHg0NjA3LTB4NDYwQiBhcmUgZGVmaW5lZCBiZWxvdyAqL1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjU6LyogI2RlZmluZSBGQklPR0VUX01PTklUT1JTUEVDXHQweDQ2MEMgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI2Oi8qICNkZWZpbmUgRkJJT1BVVF9NT05JVE9SU1BFQ1x0MHg0NjBEICovXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNzovKiAjZGVmaW5lIEZCSU9TV0lUQ0hfTU9OSUJJVFx0MHg0NjBFICovXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyODojZGVmaW5lIEZCSU9HRVRfQ09OMkZCTUFQXHQweDQ2MEZcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI5OiNkZWZpbmUgRkJJT1BVVF9DT04yRkJNQVBcdDB4NDYxMFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzA6I2RlZmluZSBGQklPQkxBTktcdFx0MHg0NjExXHRcdC8qIGFyZzogMCBvciB2ZXNhIGxldmVsICYjNDM7IDEgKi9cbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMxOiNkZWZpbmUgRkJJT0dFVF9WQkxBTktcdFx0X0lPUigmIzM5O0YmIzM5OywgMHgxMiwgc3RydWN0IGZiX3ZibGFuaylcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjMyOiNkZWZpbmUgRkJJT19BTExPQyAgICAgICAgICAgICAgMHg0NjEzXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzojZGVmaW5lIEZCSU9fRlJFRSAgICAgICAgICAgICAgIDB4NDYxNFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzQ6I2RlZmluZSBGQklPR0VUX0dMWVBIICAgICAgICAgICAweDQ2MTVcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM1OiNkZWZpbmUgRkJJT0dFVF9IV0NJTkZPICAgICAgICAgMHg0NjE2XG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozNjojZGVmaW5lIEZCSU9QVVRfTU9ERUlORk8gICAgICAgIDB4NDYxN1xuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6Mzc6I2RlZmluZSBGQklPR0VUX0RJU1BJTkZPICAgICAgICAweDQ2MThcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM4OiNkZWZpbmUgRkJJT19XQUlURk9SVlNZTkNcdF9JT1coJiMzOTtGJiMzOTssIDB4MjAsIF9fdTMyKVxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODI0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqRGVjb25zdHJ1Y3RpbmcgYSBQb3RlbnRpYWwgRnJhbWVidWZmZXIgSXNzdWUqKgoKSG1tLCBgRkJJT19DVVJTT1JgLi4uIG5vLCB0aGF0IGRvZXNuJiMzOTt0IGZlZWwgcmlnaHQuIFRoYXQmIzM5O3MgcHJvYmFibHkgYSByZWQgaGVycmluZy4gT2theSwgbGV0JiMzOTtzIHJlLWNlbnRlciBteSBmb2N1cy4gVGhlIGNvcmUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBgZmJfY29weWFyZWFgLiBXaGVyZSBleGFjdGx5IGlzICp0aGF0KiBmdW5jdGlvbiB1dGlsaXplZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHVzYWdlcy4gQWgsIHllcywgSSYjMzk7bGwgZ28gYmFjayB0byBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudCBhbmQgY29yZSBvcGVyYXRpb25zIHJlc2lkZS4gTGV0JiMzOTtzIGRpZyBiYWNrIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgaWYgSSBtaXNzZWQgYW55dGhpbmcgdGhlIGZpcnN0IHRpbWUgYXJvdW5kIHJlZ2FyZGluZyBgY29weWFyZWFgLiBJIG5lZWQgYSBtb3JlIGRpcmVjdCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwb3RlbnRpYWwgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMDc5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipUcmFja2luZyBEb3duIHRoZSBgZmJfY29weWFyZWFgIENhbGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGVyZSBgZmJfY29weWFyZWFgIGlzIGJlaW5nIGludm9rZWQgaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCBhc3N1bXB0aW9uLCB0aGF0IGl0IHdhcyBuZXN0ZWQgd2l0aGluIGBmYm1lbS5jYCwgd2FzIGluY29ycmVjdC4gVGhhdCYjMzk7cyBhIGNvbW1vbiBpbml0aWFsIGd1ZXNzLCBzbyBubyBiaWcgZGVhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBiZSBtZXRob2RpY2FsLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXTigJlzIGNhbGxlZCBpbiBgZHJpdmVycy9jaGFyL3Z0LmNgLiBIbW0sIG5vLCB0aGF0IHNlZW1zIG9mZiwgdG9vLiAgSSYjMzk7bGwgaGF2ZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZnJhbWVidWZmZXIgY29uc29sZSBjb2RlIG1vcmUgY2xvc2VseS4gR2l2ZW4gdGhlIGZ1bmN0aW9uYWxpdHksIGl0JiMzOTtzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIHdpdGggdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgZGlyZWN0bHksIHNvIGxldCBtZSBleHBhbmQgbXkgc2VhcmNoIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgYW5kIGBmYmNvbl9jY3cuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2suIEkmIzM5O2xsIGZvY3VzIG9uIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgZmlyc3QsIHRoYXQmIzM5O3MgdGhlIG1vc3QgZ2VuZXJpYyBhbmQgY29tbW9uIGZyYW1lYnVmZmVyIGNvbnNvbGUgZHJpdmVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZmJfY29weWFyZWEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDYxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEtleSBDaGFuZ2UgaW4gRnJhbWVidWZmZXIgQ29yZSoqCgpPa2F5LCBzbyBJIGp1c3Qgc2F3IHNvbWUgY2hhbmdlcyB0aGF0IGltbWVkaWF0ZWx5IGNhdWdodCBteSBleWUuIEkgcmVtZW1iZXIgZW5jb3VudGVyaW5nIHJlbGF0ZWQgY29kZSBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuY2AgYW5kIGBmYmNvbl9jY3cuY2AgZWFybGllci4gUmlnaHQsIGBiaXRfYm1vdmVgIGNhbGxzIGBpbmZvLSZndDtmYm9wcy0mZ3Q7ZmJfY29weWFyZWEoaW5mbywgJmFtcDthcmVhKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBJJiMzOTt2ZSBzZWVuIGBiaXRfYm1vdmVgIHVzZWQgaGVhdmlseSBpbiBgZmJjb25gLgoKVGhlIGhlYXJ0IG9mIHRoaXMgc2VlbXMgdG8gYmUgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiB3aXRoaW4gdGhlIGNvcmUgZnJhbWVidWZmZXIgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrczogYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBmcmFtZWJ1ZmZlciBkcml2ZXJzLCBsaWtlIGB2Z2ExNmZiYCwgYHZlc2FmYmAsIGBlZmlmYmAsIGFuZCBgc2ltcGxlZmJgLCBsZXZlcmFnZSB3aGVuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpc24mIzM5O3QgYXZhaWxhYmxlLgoKVGhlIGVzc2VuY2Ugb2YgdGhlIGNoYW5nZSBpcyBib3VuZHMgY2hlY2tpbmcuIFdlJiMzOTtyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gYGR4YCwgYGR5YCwgYHdpZHRoYCwgb3IgYGhlaWdodGAgdmFsdWVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuIEkgbGlrZSB0aGF0LiBUaGlzIGlzIGEgY2xlYXIgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBleGFjdCBmdW5jdGlvbnMgdGhlIHBhdGNoIHRhcmdldHMuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBmYl9jb3B5YXJlYWAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0YCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhgLCBhbmQgYGZiX2ltYWdlYmxpdGAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaGAuCgpBaCwgdGhlc2UgYXJlIGlubGluZSBmdW5jdGlvbnMuIFNvIHdoZXJlIGFyZSB0aGV5IGdldHRpbmcgKmNhbGxlZCogZnJvbT8gSSYjMzk7bGwgbmVlZCB0byBnbyBkZWVwZXIgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaHMuIExvb2tzIGxpa2UgYGNmYl9jb3B5YXJlYWAgaW4gYGNmYmNvcHlhcmVhLmNgLCBgc3lzX2NvcHlhcmVhYCBpbiBgc3lzY29weWFyZWEuY2AsIGFuZCBzbyBvbi4gUmlnaHQsIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmYl9jb3B5YXJlYSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9jb3B5YXJlYS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE5OnZvaWQgY2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjktXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcdGZiX2NvcHlhcmVhKHAsIGFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzEtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NTUzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgR3JhcGhpY3MgT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBncmFwaGljcyBmdW5jdGlvbnM6IGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IGFyZWFzIGZvciBtZSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlICYjMzQ7c3lzJiMzNDsgbmFtZXNwYWNlLCBzcGVjaWZpY2FsbHkgYHN5c19maWxscmVjdGAgYW5kIGBzeXNfaW1hZ2VibGl0YC4gSSYjMzk7bGwgdmVyaWZ5IHRoZWlyIGV4aXN0ZW5jZSBhcyBhIHByZWN1cnNvciB0byBhbnkgc3Vic2VxdWVudCBhbmFseXNpcyBvciBvcHRpbWl6YXRpb24gZWZmb3J0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjQtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2NTpcdCAgSW5jbHVkZSB0aGUgc3lzX2ZpbGxyZWN0IGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIHJlY3RhbmdsZVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjYtXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJiMzOTt0IHByb3ZpZGUgdGhlaXIgb3duXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYzoxOTp2b2lkIHN5c19maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0KVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTI1LX1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjI2OkVYUE9SVF9TWU1CT0woc3lzX2ZpbGxyZWN0KTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA0NAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgVmVyaWZpY2F0aW9uICZhbXA7IEluaXRpYWwgSW52ZXN0aWdhdGlvbioqCgpSaWdodCwgc28gdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjb25maXJtZWQ6IHRoZXkgZG8sIGluIGZhY3QsIHVzZSB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIGRpdmUgc3RyYWlnaHQgaW4uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgd2l0aCBhIHF1aWNrIGNoZWNrIG9mIGBjZmJfZmlsbHJlY3RgIGFuZCB0aGVuIGBjZmJfaW1hZ2VibGl0YC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aG9zZSBhcmUgdGhlIGxpa2VseSBjdWxwcml0cyB0byBleGFtaW5lIGdpdmVuIHRoZSBjb250ZXh0LiBXZSBuZWVkIHRvIGFzc2VzcyB0aGVpciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1Rcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zMi1cdGhlbHBcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjMzOlx0ICBJbmNsdWRlIHRoZSBjZmJfZmlsbHJlY3QgZnVuY3Rpb24gZm9yIGdlbmVyaWMgc29mdHdhcmUgcmVjdGFuZ2xlXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zNC1cdCAgZmlsbGluZy4gVGhpcyBpcyB1c2VkIGJ5IGRyaXZlcnMgdGhhdCBkb24mIzM5O3QgcHJvdmlkZSB0aGVpciBvd25cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE5OnZvaWQgY2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0yMC17XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzEtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfZmlsbHJlY3QpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1NDkwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbWFnZSBCbGl0dGluZyBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGltYWdlIGJsaXR0aW5nLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gY29uc2lkZXJpbmcgYGNmYl9pbWFnZWJsaXRgIGFuZCBgc3lzX2ltYWdlYmxpdGAuIE15IG1pbmQgaW1tZWRpYXRlbHkganVtcHMgdG8gYSBmZXcgY29yZSBhcmVhcyB3aGVuIEkgc2VlIHRob3NlIGZ1bmN0aW9uIG5hbWVzLiBJIG5lZWQgdG8gcXVpY2tseSBhc3Nlc3Mgd2hpY2ggY29udGV4dCBpcyBpbnRlbmRlZCBoZXJlLgoKKiAgIEFyZSB3ZSB0YWxraW5nIGFib3V0IHRoZSBmcmFtZWJ1ZmZlciBjb250ZXh0IChgY2ZiYCk/IElmIHNvLCBpcyB0aGlzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMsIHBhcnRpY3VsYXJseSBkaXJlY3QgYWNjZXNzPyBJIHdvbmRlciBhYm91dCBjb2xvciBkZXB0aCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1vZGVsIHdoZW4gYGNmYmAgaXMgaW4gcGxheS4gQW0gSSBsb29raW5nIGF0IGFueSBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRvciBpbnRlcmFjdGlvbnMgaGVyZSwgb3IgaXMgdGhpcyBwcmltYXJpbHkgc29mdHdhcmUtYmFzZWQ/CgoqICAgQWx0ZXJuYXRpdmVseSwgY291bGQgdGhpcyBiZSBzeXN0ZW0tbGV2ZWwgYmxpdHRpbmcgKGBzeXNgKT8gVGhlbiBJIG5lZWQgdG8gY29uc2lkZXIgc3luY2hyb25pemF0aW9uLCBtZW1vcnkgbWFuYWdlbWVudCwgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgYmV0d2VlbiBkaWZmZXJlbnQgcHJvY2Vzc2VzIG9yIGRyaXZlcnMuIFdoYXQga2luZCBvZiBidWZmZXJpbmcgaXMgaW4gdXNlPyBJcyB0aGVyZSBhbnkgY2FjaGluZyBnb2luZyBvbiB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gVGhpcyBhbHNvIGJyaW5ncyB1cCBxdWVzdGlvbnMgYWJvdXQgdGhlIHRhcmdldCBkaXNwbGF5OiBhcmUgd2UgdGFsa2luZyBhYm91dCBhIGRlZGljYXRlZCBmcmFtZWJ1ZmZlciBvciBwZXJoYXBzIGEgd2luZG93IG1hbmFnZWQgYnkgYSB3aW5kb3dpbmcgc3lzdGVtIGxpa2UgWDExPwoKVWx0aW1hdGVseSwgdGhpcyByZW1pbmRzIG1lIHRoYXQgSSBuZWVkIHRvIGJlIGF0dGVudGl2ZSB0byB0aGUgc3lzdGVtIGNvbnRleHQgYW5kIHRoZSBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgcmVsYXRlZCB0byBpbWFnZSBtYW5pcHVsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTQ1PWNvbmZpZyBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDgtXHRoZWxwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0OTpcdCAgSW5jbHVkZSB0aGUgY2ZiX2ltYWdlYmxpdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSBpbWFnZVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNTAtXHQgIGJsaXR0aW5nLiBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbiYjMzk7dCBwcm92aWRlIHRoZWlyIG93blxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYzoxOTp2b2lkIGNmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmMtMjAte1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMS19XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfaW1hZ2VibGl0KTtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwOTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHcmFwaGljcyBBY2NlbGVyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSB0aGUgY29tbW9uIHN1c3BlY3RzIGluIGFjY2VsZXJhdGVkIGdyYXBoaWNzIG9wZXJhdGlvbnMuCgpCdXQgaG9sZCBvbiBhIHNlY29uZC4uLnRoZSBwYXRjaCBpcyBhY3R1YWxseSBtb2RpZnlpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBUaGVzZSBhcmUgKmlubGluZSogZnVuY3Rpb25zISBUaGF0JiMzOTtzIHRoZSBrZXkuIFNvLCB0aGUgZGlyZWN0IG1vZGlmaWNhdGlvbiBvZiB0aGVzZSBpbmxpbmUgZGVmaW5pdGlvbnMgcHJvYmFibHkgZG9lc24mIzM5O3QgbWF0dGVyLiBXaGF0ICpkb2VzKiBtYXR0ZXIgaXMgd2hlcmUgdGhlc2UgYXJlICp1c2VkKi4gVGhlIGNvbXBpbGVyIHdpbGwsIGVmZmVjdGl2ZWx5LCBzdWJzdGl0dXRlIHRoZSBpbmxpbmVkIGNvZGUuIFNvLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCAqY2FsbCogdGhlc2UgaW5saW5lZCBmdW5jdGlvbnMuCgpBbmQgSSBrbm93IHRoZSBtb3N0IGZyZXF1ZW50IGNhbGxlcnMgYXJlIGBjZmJfKmAgYW5kIGBzeXNfKmDigJR0aG9zZSBhcmUgdGhlIHByaW1hcnkgYWNjZWxlcmF0ZWQgcGF0aHMsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHBsYWNlcyB3aGVyZSBgZmJfY29weWFyZWEuaGAgaXMgaW5jbHVkZWQsIHRvIGNhdGNoIGFueSBlZGdlIGNhc2VzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgaW5jbHVkZXMgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc3VycHJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9jb3B5YXJlYS5oXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfY29weWFyZWEuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2NvcHlhcmVhLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcwNgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkV4YW1pbmluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBmYl9maWxscmVjdC5oYCoqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJJiMzOTttIG5vdGljaW5nIHRoYXQgdGhlIGBmYl9maWxscmVjdC5oYCBoZWFkZXIgc2VlbXMgdG8gYmUgaW5jbHVkZWQgc3BlY2lmaWNhbGx5IGJ5IGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLiBUaGF0JiMzOTtzIGEgYml0IGZvY3VzZWQuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcGxhY2VzIHdoZXJlIGl0ICpzaG91bGQqIGJlIGluY2x1ZGVkLCBvciB3aGV0aGVyIGl0cyB1c2FnZSBpcyBpbnRlbnRpb25hbGx5IGxpbWl0ZWQgdG8gdGhlc2UgdHdvIG1vZHVsZXMuIEFyZSB0aGVyZSBvdGhlciBhcmVhcyBvZiB0aGUgc3lzdGVtIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIGFjY2VzcyB0byB0aGF0IGZ1bmN0aW9uYWxpdHk/IENvdWxkIHRoZXJlIGJlIHBvdGVudGlhbCBjb2RlIGR1cGxpY2F0aW9uIG9yIGluZWZmaWNpZW5jaWVzIGlmIGl0JiMzOTtzIG5vdCBtb3JlIHdpZGVseSBhY2Nlc3NpYmxlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBpbnRlbnQgaGVyZTsgaXMgdGhpcyBieSBkZXNpZ24sIG9yIGlzIHRoaXMganVzdCBhbiBvdmVyc2lnaHQ/IE15IGltbWVkaWF0ZSBjb25jZXJuLCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaWxlIG5hbWUsIGlzIHRoYXQgaXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhlIGxvdyBsZXZlbCBkcmF3aW5nIHByaW1pdGl2ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNpbmNsdWRlIFwmIzM0O2ZiX2ZpbGxyZWN0LmhcJiMzNDsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9maWxscmVjdC5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcJiMzNDtzeXNtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfZmlsbHJlY3QuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTQ0CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgdGhlIEluY2x1c2lvbiBvZiBgZmJfaW1hZ2VibGl0LmhgKioKCkFscmlnaHQsIHNvIHRoZSBwcm9tcHQgaGFzIG1lIGNpcmNsaW5nIGJhY2sgdG8gdGhlIGltYWdlIGJsaXR0aW5nIGxpYnJhcnksIHNwZWNpZmljYWxseSBgZmJfaW1hZ2VibGl0LmhgLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zIGluIHRoaXMgY29udGV4dC4gV2hhdCBhcmUgd2UgdHJ5aW5nIHRvIGFjY29tcGxpc2g/IEFyZSB3ZSBkZWFsaW5nIHdpdGggcmF3IGZyYW1lYnVmZmVyIGFjY2Vzcz8gRG8gd2UgbmVlZCBvcHRpbWl6ZWQgaW1hZ2UgY29weSByb3V0aW5lcz8gSXMgdGhpcyB0YXJnZXQgcGxhdGZvcm0gZXZlbiB1c2luZyBhIHN0YW5kYXJkIGZyYW1lYnVmZmVyIGFic3RyYWN0aW9uLCBvciBzb21ldGhpbmcgbW9yZSBiZXNwb2tlPyBgZmJfaW1hZ2VibGl0LmhgIHN1Z2dlc3RzIGEgdHJhZGl0aW9uYWwgZnJhbWVidWZmZXIgYXBwcm9hY2gsIHdoaWNoIGlzIGdvb2QgaWYgdGhhdCYjMzk7cyB0aGUgYmFzZSBhc3N1bXB0aW9uLgoKVGhlIHJlYWwgcXVlc3Rpb25zIGFyZTogSXMgdGhpcyB0aGUgY29ycmVjdCBsZXZlbCBvZiBhYnN0cmFjdGlvbj8gSXMgaXQgaGFyZHdhcmUtYWNjZWxlcmF0ZWQsIG9yIHB1cmVseSBzb2Z0d2FyZT8gSWYgc29mdHdhcmUsIGFyZSB0aGVyZSBwb3RlbnRpYWxseSBmYXN0ZXIgbG93LWxldmVsIGFsdGVybmF0aXZlcywgbWF5YmUgcmVseWluZyBvbiBTSU1EIGludHJpbnNpY3Mgb3Igc3BlY2lhbGl6ZWQgaGFyZHdhcmUgcmVnaXN0ZXJzIGlmIHRoZXkgYXJlIGV4cG9zZWQ/CgpNb3JlIGdlbmVyYWxseSwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBtYWludGFpbmFiaWxpdHkgYW5kIHBvcnRhYmlsaXR5IGltcGxpY2F0aW9ucy4gSXMgYGZiX2ltYWdlYmxpdC5oYCB3aWRlbHkgc3VwcG9ydGVkIGFuZCBkb2N1bWVudGVkPyBEb2VzIGl0IHByb3ZpZGUgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgcmVxdWlyZSB3aXRob3V0IHVubmVjZXNzYXJ5IG92ZXJoZWFkPyBJIG5lZWQgdG8gY29uc2lkZXIgaXRzIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBncmFwaGljcyBzdGFjay4gSWYgaXQmIzM5O3MgYSBsZWdhY3kgbGlicmFyeSwgdGhlIGNvc3QvYmVuZWZpdCBtaWdodCBub3QgYmUgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyBpdCBwbGF5cyBpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlIGNvdWxkIGJlIGJldHRlciwgbG93ZXItbGV2ZWwgYXBwcm9hY2hlcywgb3IgYmV0dGVyLCBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfaW1hZ2VibGl0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzY1NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCk9rYXksIHNvIGl0JiMzOTtzIGNsZWFyIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIGFyb3VuZCB0aG9zZSBzaXggc3BlY2lmaWMgZnJhbWVidWZmZXIgZnVuY3Rpb25zOiBgRkJfQ0ZCX0NPUFlBUkVBYCwgYEZCX1NZU19DT1BZQVJFQWAsIGBGQl9DRkJfRklMTFJFQ1RgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYEZCX0NGQl9JTUFHRUJMSVRgLCBhbmQgYEZCX1NZU19JTUFHRUJMSVRgLiBUbyBlbnN1cmUgZXZlcnl0aGluZyB3b3JrcyBhcyBleHBlY3RlZCwgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9ucy4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQsIGF0IGEgbWluaW11bSwgd2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCBgRkJgLCB3aGljaCBjb3ZlcnMgdGhlIGZ1bmRhbWVudGFsIGZyYW1lYnVmZmVyIHN1cHBvcnQsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAsIHdoaWNoIGVuYWJsZXMgdGhlIGNydWNpYWwgZnJhbWVidWZmZXIgY29uc29sZSBmdW5jdGlvbmFsaXR5LiBOb3cgSSBuZWVkIHRvIHNlZSBpZiBteSB0aGlua2luZyBpcyByaWdodCBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlc2UgY29uZmlncy4gTGV0JiMzOTtzIGhlYWQgb3ZlciB0byBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWdgIGFuZCBkb3VibGUgY2hlY2suIFRoaXMgc2hvdWxkIGJlIHdoZXJlIHRoZXNlIGVzc2VudGlhbCBidWlsZGluZyBibG9ja3MgYXJlIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9TWVNfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNjgtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2OTpjb25maWcgRkJfU1lTX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy03MC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTAxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVjb2RpbmcgdGhlIENvbmZpZzogQSBUcmlzdGF0ZSBXaXRob3V0IGEgVm9pY2UqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYEZCX1NZU19DT1BZQVJFQWAgY29uZmlnIG9wdGlvbiBhbmQgc29tZXRoaW5nJiMzOTtzIG5vdCBxdWl0ZSByaWdodC4gSXQmIzM5O3MgYSB0cmlzdGF0ZSwgcmlnaHQ/IFdoaWNoIG1lYW5zIGl0IGNhbiBiZSB5ZXMsIG5vLCBvciBtYXliZS4gQnV0IHRoZXJlJiMzOTtzIG5vIGFzc29jaWF0ZWQgcHJvbXB0IOKAkyBubyB1c2VyLWZhY2luZyBzdHJpbmcgdG8gdGVsbCBtZSB3aGF0IHRoaXMgb3B0aW9uICpkb2VzKiBvciB3aHkgSSYjMzk7ZCB3YW50IHRvIGVuYWJsZSBpdC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgY29udHJvbGxlZCBieSBkZXBlbmRlbmNpZXMsIG5vdCBkaXJlY3RseSBieSBtZSwgdGhlIHVzZXIuIEl04oCZcyBhbiBvcHRpb24gZW5hYmxlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGVuYWJsaW5nIG90aGVyIHRoaW5ncy4KClNvLCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uIGJlY29tZXM6IFdoYXQmIzM5O3MgZHJpdmluZyB0aGlzPyBXaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSAqc2VsZWN0aW5nKiBgRkJfU1lTX0NPUFlBUkVBYD8gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhvc2UgZGVwZW5kZW5jaWVzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQmIzM5O3MgYmVpbmcgc2V0LiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0JiMzOTtzIGNvbnRyb2xsaW5nIHRoaXMgcGFydGljdWxhciBiaXQuIEkgc3VzcGVjdCB0aGlzIGlzIHNvbWV0aGluZyBkZWVwIGluIHRoZSBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGQl9TWVNfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM1ND1jb25maWcgRkJfVlQ4NTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNTctXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUIGlmICghRkJfV01UX0dFX1JPUFMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM1ODpcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUEgaWYgKCFGQl9XTVRfR0VfUk9QUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzU5LVx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM2Nz1jb25maWcgRkJfV004NTA1XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNzEtXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUIGlmICghRkJfV01UX0dFX1JPUFMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM3MjpcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUEgaWYgKCFGQl9XTVRfR0VfUk9QUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzczLVx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xMzI9Y29uZmlnIEZCX0RNQU1FTV9IRUxQRVJTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTM0LVx0ZGVwZW5kcyBvbiBGQl9DT1JFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxMzU6XHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xMzYtXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTY0PWNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE2Ni1cdGRlcGVuZHMgb24gRkJfQ09SRVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY3Olx0c2VsZWN0IEZCX1NZU19DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY4LVx0c2VsZWN0IEZCX1NZU19GSUxMUkVDVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODg3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgRnJhbWVidWZmZXIgU3lzdGVtIE1lbW9yeSBIZWxwZXJzKioKClJpZ2h0LCBzbyBgRkJfU1lTTUVNX0hFTFBFUlNgIGlzIGNsZWFybHkgZGVmaW5pbmcgdGhlIHN5c3RlbSBtZW1vcnktYmFzZWQgYWNjZWxlcmF0aW9uIHJvdXRpbmVzLiBJdCYjMzk7cyBvcHRpbmcgZm9yIGBGQl9TWVNfQ09QWUFSRUFgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYW5kIGBGQl9TWVNfSU1BR0VCTElUYC4gTWFrZXMgc2Vuc2UuIFRob3NlIGFyZSB0aGUgY29yZSBvcGVyYXRpb25zIHdlJiMzOTtkIGV4cGVjdCBmb3IgZ2VuZXJhbC1wdXJwb3NlIGFjY2VsZXJhdGlvbiB3aGVuIGRpcmVjdCBtZW1vcnkgYWNjZXNzIGlzIGF2YWlsYWJsZS4KCkJ1dCBoYW5nIG9u4oCmIGlzIGBGQl9DRkJfQ09QWUFSRUFgIGluIHRoZSBtaXggYXMgd2VsbD8gVGhhdCYjMzk7cyB0eXBpY2FsbHkgdXNlZCBmb3IgQml0QkxUIGFuZCBjaGFyYWN0ZXIgY29weWluZyB1c2luZyBhIGNvbG91ciBmcmFtZSBidWZmZXIuIElzIHRoZSBzeXN0ZW0gZ29pbmcgdG8gdXNlICpib3RoKiBvciBjb3VsZCB0aGV5IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIHNvLCB3aHkgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcz8gT3IgaXMgdGhlcmUgYSBkZWVwZXIgaW50ZXJhY3Rpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJldHdlZW4gdGhlbT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9DRkJfQ09QWUFSRUEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0yOT1jb25maWcgRkJfQ0ZCX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMzYtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzozNzpjb25maWcgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zOC1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MjU1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBVbnByb21wdGVkIFRyaXN0YXRlKioKCkhtbSwgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2Ugd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIHRyaXN0YXRlIHN5c3RlbSwgYnV0IGNydWNpYWxseSwgdGhlcmUmIzM5O3Mgbm8gZXhwbGljaXQgcHJvbXB0LiBUaGF0JiMzOTtzIHRoZSBrZXkgaXNzdWUuIEEgdHJpc3RhdGUsIGJ5IGl0cyBuYXR1cmUsIG5lZWRzIGEgZGVmaW5lZCBzZWxlY3Rpb24gb3IgY29udHJvbCBtZWNoYW5pc20gdG8gbmF2aWdhdGUgYmV0d2VlbiBpdHMgdGhyZWUgc3RhYmxlIHN0YXRlcy4gV2l0aG91dCB0aGF0LCBpdOKAmXMganVzdC4uLmluZGV0ZXJtaW5hdGUuIEl0JiMzOTtzIGxpa2UgaGF2aW5nIHRocmVlIHN3aXRjaGVzLCBidXQgbm8gbGV2ZXIgb3IgYnV0dG9uIHRvIGRlY2lkZSB3aGljaCBwb3NpdGlvbiB0aGV5JiMzOTtyZSBpbi4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQgbWVjaGFuaXNtLCBpbnRlcm5hbCBvciBleHRlcm5hbCwgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIHN0YXRlcz8gSXMgaXQgYSBwYXNzaXZlIHN5c3RlbSwgcmVseWluZyBvbiBpbmhlcmVudCBwcm9wZXJ0aWVzIG9yIHNvbWUga2luZCBvZiBleHRlcm5hbCBpbmZsdWVuY2UgdG8gZGV0ZXJtaW5lIGl0cyBiZWhhdmlvciwgb3IgaXMgdGhlcmUgYW4gaW1wbGljaXQgY29udHJvbCBzaWduYWwgb3IgY29uZGl0aW9uIEkmIzM5O20gbWlzc2luZz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0mIzM5O3Mgc3RhdGVzIGFyZSBiZWluZyBkZXRlcm1pbmVkIHdpdGhvdXQgYW4gb2J2aW91cyBleHBsaWNpdCBpbnB1dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IEZCX0NGQl9DT1BZQVJFQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03MT1jb25maWcgRkJfQ0lSUlVTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjc1Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc2LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTA9Y29uZmlnIEZCX1BNMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05My1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI1OT1jb25maWcgRkJfQVRBUklcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjYyLVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI2MzpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjQtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zMzM9Y29uZmlnIEZCX1ZHQTE2XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMzNy1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMzg6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM5LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzUwPWNvbmZpZyBGQl9TVElcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzUzLVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjM1NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTUtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zODM9Y29uZmlnIEZCX1RHQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zODktXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzkwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM5MS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ3OT1jb25maWcgRkJfU0JVU19IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDgwLVx0Ym9vbFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ4MTpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00ODItXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTUwMD1jb25maWcgRkJfQ0c2XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUwMi1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IChTUEFSQyBcdTAwMjZcdTAwMjYgRkJfU0JVUylcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1MDM6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTA0LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTEwPWNvbmZpZyBGQl9GRkJcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTEyLVx0ZGVwZW5kcyBvbiBGQl9TQlVTIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTEzOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUxNC1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU1Mj1jb25maWcgRkJfWFZSNTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU1NS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1NTY6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTU3LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTg3PWNvbmZpZyBGQl9QVlIyXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU5MS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1OTI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTkzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjI0PWNvbmZpZyBGQl9TMUQxM1hYWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MjctXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjI4Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYyOS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTY0OD1jb25maWcgRkJfTlZJRElBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY1MS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NTI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjUzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9Njk4PWNvbmZpZyBGQl9SSVZBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTcwMS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3MDI6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNzAzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODA1PWNvbmZpZyBGQl9NQVRST1hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODA5LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjgxMDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04MTEtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz05MjY9Y29uZmlnIEZCX1JBREVPTlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05MjktXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTMwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTkzMS1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTk4Nz1jb25maWcgRkJfQVRZXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTk5MC1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5OTE6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTkyLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTAzOT1jb25maWcgRkJfUzNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA0My1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDQ0Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNDUtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMDYyPWNvbmZpZyBGQl9TQVZBR0Vcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA2NS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDY2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNjctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTAxPWNvbmZpZyBGQl9TSVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEwNS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTA2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMDctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTMyPWNvbmZpZyBGQl9WSUFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEzNS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTM2Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMzctXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTcxPWNvbmZpZyBGQl9ORU9NQUdJQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTc0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjExNzU6XHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE3Ni1cdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExOTg9Y29uZmlnIEZCXzNERlhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIwMS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjAyOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMDMtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjQ1PWNvbmZpZyBGQl9WVDg2MjNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTI0OS1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjUwOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNTEtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjYwPWNvbmZpZyBGQl9UUklERU5UXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNjMtXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI2NDpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjY1LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI4Mz1jb25maWcgRkJfQVJLXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyODctXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI4ODpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjg5LVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI5OD1jb25maWcgRkJfUE0zXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMDEtXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwMjpcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzAzLVx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU1Mz1jb25maWcgRkJfU001MDFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1Ni1cdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTU3Olx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NTgtXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE1MD1jb25maWcgRkJfSU9NRU1fSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1Mi1cdGRlcGVuZHMgb24gRkJfQ09SRVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTUzOlx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU0LVx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM5MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDI0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmcmFtZWJ1ZmZlciBoZWxwZXIgb3B0aW9ucywgc3BlY2lmaWNhbGx5IGBGQl9JT01FTV9IRUxQRVJTYCBhbmQgYEZCX1NZU01FTV9IRUxQRVJTYC4gSXQgc2VlbXMgbGlrZSBzZWxlY3RpbmcgYEZCX0lPTUVNX0hFTFBFUlNgIGVuYWJsZXMgdGhlIGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBmdW5jdGlvbnMuIEFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgIGRvZXMgdGhlIHNhbWUsIGJ1dCB3aXRoIHRoZSBgRkJfU1lTX2AgdmFyaWFudHMuCgpNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGp1c3QgZW5hYmxlIGJvdGgsIHNpbmNlIHRoZXkgc2VlbSB0byBwcm92aWRlIHVzZWZ1bCwgb3B0aW1pemVkIGZ1bmN0aW9ucy4gQnV0IGhvbGQgb24sIEkgcmVtZW1iZXIgdGhhdCBtYW55IGRyaXZlcnMgYWxzbyBzZWxlY3QgdGhlc2UuIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IGludHJvZHVjZSBhbnkgY29uZmxpY3RzIG9yIHVubmVjZXNzYXJ5IHJlZHVuZGFuY3kuCgpTbywgSSBjb3VsZCBsaXN0IGBGQl9JT01FTV9IRUxQRVJTYCBhbmQgYEZCX1NZU01FTV9IRUxQRVJTYCBkaXJlY3RseSBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIHNlY3Rpb24sIG9yIG1heWJlIEkgc2hvdWxkIGFpbSBmb3IgdGhlIHNwZWNpZmljIHByaW1pdGl2ZXMgbGlrZSBgRkJfQ0ZCX0NPUFlBUkVBYC4gQnV0LCBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBJIGNhbiBhY3R1YWxseSBlbmFibGUgYEZCX0NGQl9DT1BZQVJFQWAgZGlyZWN0bHkgaW4gYC5jb25maWdgIGlmIGl0JiMzOTtzIHRyaXN0YXRlIGFuZCBkb2VzbiYjMzk7dCBoYXZlIGl0cyBvd24gcHJvbXB0LiBJZiBJIHRyeSB0byBlbmFibGUgaXQsIHRoZSBidWlsZCB3aWxsIGxpa2VseSBmYWlsLgoKUmlnaHQsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgYEZCX0lPTUVNX0hFTFBFUlNgIGNvbWVzIGluLiBJdCYjMzk7cyBhIGJvb2xlYW4gd2l0aCBhIHByb21wdC4gSSBzaG91bGQgdmVyaWZ5IHRoaXMgdGhvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJfSU9NRU1fSEVMUEVSUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE0Nj1jb25maWcgRkJfSU9NRU1fRk9QU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE0OS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1MDpjb25maWcgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTUxLVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1Ny1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1ODpjb25maWcgRkJfSU9NRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU5LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzE2MQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gSGVscGVycyoqCgpIbW0sIG5vLCB0aGF0IGBGQl9JT01FTV9IRUxQRVJTYCBzeW1ib2wgaXMgYSBib29sZWFuLCBhbmQgdGhlcmUmIzM5O3Mgbm8gYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIHByb21wdC4gVGhhdCBwYXRoIGlzbiYjMzk7dCBnb2luZyB0byBnZXQgbWUgYW55d2hlcmUgaW50ZXJlc3RpbmcgcmlnaHQgbm93LiBJdCYjMzk7cyBhIGJpbmFyeSBjaG9pY2UuCgpOb3csIHdoYXQgYWJvdXQgYEZCX1NZU01FTV9IRUxQRVJTYD8gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGF0IG9uZSBpcyBkZWZpbmVkLiBJdCYjMzk7cyBwb3RlbnRpYWxseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvLiBJIHN1c3BlY3QsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgY291bGQgYmUgYSBzaW1pbGFyIHNpdHVhdGlvbiwgYnV0IGl0JiMzOTtzIHdvcnRoIHRoZSBxdWljayBpbnZlc3RpZ2F0aW9uLiBJIHNob3VsZCBzZWUgaWYgdGhlcmUgaXMgYSBwcm9tcHQgb3IgbW9yZSBkZXRhaWxzIGZvciBtZSB0byBjb25zaWRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTU4PWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTYzLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY0OmNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY1LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3MS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE3Mjpjb25maWcgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3My1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM1NjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBSZWFzb25pbmcgb24gRnJhbWVidWZmZXIgRHJpdmVyIFNlbGVjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhlc2UgZnJhbWVidWZmZXIgZHJpdmVycyBhcmUgY2hvc2VuIGFuZCBpdCYjMzk7cyBnZXR0aW5nIGEgbGl0dGxlIGludHJpY2F0ZS4gV2UgaGF2ZSB0aGlzIGJvb2xlYW4gb3B0aW9uLCBsZXQmIzM5O3MgY2FsbCBpdCBhICYjMzQ7ZmxhZyYjMzQ7IGZvciB0aGUgc2FrZSBvZiBjb252ZXJzYXRpb24sIHRoYXQgZG9lc24mIzM5O3QgaGF2ZSBhbiBleHBsaWNpdCBwcm9tcHQgYXR0YWNoZWQgdG8gaXQuIFRoYXQgbWVhbnMgd2UgbmVlZCBzb21lIGtpbmQgb2Ygc21hcnQgZHJpdmVyIHRvIGFjdHVhbGx5ICpzZWxlY3QqIGl0LCBtYWtlIGl0IGFjdGl2ZS4KCkZvciBleGFtcGxlLCBJIHNlZSB0aGF0IHRoZSBgRkJfVkdBMTZgIGRyaXZlciwgaXQgc2VlbXMgdG8gZGlyZWN0bHkgaW1wbHkgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0NPUFlBUkVBYCBlbmFibGVkLiBPaCB3YWl0LCBsb29raW5nIGNsb3NlciwgYEZCX1ZHQTE2YCBhbHNvIGltcGxpZXMgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2x1ZSBhYm91dCBhIHBhdHRlcm4uCgpOb3csIHdoYXTigJlzICpzZWxlY3RpbmcqIGBGQl9TWVNfQ09QWUFSRUFgPyBMZXQmIzM5O3Mgc2VlLi4uIGBGQl9WVDg1MDBgLCBgRkJfV004NTA1YCwgYEZCX0RNQU1FTV9IRUxQRVJTYCwgYW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AuIEludGVyZXN0aW5nLiBTbyB0aGVyZSYjMzk7cyBhIHNldCBvZiBtb3JlIGdlbmVyaWMgb3B0aW9ucyBoZXJlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGEgc2ltaWxhcmx5IGdlbmVyaWMgZHJpdmVyIHRoYXQgd2lsbCBoYW5kbGUgc2V0dGluZyBgRkJfU1lTTUVNX0hFTFBFUlNgIGJ5IGl0c2VsZj8gSXQgbG9va3MgbGlrZSB0aG9zZSBmb3VyIHRoaW5ncyBhcmUgcmVsYXRlZCB0byBsb3ctbGV2ZWwgbWVtb3J5IGhhbmRsaW5nLCBzbyB0aGVyZSBoYXMgdG8gYmUgc29tZXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGF0LiBJIG5lZWQgdG8ga2VlcCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDg9Y29uZmlnIEZCX0hFQ1VCQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MC1cdGRlcGVuZHMgb24gRkJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1MTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTUyLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNDY9Y29uZmlnIEZCX0FSQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUIFx1MDAyNlx1MDAyNiAoWDg2IHx8IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNDk6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNTAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1NzE9Y29uZmlnIEZCX1NNU0NVRlhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3NC1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTc1Olx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU4Mz1jb25maWcgRkJfVURMXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODctXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU4ODpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODktXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2MDY9Y29uZmlnIEZCX1BTM1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjA4LVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgUFMzX1BTM0FWXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYwOTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MTAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NTg9Y29uZmlnIEZCX1ZJUlRVQUxcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2MC1cdGRlcGVuZHMgb24gRkJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjYxOlx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2Mi1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY3OD1jb25maWcgWEVOX0ZCREVWX0ZST05URU5EXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2ODAtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBYRU5cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjgxOlx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY4Mi1cdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2ODk9Y29uZmlnIEZCX01FVFJPTk9NRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjkxLVx0ZGVwZW5kcyBvbiBGQlxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2OTI6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjkzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NTUtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiAoQVJDSF9QWEEgfHwgQ09NUElMRV9URVNUKVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE3NTY6XHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzU3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzc5PWNvbmZpZyBGQl9TU0QxMzA3XG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODQtXHRzZWxlY3QgRkJfQkFDS0xJR0hUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc4NTpcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODYtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTcyPWNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3NS1cdHNlbGVjdCBGQl9ERUZFUlJFRF9JT1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTc2Olx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTQ3CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBWaXJ0dWFsIEZyYW1lIEJ1ZmZlciBTdXBwb3J0IGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkgc2VlIGBGQl9WSVJUVUFMYCBoYXMgYmVlbiBzZWxlY3RlZCwgYW5kIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcHJvbWlzaW5nLiBgRkJfVklSVFVBTGAgc3BlY2lmaWNhbGx5IHJlZmVycyB0byB0aGUgVmlydHVhbCBGcmFtZSBCdWZmZXIgc3VwcG9ydCwgb3IgdmZiLiBBbmQsIGtub3dpbmcgd2hhdCBJIGtub3cgYWJvdXQgZnV6emluZyBhbmQgdGhlIHBvd2VyIG9mIGluc3RydW1lbnRlZCB0YXJnZXRzLCB0aGlzIGp1bXBzIG91dCBhcyBhIHBvdGVudGlhbCBnb2xkbWluZS4gVGhlIHZmYiBoYXMgYWx3YXlzIGJlZW4gYSBjb21wZWxsaW5nIHRhcmdldCBhbmQgdGhlIGZhY3QgdGhhdCBpdCBpcyBzZWxlY3RlZCBzdWdnZXN0cyBpdCBpcyBwcmVzZW50LiBTbywgbGV0IG1lIGdldCBhIHF1aWNrIGxvb2sgYXQgYEZCX1ZJUlRVQUxgIGFuZCBzZWUgd2hhdCBvcHRpb25zIG9yIGNvbmZpZ3VyYXRpb25zIHdlIGhhdmUgdG8gbGV2ZXJhZ2UgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGQl9WSVJUVUFMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjQ1PWNvbmZpZyBGQl9TSDc3NjBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1Ny1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjU4OmNvbmZpZyBGQl9WSVJUVUFMXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1OS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgRnJhbWUgQnVmZmVyIHN1cHBvcnQgKE9OTFkgRk9SIFRFU1RJTkchKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25zaWRlcmluZyBgRkJfVklSVFVBTGAgYW5kIGBGQl9JT01FTV9IRUxQRVJTYCoqCgpZZXMsICpGQl9WSVJUVUFMKiBpcyBpbmRlZWQgYSB2ZXJ5IHVzZWZ1bCB0b29sLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHRoZSBpbnRyaWNhY2llcyBvZiBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudC4gSXQgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5IGluIG1hbnkgc2NlbmFyaW9zLCBwYXJ0aWN1bGFybHkgd2hlbiB5b3UgbmVlZCB0byBhYnN0cmFjdCBhd2F5IGZyb20gdGhlIHBoeXNpY2FsIGRldGFpbHMgYW5kIGhhbmRsZSB2aXJ0dWFsIG1lbW9yeSByZWdpb25zLiBJIGFwcHJlY2lhdGUgaXRzIGVsZWdhbnQgZGVzaWduOyBpdCBtYWtlcyBkZWJ1Z2dpbmcgZnJhbWVidWZmZXIgaXNzdWVzIG11Y2ggZWFzaWVyLiBCdXQgbm93LCBteSBtaW5kIHdhbmRlcnMgdG8gKkZCX0lPTUVNX0hFTFBFUlMqLiBJJiMzOTttIGFza2luZyBteXNlbGYgaWYgaXQmIzM5O3MgdGhlIHJpZ2h0IGNob2ljZSBnaXZlbiB0aGUgdGFzayBJJiMzOTttIGNvbnRlbXBsYXRpbmcuIEFyZSB3ZSByZWFsbHkgbGV2ZXJhZ2luZyB0aGUgYmVuZWZpdHMgb2YgdGhvc2UgaGVscGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIHBvdGVudGlhbCB0cmFkZS1vZmZzIGluIHRoaXMgc3BlY2lmaWMgY29udGV4dD8gVGhpcyBjb3VsZCBpbnZvbHZlIGFuIGFzc2Vzc21lbnQgb2YgbWVtb3J5IGFjY2VzcyBwYXR0ZXJucywgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLCBvciBldmVuIHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSB0aGUgZGVjaXNpb24uIFRpbWUgdG8gdGFrZSBhIGRlZXBlciBkaXZlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBGQl9JT01FTV9IRUxQRVJTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTY0PWNvbmZpZyBGQl9HUlZHQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02Ni1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IFNQQVJDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Njc6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY4LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTc9Y29uZmlnIEZCX0FDT1JOXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExOS1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IEFSTSBcdTAwMjZcdTAwMjYgQVJDSF9BQ09STlxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEyMDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjY9Y29uZmlnIEZCX0NMUFM3MTFYXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyOS1cdGRlcGVuZHMgb24gTENEX0NMQVNTX0RFVklDRVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMxLVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzc9Y29uZmlnIEZCX1NBMTEwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzktXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBBUk0gXHUwMDI2XHUwMDI2IEFSQ0hfU0ExMTAwXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0OT1jb25maWcgRkJfSU1YXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1My1cdGRlcGVuZHMgb24gTENEX0NMQVNTX0RFVklDRVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1LVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0NZQkVSMjAwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjAtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlQgXHUwMDI2XHUwMDI2IChCUk9LRU4gfHwgIVNQQVJDNjQpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYxOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjItXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE5NT1jb25maWcgRkJfUTQwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE5OC1cdGRlZmF1bHQgeVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE5OTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjAwLVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yMzg9Y29uZmlnIEZCX0ZNMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDAtXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBaT1JST1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI0MTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjQyLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNzA9Y29uZmlnIEZCX09GXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI3NC1cdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Mjc1Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNzYtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjgxPWNvbmZpZyBGQl9DT05UUk9MXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI4My1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2ICgoUFBDX1BNQUMgXHUwMDI2XHUwMDI2IFBQQzMyKSB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6Mjg0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yODUtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjkwPWNvbmZpZyBGQl9QTEFUSU5VTVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yOTItXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBQUENfUE1BQyBcdTAwMjZcdTAwMjYgUFBDMzJcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyOTM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI5NC1cdHNlbGVjdCBGQl9NQUNNT0RFU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yOTk9Y29uZmlnIEZCX1ZBTEtZUklFXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMwMS1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IChNQUMgfHwgKFBQQ19QTUFDIFx1MDAyNlx1MDAyNiBQUEMzMikpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzAyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDMtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzA4PWNvbmZpZyBGQl9DVDY1NTUwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMxMC1cdGRlcGVuZHMgb24gKEZCID0geSkgXHUwMDI2XHUwMDI2IFBQQzMyIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMTE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMxMi1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzE2PWNvbmZpZyBGQl9BU0lMSUFOVFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTgtXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozMTk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMyMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzcwPWNvbmZpZyBGQl9NQUNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzcyLVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgTUFDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzczOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNzQtXHRzZWxlY3QgRkJfTUFDTU9ERVNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDA3PWNvbmZpZyBGQl9VVkVTQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MTAtXHRkZXBlbmRzIG9uICFVTUxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0MTE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQxMi1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDI0PWNvbmZpZyBGQl9WRVNBXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQyNy1cdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NDI4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MjktXHRzZWxlY3QgU1lTRkJcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NDM2PWNvbmZpZyBGQl9FRklcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDQwLVx0c2VsZWN0IERSTV9QQU5FTF9PUklFTlRBVElPTl9RVUlSS1NcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0NDE6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ0Mi1cdHNlbGVjdCBTWVNGQlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00NTY9Y29uZmlnIEZCX0dCRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00NTktXHRkZXBlbmRzIG9uIFNHSV9JUDMyIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ2MDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDYxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz01NjY9Y29uZmlnIEZCX1hWUjI1MDBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTY4LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTY5Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzktXHRkZXBlbmRzIG9uIChGQiA9IHkpIFx1MDAyNlx1MDAyNiBTUEFSQzY0XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTgwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01ODEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTYxMD1jb25maWcgRkJfT1BFTkNPUkVTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYxMi1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEhBU19ETUFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2MTM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTYxNC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjM2PWNvbmZpZyBGQl9BVE1FTFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDEtXHRzZWxlY3QgRkJfQkFDS0xJR0hUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjQyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDMtXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTc0Nj1jb25maWcgRkJfSTc0MFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03NDgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3NDk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc1MC1cdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODk0PWNvbmZpZyBGQl9NQVRST1hfTUFWRU5cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODk2LVx0ZGVwZW5kcyBvbiBGQl9NQVRST1hfRyBcdTAwMjZcdTAwMjYgRkJfTUFUUk9YX0kyQ1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjg5NzpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctODk4LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz05NjU9Y29uZmlnIEZCX0FUWTEyOFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NjctXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5Njg6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTk2OS1cdHNlbGVjdCBGQl9NQUNNT0RFUyBpZiBQUENfUE1BQ1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTg3PWNvbmZpZyBGQl9LWVJPXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExODktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTkwOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTkxLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjI5PWNvbmZpZyBGQl9WT09ET08xXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMzEtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjMyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjMzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzExPWNvbmZpZyBGQl9DQVJNSU5FXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMTMtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMzE0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzE1LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzM1PWNvbmZpZyBGQl9BVTExMDBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMzOC1cdGRlcGVuZHMgb24gTUlQU19BTENIRU1ZIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMzk6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNDAtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MDE9Y29uZmlnIEZCX1BNQUdfQUFcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwMy1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IFRDXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwNDpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQwOT1jb25maWcgRkJfUE1BR19CQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDExLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgVENcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDEyOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDEzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDE3PWNvbmZpZyBGQl9QTUFHQl9CXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBUQ1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0MjA6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MjEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MjY9Y29uZmlnIEZCX01BWElORVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDI4LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgTUFDSF9ERUNTVEFUSU9OXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQyOTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQzNT1jb25maWcgRkJfRzM2NFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDM3LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgKE1JUFNfTUFHTlVNXzQwMDAgfHwgT0xJVkVUVElfTTcwMClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDM4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDM5LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDQzPWNvbmZpZyBGQl82ODMyOFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDQ1LVx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcdTAwMjZcdTAwMjYgKE02ODMyOCB8fCBNNjhFWjMyOCB8fCBNNjhWWjMyOClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDQ2Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDQ3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDUxPWNvbmZpZyBGQl9QWEExNjhcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ1NC1cdGRlcGVuZHMgb24gQ1BVX1BYQTE2OCB8fCBDUFVfUFhBOTEwIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0NTU6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0NTYtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0NjA9Y29uZmlnIEZCX1BYQVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDYyLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgQVJDSF9QWEFcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDYzOlx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDY0LVx0c2VsZWN0IFZJREVPTU9ERV9IRUxQRVJTIGlmIE9GXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MTE9Y29uZmlnIEZCX0ZTTF9ESVVcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUxMy1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZTTF9TT0NcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTE0Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTE1LVx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTMyPWNvbmZpZyBGQl9TM0Ncbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUzNS1cdGRlcGVuZHMgb24gQVJDSF9TM0M2NFhYIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1MzY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MzctXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1OTU9Y29uZmlnIEZCX0lCTV9HWFQ0NTAwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1OTctXHRkZXBlbmRzIG9uIEZCXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU5ODpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU5OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTYyMz1jb25maWcgRkJfWElMSU5YXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MjUtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiAoTUlDUk9CTEFaRSB8fCBBUkNIX1pZTlEgfHwgQVJDSF9aWU5RTVApXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYyNjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYyNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTYzMj1jb25maWcgRkJfR09MREZJU0hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNS1cdGRlcGVuZHMgb24gR09MREZJU0ggfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYzNjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY0MD1jb25maWcgRkJfQ09CQUxUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDItXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBNSVBTX0NPQkFMVFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2NDM6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDQtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY0NT1jb25maWcgRkJfU0g3NzYwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDgtXHRcdHx8IENQVV9TVUJUWVBFX1NINzcyMCB8fCBDUFVfU1VCVFlQRV9TSDc3MjEpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY0OTpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1MC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY5OD1jb25maWcgRkJfTUI4NjJYWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzAxLVx0ZGVwZW5kcyBvbiBQQ0kgfHwgKE9GIFx1MDAyNlx1MDAyNiBQUEMpXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTcwMjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTcwMy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTczNz1jb25maWcgRkJfRVA5M1hYXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MzktXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBBUkNIX0VQOTNYWFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE3NDA6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NDEtXHRoZWxwXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NjM9Y29uZmlnIEZCX1NJTVBMRVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY3LVx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzY4Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY5LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzkwPWNvbmZpZyBGQl9TTTcxMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzkyLVx0ZGVwZW5kcyBvbiBGQiBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBIQVNfSU9QT1JUXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc5MzpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc5NC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0lPTUVNX0hFTFBFUlNfREVGRVJSRURcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjEtXHRzZWxlY3QgRkJfREVGRVJSRURfSU9cbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE2MjpcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjMtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTEzPWNvbmZpZyBGQl9HRU9ERV9MWFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy0xNS1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZCX0dFT0RFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6MTY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTE3LVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZz0yNj1jb25maWcgRkJfR0VPREVfR1hcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMjgtXHRkZXBlbmRzIG9uIEZCIFx1MDAyNlx1MDAyNiBGQl9HRU9ERVxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnOjI5Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy0zMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc9Mzk9Y29uZmlnIEZCX0dFT0RFX0dYMVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy00MS1cdGRlcGVuZHMgb24gRkIgXHUwMDI2XHUwMDI2IEZCX0dFT0RFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6NDI6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTQzLVx0aGVscFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc9Mj1jb25maWcgTU1QX0ZCXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvS2NvbmZpZy00LVx0ZGVwZW5kcyBvbiBGQlxuZHJpdmVycy92aWRlby9mYmRldi9tbXAvZmIvS2NvbmZpZzo1Olx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWctNi1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnPTI9Y29uZmlnIEZCX09NQVBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBBUkNIX09NQVAxIHx8IChBUk0gXHUwMDI2XHUwMDI2IENPTVBJTEVfVEVTVClcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnOjY6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9vbWFwL0tjb25maWctNy1cdGhlbHBcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnPTU9bWVudWNvbmZpZyBGQl9PTUFQMlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWctMTEtXHRzZWxlY3QgT01BUDJfVlJGQiBpZiBBUkNIX09NQVAyIHx8IEFSQ0hfT01BUDNcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc6MTI6XHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xuZHJpdmVycy92aWRlby9mYmRldi9vbWFwMi9vbWFwZmIvS2NvbmZpZy0xMy1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEzMjEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxODkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBjb25maWd1cmUgdGhpcyBmcmFtZWJ1ZmZlciBzZXR1cC4gUmlnaHQgbm93LCBgRkJfU0lNUExFYCBwdWxscyBpbiBgRkJfSU9NRU1fSEVMUEVSU2AuIFRoYXQgbWFrZXMgc2Vuc2UuIFRoZSByZWFsIHRyaWNrIGlzIHRvIGdldCAqYm90aCogYEZCX1NZU01FTV9IRUxQRVJTYCBhbmQgYEZCX0lPTUVNX0hFTFBFUlNgLCBhbmQgaXQgbG9va3MgbGlrZSBJIGNhbiBkbyB0aGF0IGJ5IGVuYWJsaW5nIGBGQl9WSVJUVUFMYCAqYW5kKiBgRkJfU0lNUExFYC4gRG9pbmcgdGhhdCB3aWxsIHNlbGVjdCB0aGUgY29yZSBmdW5jdGlvbnMgSSBuZWVkIGZvciBiYXNpYyBvcGVyYXRpb25zOiBgRkJfU1lTX0NPUFlBUkVBYCwgYEZCX1NZU19GSUxMUkVDVGAsIGBGQl9TWVNfSU1BR0VCTElUYCwgYW5kIHRoZSBDRkIgdmFyaWFudHM6IGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfQ0ZCX0ZJTExSRUNUYCwgYEZCX0NGQl9JTUFHRUJMSVRgLgoKTm93LCBJICphbHNvKiBuZWVkIHRvIGVuc3VyZSBgZmJjb25gIGlzIGVuYWJsZWQsIHNpbmNlIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBhY3R1YWxseSAqdXNpbmcqIHRoZXNlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgRlJBTUVCVUZGRVJfQ09OU09MRWAgaXMgZW5hYmxlZC4KCldhaXQsIGBGQl9WSVJUVUFMYCBpcyBhIHRyaXN0YXRlLCBub3QgYSBib29sZWFuLCBzbyBJIHNob3VsZCBqdXN0IGJlIHNwZWNpZnlpbmcgYEZCX1ZJUlRVQUxgIGFuZCBgRkJfU0lNUExFYCwgYW5kIGxldCB0aGUgYnVpbGQgc3lzdGVtIHNvcnQgb3V0IHRoZSBpbnRlcm1lZGlhdGUgc3RhdGVzLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWcgbmFtZXMgcmlnaHQgZm9yIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9jb25zb2xlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZz00Nz1jb25maWcgRFVNTVlfQ09OU09MRV9ST1dTXG4tLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTctXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzo1ODpjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTktXHRib29sIFwmIzM0O0ZyYW1lYnVmZmVyIENvbnNvbGUgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTY3LVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6Njg6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfTEVHQUNZX0FDQ0VMRVJBVElPTlxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNjktXHRib29sIFwmIzM0O0VuYWJsZSBsZWdhY3kgZmJjb24gaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNvZGVcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnOjg4OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy04OS0gICAgICAgYm9vbCBcJiMzNDtNYXAgdGhlIGNvbnNvbGUgdG8gdGhlIHByaW1hcnkgZGlzcGxheSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMDMtXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzoxMDQ6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT05cbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTEwNS0gICAgICAgYm9vbCBcJiMzNDtGcmFtZWJ1ZmZlciBDb25zb2xlIFJvdGF0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctMTEzLVxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6MTE0OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O0ZyYW1lYnVmZmVyIENvbnNvbGUgRGVmZXJyZWQgVGFrZW92ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIxNzMKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBmcmFtZWJ1ZmZlciBvcHRpb25zIGhlcmUuIFllcCwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGRlZmluaXRlbHkgaW4gdGhlIG1peCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQsIG9mIGNvdXJzZSwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgaG9sZCBvbi4uLiBgRkJfU0lNUExFYC4uLiB0aGF0JiMzOTtzIGp1c3QgYSBkZWZpbml0aW9uLCBpc24mIzM5O3QgaXQ/IEl0JiMzOTtzIGNvbm5lY3RlZCB0byBgY29uZmlnIEZCX1NJTVBMRWAuIE9rYXksIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIExldCYjMzk7cyBkaWcgaW50byB0aGUgZGVwZW5kZW5jaWVzIG9mIGBGQl9TSU1QTEVgIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyB0aWVkIHRvLiBVbmRlcnN0YW5kaW5nIHRob3NlIGRlcGVuZGVuY2llcyBpcyBrZXkgdG8gdGhpcyBlbnRpcmUgY29uZmlndXJhdGlvbiBwdXp6bGUuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBkb24mIzM5O3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgbGVhdmUgYW55IGNyaXRpY2FsIGNvbXBvbmVudHMgb3V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRkJfU0lNUExFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjItXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2Mzpjb25maWcgRkJfU0lNUExFXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc2NC1cdHRyaXN0YXRlIFwmIzM0O1NpbXBsZSBmcmFtZWJ1ZmZlciBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTMxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgY29uZmlndXJhdGlvbiBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBkZXBlbmRlbmN5IG9uIHRoZSBhcmNoaXRlY3R1cmUuIEl0IGhpbmdlcyBvbiB3aGV0aGVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIGxpa2UgUFBDLCBBUk0sIFg4NiwgTUlQUywgU1BBUkMsIFJJU0NWLCBvciBhIGNvbXBpbGUgdGVzdCBzZXR1cDsgdGhhdCYjMzk7cyB0aGUgY29yZS4gVGhlbiwgYEZCX1ZJUlRVQUxgIGxvb2tzIGxpa2UgaXQmIzM5O2xsIGdldCBtZSB0aGUgYEZCX1NZU01FTV9IRUxQRVJTYCwgdGhhdCBtYWtlcyBzZW5zZS4gQnV0IHdoYXQgYWJvdXQgYEZCX0lPTUVNX0hFTFBFUlNgLCBob3cgZG8gSSBoYW5kbGUgdGhhdD8gSSBjYW4ganVzdCB0dXJuIG9uIGBGQl9WRVNBYCBvciBgRkJfRUZJYCBvciBgRkJfU0lNUExFYCwgb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVtLiBZZWFoLCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGJhc2UuCgpIb2xkIG9uLi4uIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgZm9jdXMgaXMgb24gdGhvc2UgY29yZSBvcGVyYXRpb25zLiBBbmQgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBub3cgYXJlIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuCgpIbW0sIEkgc2hvdWxkIGRvdWJsZSBjaGVjayB0aGF0IGBzeXNfY29weWFyZWFgIGlzIGV4cG9ydGVkLiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGFjY2Vzc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTChzeXNfY29weWFyZWEpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIGFzIEkgZGVsdmUgaW50byB0aGlzOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKioKCkhtbSwgd2hlcmUgZG8gSSBldmVuIGJlZ2luIHdpdGggdGhpcz8gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBnb2luZyBvbiwgYW5kIHRvIGRvIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCwgbGV0JiMzOTtzIGNoZWNrIGBzeXNjb3B5YXJlYS5jYC4mIzM0OyBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIGZpcnN0IHN0ZXAsIHJpZ2h0PyBJdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgbWVtb3J5IHRyYW5zZmVycy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGZpbGUgd2lsbCBsaWtlbHkgY29udGFpbiB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3Qgb3IgbWF5YmUgdGhlIGZ1bmN0aW9ucyBjYWxsaW5nIGl0LiBUaGlzIGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwgY29tbWVudGVkLiBJIGNhbiBnZXQgc29tZSBjb250ZXh0IHF1aWNrbHkgYW5kIHdvcmsgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jPTE5PXZvaWQgc3lzX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjUtfVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MjY6RVhQT1JUX1NZTUJPTChzeXNfY29weWFyZWEpO1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNDIyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlYnVnZ2luZyB0aGUgSW5jbHVkZSoqCgpPa2F5LCBpdCYjMzk7cyBleHBvcnRlZCEgSSBrbmV3IGl0IGhhZCB0byBiZSBzb21ldGhpbmcgc2ltcGxlLCBwcm9iYWJseSBhIGZydXN0cmF0aW5nIHR5cG8gb3IgYSByZWdleCBtaXN0YWtlIEkgb3Zlcmxvb2tlZCBlYXJsaWVyLiBUaW1lIHRvIG1vdmUgb24uCgpOb3csIGxldCYjMzk7cyBjYXN0IGEgd2lkZXIgbmV0LiBJIHNob3VsZCBodW50IGZvciBhbnkgb3RoZXIgcGxhY2VzIHRoZXNlIGhlYWRlcnMgYXJlIHB1bGxlZCBpbiwgc3BlY2lmaWNhbGx5IGBmYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0LmhgLCBvciBgZmJfaW1hZ2VibGl0LmhgLiBJJiMzOTt2ZSBhbHJlYWR5IGNvbmZpcm1lZCB0aGF0IGBmYl9jb3B5YXJlYS5oYCBpcyBvbmx5IHVzZWQgaW4gYGNmYmNvcHlhcmVhLmNgIGFuZCBgc3lzY29weWFyZWEuY2AsIHNvIHRoYXQmIzM5O3MgY292ZXJlZC4gSG1tLCB3aGF0IGFib3V0IGBmYl9maWxscmVjdC5oYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9maWxscmVjdC5oXCYjMzQ7JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcJiMzNDtjZmJtZW0uaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfZmlsbHJlY3QuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTgtXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZiX2ZpbGxyZWN0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg4MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIGBmYl9pbWFnZWJsaXQuaGAqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGZyYW1lYnVmZmVyIGltYWdlIGJsaXR0aW5nIGhlYWRlciwgYGZiX2ltYWdlYmxpdC5oYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQgYXJlIHdlICpkb2luZyogd2l0aCB0aGlzPyBBcmUgd2UgbG9va2luZyBhdCBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLCBhIHBvdGVudGlhbCBvcHRpbWl6YXRpb24sIG9yIHBlcmhhcHMgYSBwb3J0YWJpbGl0eSBpc3N1ZT8gSSYjMzk7bSBhbHJlYWR5IG1lbnRhbGx5IHJ1bm5pbmcgdGhyb3VnaCB0aGUgdmFyaW91cyBjb250ZXh0cyB3aGVyZSBJJiMzOTt2ZSBlbmNvdW50ZXJlZCB0aGlzIOKAkyBkaXJlY3QgZnJhbWVidWZmZXIgbWFuaXB1bGF0aW9uLCBncmFwaGljcyBsaWJyYXJ5IGludGVncmF0aW9uLCBkZXZpY2Utc3BlY2lmaWMgZHJpdmVyc+KApiB0aGUgbGlzdCBnb2VzIG9uLiBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byByZWFsbHkgZGlnIGluLiBJIGFzc3VtZSB3ZeKAmXJlIGV4cGxvcmluZyBvcHRpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGFsaWdubWVudCBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzLiBBcmUgd2UgY29uY2VybmVkIHdpdGggcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb25zPyBPciBhcmUgd2UgY29uc2lkZXJpbmcgd2F5cyB0byBzdHJlYW1saW5lIHRoZSBibGl0dGluZyBwcm9jZXNzIGl0c2VsZiwgcGVyaGFwcyB0YXJnZXRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmU/IEdvdHRhIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGFjdHVhbCBnb2FsIGJlZm9yZSBJIGNhbiBvZmZlciBhbnkgaW5zaWdodGZ1bCBjb21tZW50LiBXaGF0JiMzOTtzIHRoZSBhcHBsaWNhdGlvbiBoZXJlPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsjaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFwmIzM0O2NmYm1lbS5oXCYjMzQ7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXCYjMzQ7ZmJfaW1hZ2VibGl0LmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXCYjMzQ7c3lzbWVtLmhcJiMzNDtcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcJiMzNDtmYl9pbWFnZWJsaXQuaFwmIzM0O1xuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMxMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZyYW1lYnVmZmVyIEJvdW5kcyBDaGVja2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgZm9jdXMgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIHRob3NlIHNpeCBmdW5jdGlvbnPigJQgYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGVtLgoKTGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUuIFRoZXkmIzM5O3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAsIHdoaWNoIGFyZSBjb3JlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucy4gSXQmIzM5O3MgYW4gaW5saW5lIHNpdHVhdGlvbiwgdXNlZCBieSB0aGUgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyBpbiBgY2ZiXypgIGFuZCBgc3lzXypgLiBUaGlzIGJvdW5kcyBjaGVja2luZyBzcGVjaWZpY2FsbHkgZ3VhcmRzIGFnYWluc3Qgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMuIEVzc2VudGlhbGx5LCB0aGUgcGF0Y2ggbWl0aWdhdGVzIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBvciBvdXQtb2YtYm91bmRzIHJlYWRzL3dyaXRlcyB3aGVuIG9wZXJhdGlvbnMsIGxpa2Ugc2Nyb2xsaW5nIGluIGBmYmNvbmAsIHVzZSBjb29yZGluYXRlcyB0aGF0IGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCB3aGljaCBpcyBhIGdyZWF0IHBsYWNlIHRvIHN0YXJ0IGZ1enppbmcsIGZvciBzdXJlLgoKVGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgd2hldGhlciBgRkJfVklSVFVBTGAgaXMgc3VmZmljaWVudCB0byB0cmlnZ2VyIHRoaXMuIENvbnNpZGVyaW5nIHRoYXQgYHZmYmAgdXNlcyBgc3lzX2ZpbGxyZWN0YCwgYHN5c19jb3B5YXJlYWAsIGFuZCBgc3lzX2ltYWdlYmxpdGAsIGl0IGxvb2tzIGxpa2UgaXQgaXMuIEl0JiMzOTtzIHdvcnRoIGRvdWJsZS1jaGVja2luZyBgdmZiLmNgIGp1c3QgdG8gbWFrZSBzdXJlLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3lzX2NvcHlhcmVhJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi92ZmIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0OTMxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgY29kZToKCioqQ2hlY2tpbmcgdGhlIEZyYW1lYnVmZmVyIE9wZXJhdGlvbnMqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbC4gTGV0JiMzOTtzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGB2ZmIuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGZiX29wc2AgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZHJpdmVyIGFuZCB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUuIEFyZSB3ZSB1c2luZyB0aGUgc3RhbmRhcmQgY2FsbHMsIG92ZXJyaWRpbmcgYW55LCBvciBkZWZpbmluZyBuZXcgb3BlcmF0aW9ucz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGJ1aWxkIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGJyb2FkZXIgc3lzdGVtIGludGVyYWN0aW9uLiBHb3R0YSBiZSByaWdvcm91cyBoZXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz03OD1zdGF0aWMgaW50IHZmYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLFxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMtODAtXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jLTgyLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz00MjY9c3RhdGljIGludCB2ZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmMtNDQzLVx0aW5mby1cdTAwM2VzY3JlZW5fYnVmZmVyID0gdmlkZW9tZW1vcnk7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjQ0NDpcdGluZm8tXHUwMDNlZmJvcHMgPSBcdTAwMjZ2ZmJfb3BzO1xuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgYHZmYl9vcHNgIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBpbnRvIGl0LiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgY2xlYXI6IEkgbmVlZCB0byBzY3J1dGluaXplIHRoZSBgdmZiX29wc2Agc3RydWN0dXJlLiBUaGlzIGxpa2VseSBjb250YWlucyB0aGUgY29yZSBmdW5jdGlvbiBwb2ludGVycyBhbmQgZGF0YSBuZWVkZWQgdG8gbWFuYWdlIHRoZSB2aXJ0dWFsIGZyYW1lYnVmZmVyIGRldmljZS4gVGhlIG5hbWUgaXRzZWxmIGlzIHByZXR0eSB0ZWxsaW5nLiAmIzM0O09wZXJhdGlvbnMmIzM0OyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVycyDigJMgdGhlIGhvb2tzIHRoYXQgdGhlIHVwcGVyIGxheWVycyB3aWxsIHVzZSB0byBpbnRlcmFjdCB3aXRoIHRoaXMgcGFydGljdWxhciB2aXJ0dWFsIGZyYW1lYnVmZmVyLiBTbywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleeKAmXJlIGludGVuZGVkIHRvIGJlIHVzZWQuIEnigJltIHRoaW5raW5nIGluaXRpYWxpemF0aW9uLCBmcmFtZWJ1ZmZlciBhY2Nlc3MgKHJlYWRpbmcgYW5kIHdyaXRpbmcgcGl4ZWxzKSwgcG9zc2libHkgc29tZSBjb250cm9sIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdGhlIHJlc29sdXRpb24sIHZpcnR1YWwgc2NyZWVuIHNpemVzIGFuZCBwZXJoYXBzIGV2ZW4gY29sb3IgZGVwdGhzLiBJIHdpbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkYXRhIHR5cGVzIHBvaW50ZWQgdG8gYnkgdGhlIHN0cnVjdHVyZSBtZW1iZXJzLiBJdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyB2aXJ0dWFsIGZyYW1lYnVmZmVyJiMzOTtzIG92ZXJhbGwgZnVuY3Rpb24gYW5kIGludGVncmF0aW9uIHdpdGhpbiB0aGUga2VybmVsLiBMZXQmIzM5O3Mgc2VlIHdoYXTigJlzIGluc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA4MTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XG4gIDgyOlx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbiAgODM6XHRcdF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX1JEV1IsXG4gIDg0Olx0XHQuZmJfY2hlY2tfdmFyXHQ9IHZmYl9jaGVja192YXIsXG4gIDg1Olx0XHQuZmJfc2V0X3Bhclx0PSB2ZmJfc2V0X3BhcixcbiAgODY6XHRcdC5mYl9zZXRjb2xyZWdcdD0gdmZiX3NldGNvbHJlZyxcbiAgODc6XHRcdC5mYl9wYW5fZGlzcGxheVx0PSB2ZmJfcGFuX2Rpc3BsYXksXG4gIDg4Olx0XHRfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19EUkFXLFxuICA4OTpcdFx0LmZiX21tYXBcdD0gdmZiX21tYXAsXG4gIDkwOlx0fTtcbiAgOTE6XHRcbiAgOTI6XHQgICAgLypcbiAgOTM6XHQgICAgICogIEludGVybmFsIHJvdXRpbmVzXG4gIDk0Olx0ICAgICAqL1xuICA5NTpcdFxuICA5NjpcdHN0YXRpYyB1X2xvbmcgZ2V0X2xpbmVfbGVuZ3RoKGludCB4cmVzX3ZpcnR1YWwsIGludCBicHApXG4gIDk3Olx0e1xuICA5ODpcdFx0dV9sb25nIGxlbmd0aDtcbiAgOTk6XHRcbiAxMDA6XHRcdGxlbmd0aCA9IHhyZXNfdmlydHVhbCAqIGJwcDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU5NTIKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIEdyYXBoaWNzIE9wZXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJIHNlZSBgX19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBV2AgaW4gcGxheS4gVGhhdCYjMzk7cyBhIGZhbWlsaWFyIHBhdHRlcm4sIHVzdWFsbHkgcG9pbnRpbmcgdG93YXJkcyBhIGRlZmF1bHQgZHJhd2luZyBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGZyYW1lYnVmZmVyIHN5c3RlbS4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gdG8gdW5kZXJzdGFuZCBhcyB0aGUgdW5kZXJseWluZyBncmFwaGljcyBhcmNoaXRlY3R1cmUgbGlrZWx5IGhhcyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIE15IGZpcnN0IHN0ZXAgaXMgdG8gaW1tZWRpYXRlbHkgZHJpbGwgZG93biBvbiB0aGF0IG1hY3JvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgdGhhdCBleHBhbmRzIHRvLiBXaGF0IGFyZSB0aGUgc3BlY2lmaWMgbWVtb3J5IG9wZXJhdGlvbnMgYW5kIGFsZ29yaXRobXMgaW52b2x2ZWQ/IEtub3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhpcyBtYWNybyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBob3cgdGhpcyBzeXN0ZW0gYWN0dWFsbHkgcmVuZGVycyBncmFwaGljcyBhbmQsIG1vcmUgaW1wb3J0YW50bHksIHdoZXJlIHBvdGVudGlhbCBib3R0bGVuZWNrcyBtaWdodCBsaWUuIFRoaXMgaXMgbGlrZWx5IHRoZSBlbnRyeSBwb2ludCB0byBvcHRpbWl6ZSBmb3IgYSBzcGVjaWZpYyBncmFwaGljcyB3b3JrbG9hZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZmIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZiLmg9NTc3PWV4dGVybiBzc2l6ZV90IGZiX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5pbmNsdWRlL2xpbnV4L2ZiLmgtNTgzLVxuaW5jbHVkZS9saW51eC9mYi5oOjU4NDojZGVmaW5lIF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcgXFxcbmluY2x1ZGUvbGludXgvZmIuaC01ODUtXHQuZmJfZmlsbHJlY3RcdD0gc3lzX2ZpbGxyZWN0LCBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjMxNQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGluIHRoZSBmaXJzdCBwZXJzb24sIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQgd291bGQgdGhpbmsgYWJvdXQgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uOgoKKipUaGlua2luZyBUaHJvdWdoIHRoZSBGcmFtZWJ1ZmZlciBPcGVyYXRpb25zKioKCkFoLCByaWdodC4gSSBzZWUgaXQgbm93LiBXaGVuIHdlJiMzOTtyZSBjb25zaWRlcmluZyB0aGUgZnJhbWVidWZmZXIgaW1wbGVtZW50YXRpb25zLCB0aGUgZXhwYW5zaW9uIHVuZm9sZHMgY2xlYXJseTogdGhlIGFic3RyYWN0IGZ1bmN0aW9uIGNhbGxzIHJlc29sdmUgdG8gYHN5c19maWxscmVjdGAsIGBzeXNfY29weWFyZWFgLCBhbmQgYHN5c19pbWFnZWJsaXRgLiBUaGlzIGNvbmZpcm1zIHRoZSBpbml0aWFsIGh1bmNoLiBgRkJfVklSVFVBTGAgaXMgcHJlY2lzZWx5IHdoYXQgd2Ugd2FudCBpbiB0aGlzIHNjZW5hcmlvIOKAkyBpdCBpcyBwZXJmZWN0bHkgc3VpdGVkIGZvciB0aGlzIHB1cnBvc2UgYW5kIEkgY2FuIHNlZSBpdHMgYWR2YW50YWdlcy4KClRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGBGQl9TSU1QTEVgPyBXZSBoYXZlIHRvIGV2YWx1YXRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zIGFuZCB0aGVpciByZXF1aXJlbWVudHMgYW5kIHdoZXRoZXIgd2UgbmVlZCB0aGUgbW9yZSBhZHZhbmNlZCBjYXBhYmlsaXRpZXMgb2YgYSB2aXJ0dWFsIGZyYW1lYnVmZmVyIG9yIGlmIGEgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpcyBzdWZmaWNpZW50LiBUaGlzIGlzIHRoZSBtb3JlIGNydWNpYWwgcG9pbnQgb2YgZXZhbHVhdGlvbiwgYXMgdGhlIHVzZSBvZiBvbmUgdnMgdGhlIG90aGVyIGhhcyBzaWduaWZpY2FudCBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19GQl9ERUZBVUxUX0lPTUVNX09QU19EUkFXJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY2MDMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIGBmYl9vcHNgIGluIGBzaW1wbGVmYi5jYCoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoIHRoZSBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBzaW1wbGVmYi5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGBmYl9vcHNgIHN0cnVjdHVyZS4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnJhbWVidWZmZXIgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUg4oCTIHRoaW5ncyBsaWtlIGBmYl9maWxscmVjdGAsIGBmYl9jb3B5YXJlYWAsIGBmYl9pbWFnZWJsaXRgIOKAkyB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9uIGZ1bmN0aW9ucy4gV2hhdCBjdXN0b21pemF0aW9ucyBvciBzcGVjaWFsIGhhbmRsaW5nIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHNpbXBsZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaW50cm9kdWNlPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgdmlydHVhbCBmcmFtZWJ1ZmZlciB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3Igbm90ZXdvcnRoeSBkZXRhaWxzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zPyBJJiMzOTtsbCBhbHNvIGNoZWNrIGZvciBhbnkgY29tbWVudHMgZXhwbGFpbmluZyB0aGUgZGVzaWduIGNob2ljZXMgaGVyZS4gVGhpcyBpcyBteSBzdGFydGluZyBwb2ludCB0byBzZWUgdGhlIGZ1bmN0aW9uYWwgYmFja2JvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZiX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM9OTY9c3RhdGljIHZvaWQgc2ltcGxlZmJfZGV0YWNoX2dlbnBkcyh2b2lkICpyZXMpO1xuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy05OC0vKlxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jOjk5OiAqIGZiX29wcy5mYl9kZXN0cm95IGlzIGNhbGxlZCBieSB0aGUgbGFzdCBwdXRfZmJfaW5mbygpIGNhbGwgYXQgdGhlIGVuZFxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTEwMC0gKiBvZiB1bnJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkgb3IgZmJfcmVsZWFzZSgpLiBEbyBhbnkgY2xlYW51cCBoZXJlLlxuLS1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYz0xMDI9c3RhdGljIHZvaWQgc2ltcGxlZmJfZGVzdHJveShzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTE4LVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jOjExOTpzdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyBzaW1wbGVmYl9vcHMgPSB7XG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTIwLVx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jPTUzMj1zdGF0aWMgaW50IHNpbXBsZWZiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMC1cbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzo2MDE6XHRpbmZvLVx1MDAzZWZib3BzID0gXHUwMDI2c2ltcGxlZmJfb3BzO1xuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMi1cdGluZm8tXHUwMDNlc2NyZWVuX2Jhc2UgPSBpb3JlbWFwX3djKGluZm8tXHUwMDNlZml4LnNtZW1fc3RhcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MjI1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYHNpbXBsZWZiX29wc2AqKgoKQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbWluZCBpcywgJiMzNDtMZXQmIzM5O3MgY3JhY2sgb3BlbiBgc2ltcGxlZmJfb3BzYC4mIzM0OyBObyBmbHVmZiwganVzdCBnZXR0aW5nIGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgbW9kdWxlLCBpdHMgcHVycG9zZSwgYW5kIGl0cyBpbnRlcm5hbCBtZWNoYW5pc21zLiBUaGUgbmFtZSBzdWdnZXN0cyB0aGlzIG1pZ2h0IGJlIGEgcmVsYXRpdmVseSBiYXNpYyBvciBmb2N1c2VkIHNldCBvZiBvcGVyYXRpb25zIGludGVyYWN0aW5nIHdpdGggdGhlIGZyYW1lYnVmZmVyLCBwZXJoYXBzIGEgc3RyaXBwZWQtZG93biBpbXBsZW1lbnRhdGlvbiBvciBhIHV0aWxpdHkgbGF5ZXIuIEkmIzM5O20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0OiBjb2xvciBkZXB0aCBoYW5kbGluZywgYWRkcmVzc2luZyBtZW1vcnkgZGlyZWN0bHksIHNjcmVlbiBidWZmZXIgbWFuaXB1bGF0aW9uLCBhbnkgYXNzb2NpYXRlZCBsb2NraW5nIG1lY2hhbmlzbXMuLi4gYWxsIHRoZSB1c3VhbCBzdXNwZWN0cyB3aGVuIHdvcmtpbmcgYXQgdGhpcyBsZXZlbC4gTGV0JiMzOTtzIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gcmVmbGVjdHMgbXkgaW5pdGlhbCBleHBlY3RhdGlvbnMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjIgMTc6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExOTpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHNpbXBsZWZiX29wcyA9IHtcbiAxMjA6XHRcdC5vd25lclx0XHQ9IFRISVNfTU9EVUxFLFxuIDEyMTpcdFx0RkJfREVGQVVMVF9JT01FTV9PUFMsXG4gMTIyOlx0XHQuZmJfZGVzdHJveVx0PSBzaW1wbGVmYl9kZXN0cm95LFxuIDEyMzpcdFx0LmZiX3NldGNvbHJlZ1x0PSBzaW1wbGVmYl9zZXRjb2xyZWcsXG4gMTI0Olx0fTtcbiAxMjU6XHRcbiAxMjY6XHRzdGF0aWMgc3RydWN0IHNpbXBsZWZiX2Zvcm1hdCBzaW1wbGVmYl9mb3JtYXRzW10gPSBTSU1QTEVGQl9GT1JNQVRTO1xuIDEyNzpcdFxuIDEyODpcdHN0cnVjdCBzaW1wbGVmYl9wYXJhbXMge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMiAxNzo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzYxNwoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiAyNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJhbWVidWZmZXIgUGF0Y2gqKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93biBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZS4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgZnJhbWVidWZmZXItcmVsYXRlZCBwYXRjaCBoZXJlLiAgYEZCX0RFRkFVTFRfSU9NRU1fT1BTYCBpcyBrZXksIGFuZCBpdCBleHBhbmRzIHRvIHRoZSByZWFkL3dyaXRlIGFuZCBkcmF3IG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB1c2luZyBgY2ZiX2ZpbGxyZWN0YCwgYGNmYl9jb3B5YXJlYWAsIGFuZCBgY2ZiX2ltYWdlYmxpdGAuICBUaGF0JiMzOTtzIGFsbCBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBzdHVmZiwgYW5kLCBnaXZlbiB0aGF0LCBgRkJfU0lNUExFYCBzaG91bGQgYWJzb2x1dGVseSBiZSByZWxldmFudCwgdG9vLgoKU28sIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCBhbmFseXNpcyBmb3IgZnV6emluZyBwdXJwb3NlczoKCiogICAqKldvcnRoRnV6emluZzogVFJVRSoqLiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlLgoqICAgKipFbmFibGVkIENvbmZpZ3VyYXRpb25zOioqIGBGQmAsIGBGQl9WSVJUVUFMYCwgYEZCX1NJTVBMRWAsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAuIFRoZXNlIGFyZSB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCB3b3VsZCBsaWtlbHkgZXhwb3NlIHRoZSB2dWxuZXJhYmxlIGNvZGUgcGF0aHMuCiogICAqKkZvY3VzZWQgU3ltYm9sczoqKiBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGBjZmJfZmlsbHJlY3RgLCBgc3lzX2ZpbGxyZWN0YCwgYGNmYl9pbWFnZWJsaXRgLCBhbmQgYHN5c19pbWFnZWJsaXRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcGF0Y2gsIHByZXN1bWFibHkgdGhlIG9uZXMgcmVzcG9uc2libGUgZm9yIHRoZSBib3VuZHMgY2hlY2tzLgoKVGhlIHJlYXNvbmluZyBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIGlzIGFib3V0IGJvdW5kcyBjaGVja2luZyBpbiBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGdvIHBhc3QgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbiBsaW1pdHMuIFRob3NlIGBjZmJfKmAgYW5kIGBzeXNfKmAgZnVuY3Rpb25zIGFyZSwgY3JpdGljYWxseSwgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcy4gVGhleSYjMzk7cmUgd2hhdCBnZXQgdXNlZCB3aGVuIG1vcmUgb3B0aW1pemVkIGhhcmR3YXJlLWFjY2VsZXJhdGVkIHBhdGhzIGFyZW4mIzM5O3QgYXZhaWxhYmxlLCBhbmQgdGhhdCBpbmNsdWRlcyB0aG9zZSByZWFjaGFibGUgdGhyb3VnaCBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4KCkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXR5LiBJdCBpcyBjb3JyZWN0aW5nIGFuIG9idmlvdXMgc2VjdXJpdHkgcmlzay4gV2UgbmVlZCB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgdGhlIGZpeCBpcyBjb21wbGV0ZSBhbmQgcm9idXN0LiBUaGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJIHdpbGwgbm90ZSB0byBiZSBzdXJlIHRvIGZvY3VzIG9uIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3RscyB3aGVuIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIyIDE3OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtGQiYjMzQ7LAogICAgJiMzNDtGQl9WSVJUVUFMJiMzNDssCiAgICAmIzM0O0ZCX1NJTVBMRSYjMzQ7LAogICAgJiMzNDtGUkFNRUJVRkZFUl9DT05TT0xFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2ZiX2NvcHlhcmVhJiMzNDssCiAgICAmIzM0O3N5c19jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtjZmJfZmlsbHJlY3QmIzM0OywKICAgICYjMzQ7c3lzX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O2NmYl9pbWFnZWJsaXQmIzM0OywKICAgICYjMzQ7c3lzX2ltYWdlYmxpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja2luZyB0byBpbmxpbmUgZnJhbWVidWZmZXIgcmVuZGVyaW5nIGZ1bmN0aW9ucyAoZmJfY29weWFyZWEsIGZiX2ZpbGxyZWN0LCBmYl9pbWFnZWJsaXQpIHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzZXMgd2hlbiByZW5kZXJpbmcgY29vcmRpbmF0ZXMgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24uIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIChjZmJfKiBhbmQgc3lzXyopLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3Rscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZpeGluZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkImIzM0OywKICAgICYjMzQ7RkJfVklSVFVBTCYjMzQ7LAogICAgJiMzNDtGQl9TSU1QTEUmIzM0OywKICAgICYjMzQ7RlJBTUVCVUZGRVJfQ09OU09MRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NmYl9jb3B5YXJlYSYjMzQ7LAogICAgJiMzNDtzeXNfY29weWFyZWEmIzM0OywKICAgICYjMzQ7Y2ZiX2ZpbGxyZWN0JiMzNDssCiAgICAmIzM0O3N5c19maWxscmVjdCYjMzQ7LAogICAgJiMzNDtjZmJfaW1hZ2VibGl0JiMzNDssCiAgICAmIzM0O3N5c19pbWFnZWJsaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMgKGZiX2NvcHlhcmVhLCBmYl9maWxscmVjdCwgZmJfaW1hZ2VibGl0KSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyAoY2ZiXyogYW5kIHN5c18qKSwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgZnJhbWVidWZmZXIgY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1NS45NDE0NjY3NjhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY4NTA2OTQ3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1NS45NDE0NzI1MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDQwNzk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzODllZDQyMzcxMjcxODEwNTlmYmY2ZTk3NzMxOTg2Mjk3ZTRjYjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjIgMTc6NTA6NTQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXFxuQEAgLTM4Niw2ICszODYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWFcXG4gXFx0c3RydWN0IGZiX2FkZHJlc3Mgc3JjID0gZHN0O1xcbiBcXHRib29sIHJldl9jb3B5ID0gKGR5IFxcdTAwM2Ugc3kpIHx8IChkeSA9PSBzeSBcXHUwMDI2XFx1MDAyNiBhcmVhLVxcdTAwM2VkeCBcXHUwMDNlIGFyZWEtXFx1MDAzZXN4KTtcXG4gXFxuK1xcdGlmIChhcmVhLVxcdTAwM2VkeCBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VkeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VzeCBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2VzeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2V3aWR0aCBcXHUwMDNlIHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVxcdTAwM2VkeCB8fFxcbitcXHQgICAgYXJlYS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXFx1MDAzZWR5IHx8XFxuK1xcdCAgICBhcmVhLVxcdTAwM2V3aWR0aCBcXHUwMDNlIHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVxcdTAwM2VzeCB8fFxcbitcXHQgICAgYXJlYS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXFx1MDAzZXN5KVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAocmV2X2NvcHkpIHtcXG4gXFx0XFx0ZHkgKz0gaGVpZ2h0IC0gMTtcXG4gXFx0XFx0c3kgKz0gaGVpZ2h0IC0gMTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmggYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxcbmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXFxuQEAgLTI2MSw2ICsyNjEsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3RcXG4gXFx0c3RydWN0IGZiX2FkZHJlc3MgZHN0ID0gZmJfYWRkcmVzc19pbml0KHApO1xcbiBcXHRzdHJ1Y3QgZmJfcGF0dGVybiBwYXR0ZXJuO1xcbiBcXG4rXFx0aWYgKHJlY3QtXFx1MDAzZWR4IFxcdTAwM2U9IHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIHJlY3QtXFx1MDAzZWR5IFxcdTAwM2U9IHAtXFx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIHJlY3QtXFx1MDAzZXdpZHRoIFxcdTAwM2UgcC1cXHUwMDNldmFyLnhyZXNfdmlydHVhbCAtIHJlY3QtXFx1MDAzZWR4IHx8XFxuK1xcdCAgICByZWN0LVxcdTAwM2VoZWlnaHQgXFx1MDAzZSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIC0gcmVjdC1cXHUwMDNlZHkpXFxuK1xcdFxcdHJldHVybjtcXG4rXFxuIFxcdGZiX2FkZHJlc3NfZm9yd2FyZChcXHUwMDI2ZHN0LCByZWN0LVxcdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyByZWN0LVxcdTAwM2VkeCAqIGJwcCk7XFxuIFxcbiBcXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXFx1MDAzZWNvbG9yXSA6IHJlY3QtXFx1MDAzZWNvbG9yKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXFxuaW5kZXggM2IyYmI0OTQ2NTA1Y2UuLjVlYzE3ZDdiOTkzMzlkIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxcbkBAIC00ODYsNiArNDg2LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXFxuIFxcdHN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7XFxuIFxcdGNvbnN0IHUzMiAqcGFsZXR0ZSA9IGZiX3BhbGV0dGUocCk7XFxuIFxcbitcXHRpZiAoaW1hZ2UtXFx1MDAzZWR4IFxcdTAwM2U9IHAtXFx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcXG4rXFx0ICAgIGltYWdlLVxcdTAwM2VkeSBcXHUwMDNlPSBwLVxcdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XFxuK1xcdCAgICBpbWFnZS1cXHUwMDNld2lkdGggXFx1MDAzZSBwLVxcdTAwM2V2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtXFx1MDAzZWR4IHx8XFxuK1xcdCAgICBpbWFnZS1cXHUwMDNlaGVpZ2h0IFxcdTAwM2UgcC1cXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLVxcdTAwM2VkeSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0ZmJfYWRkcmVzc19mb3J3YXJkKFxcdTAwMjZkc3QsIGltYWdlLVxcdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyBpbWFnZS1cXHUwMDNlZHggKiBicHApO1xcbiBcXG4gXFx0aWYgKGltYWdlLVxcdTAwM2VkZXB0aCA9PSAxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MDo1Ni41MjI0ODA4NzJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTYyNjk2NjY4MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDMzODllZDQyMzcxMjcxODEwNTlmYmY2ZTk3NzMxOTg2Mjk3ZTRjYjRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyMiAxNzo1MDo1NCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmhcbmluZGV4IDUzZjFkNTM4NWM2ZTQxLi5mNGZjODZhNTE0Y2I0NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oXG4rKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaFxuQEAgLTM4Niw2ICszODYsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWFcbiBcdHN0cnVjdCBmYl9hZGRyZXNzIHNyYyA9IGRzdDtcbiBcdGJvb2wgcmV2X2NvcHkgPSAoZHkgXHUwMDNlIHN5KSB8fCAoZHkgPT0gc3kgXHUwMDI2XHUwMDI2IGFyZWEtXHUwMDNlZHggXHUwMDNlIGFyZWEtXHUwMDNlc3gpO1xuIFxuK1x0aWYgKGFyZWEtXHUwMDNlZHggXHUwMDNlPSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBhcmVhLVx1MDAzZWR5IFx1MDAzZT0gcC1cdTAwM2V2YXIueXJlc192aXJ0dWFsIHx8XG4rXHQgICAgYXJlYS1cdTAwM2VzeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuK1x0ICAgIGFyZWEtXHUwMDNlc3kgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZWR4IHx8XG4rXHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlZHkgfHxcbitcdCAgICBhcmVhLVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSBhcmVhLVx1MDAzZXN4IHx8XG4rXHQgICAgYXJlYS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGFyZWEtXHUwMDNlc3kpXG4rXHRcdHJldHVybjtcbitcbiBcdGlmIChyZXZfY29weSkge1xuIFx0XHRkeSArPSBoZWlnaHQgLSAxO1xuIFx0XHRzeSArPSBoZWlnaHQgLSAxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhcbmluZGV4IGYzNjY2NzBhNTNhZjgyLi4zN2Y1NWFkYjJlNmYwMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9maWxscmVjdC5oXG4rKysgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfZmlsbHJlY3QuaFxuQEAgLTI2MSw2ICsyNjEsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3RcbiBcdHN0cnVjdCBmYl9hZGRyZXNzIGRzdCA9IGZiX2FkZHJlc3NfaW5pdChwKTtcbiBcdHN0cnVjdCBmYl9wYXR0ZXJuIHBhdHRlcm47XG4gXG4rXHRpZiAocmVjdC1cdTAwM2VkeCBcdTAwM2U9IHAtXHUwMDNldmFyLnhyZXNfdmlydHVhbCB8fFxuK1x0ICAgIHJlY3QtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICByZWN0LVx1MDAzZXdpZHRoIFx1MDAzZSBwLVx1MDAzZXZhci54cmVzX3ZpcnR1YWwgLSByZWN0LVx1MDAzZWR4IHx8XG4rXHQgICAgcmVjdC1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIHJlY3QtXHUwMDNlZHkpXG4rXHRcdHJldHVybjtcbitcbiBcdGZiX2FkZHJlc3NfZm9yd2FyZChcdTAwMjZkc3QsIHJlY3QtXHUwMDNlZHkgKiBiaXRzX3Blcl9saW5lICsgcmVjdC1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRwYXR0ZXJuLnBpeGVscyA9IHBpeGVsX3RvX3BhdChicHAsIHBhbGV0dGUgPyBwYWxldHRlW3JlY3QtXHUwMDNlY29sb3JdIDogcmVjdC1cdTAwM2Vjb2xvcik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ltYWdlYmxpdC5oXG5pbmRleCAzYjJiYjQ5NDY1MDVjZS4uNWVjMTdkN2I5OTMzOWQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfaW1hZ2VibGl0LmhcbisrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaFxuQEAgLTQ4Niw2ICs0ODYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSlcbiBcdHN0cnVjdCBmYl9yZXZlcnNlIHJldmVyc2UgPSBmYl9yZXZlcnNlX2luaXQocCk7XG4gXHRjb25zdCB1MzIgKnBhbGV0dGUgPSBmYl9wYWxldHRlKHApO1xuIFxuK1x0aWYgKGltYWdlLVx1MDAzZWR4IFx1MDAzZT0gcC1cdTAwM2V2YXIueHJlc192aXJ0dWFsIHx8XG4rXHQgICAgaW1hZ2UtXHUwMDNlZHkgXHUwMDNlPSBwLVx1MDAzZXZhci55cmVzX3ZpcnR1YWwgfHxcbitcdCAgICBpbWFnZS1cdTAwM2V3aWR0aCBcdTAwM2UgcC1cdTAwM2V2YXIueHJlc192aXJ0dWFsIC0gaW1hZ2UtXHUwMDNlZHggfHxcbitcdCAgICBpbWFnZS1cdTAwM2VoZWlnaHQgXHUwMDNlIHAtXHUwMDNldmFyLnlyZXNfdmlydHVhbCAtIGltYWdlLVx1MDAzZWR5KVxuK1x0XHRyZXR1cm47XG4rXG4gXHRmYl9hZGRyZXNzX2ZvcndhcmQoXHUwMDI2ZHN0LCBpbWFnZS1cdTAwM2VkeSAqIGJpdHNfcGVyX2xpbmUgKyBpbWFnZS1cdTAwM2VkeCAqIGJwcCk7XG4gXG4gXHRpZiAoaW1hZ2UtXHUwMDNlZGVwdGggPT0gMSlcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUwOjU2LjUyMjQ4MjMxMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NDYwMDkzNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGcmFtZWJ1ZmZlciBEcmF3aW5nIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0YXJnZXRpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgIGluIHRob3NlIGNvcmUgZnJhbWVidWZmZXIgaGVhZGVycywgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYC4gVGhvc2UgYXJlIGlubGluZSBmdW5jdGlvbnMsIHNvIHRoZXkncmUgcHJvYmFibHkgdXNlZCBhY3Jvc3MgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBtZWFucyBhIGNoYW5nZSBoZXJlIGhhcyBhIHBvdGVudGlhbGx5IGJyb2FkIGltcGFjdC4gVGhlIGtleSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBib3VuZHMgY2hlY2tpbmcuIEl0J3MgZGVzaWduZWQgdG8gcHJldmVudCB0aG9zZSBuYXN0eSBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgZHJhd2luZyByb3V0aW5lcy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gc2VlIGhvdyB3aWRlbHkgdGhlc2UgYXJlIGFjdHVhbGx5IHVzZWQgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZSB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIHNjb3BlIG9mIHRoaXMgaW1wYWN0IGFuZCBtYWtlIHN1cmUgdGhpcyBpcyBhY3R1YWxseSBhIHdvcnRod2hpbGUgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzAzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MDAuMzY4NDk0MzQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MTYzOTc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9Mzc9Y29uZmlnIEZCX0NGQl9DT1BZQVJFQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDAtXFx0aGVscFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjQxOlxcdCAgSW5jbHVkZSB0aGUgY2ZiX2NvcHlhcmVhIGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGFyZWEgY29weWluZy5cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy00Mi1cXHQgIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd24gKGFjY2VsZXJhdGVkKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYz00NT1zdGF0aWMgdm9pZCBiaXRfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy00Ny17XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYzo0ODpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jLTQ5LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy01Ni1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvYml0YmxpdC5jOjU3OlxcdGluZm8tXFx1MDAzZWZib3BzLVxcdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcXHUwMDI2YXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2JpdGJsaXQuYy01OC19XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTk6dm9pZCBjZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yOS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmg9MzQ4PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCBmYl9jb3B5KHN0cnVjdCBmYl9hZGRyZXNzICpkc3QsIHN0cnVjdCBmYl9hZGRyZXNzICpzcmMsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29weWFyZWEuaC0zNzUtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2NvcHlhcmVhLmg6Mzc2OnN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqcCwgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oLTM3Ny17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaD0xMjQ9c3RhdGljIGlubGluZSBpbnQgbW9ub19jb2woY29uc3Qgc3RydWN0IGZiX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzItICogKyByZWFkIHdoYXQncyBhbHJlYWR5IHJlbmRlcmVkIG9uIHRoZSBzY3JlZW4gYW5kXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmg6MTczOiAqICAgICB3cml0ZSBpdCBpbiBhIGRpZmZlcmVudCBwbGFjZSAodGhpcyBpcyBjZmJfY29weWFyZWEoKSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaC0xNzQtICogKyByZS1yZW5kZXIgdGhlIHRleHQgdG8gdGhlIHNjcmVlblxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2Njdy5jPTY0PXN0YXRpYyB2b2lkIGNjd19ibW92ZShzdHJ1Y3QgdmNfZGF0YSAqdmMsIHN0cnVjdCBmYl9pbmZvICppbmZvLCBpbnQgc3ksXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjctXFx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cXHUwMDNlZmJjb25fcGFyO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYzo2ODpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNjktXFx0dTMyIHZ5cmVzID0gR0VUVllSRVMocGFyLVxcdTAwM2VwLCBpbmZvKTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jY3cuYy03Ny1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmM6Nzg6XFx0aW5mby1cXHUwMDNlZmJvcHMtXFx1MDAzZWZiX2NvcHlhcmVhKGluZm8sIFxcdTAwMjZhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY2N3LmMtNzktfVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmM9NDk9c3RhdGljIHZvaWQgY3dfYm1vdmUoc3RydWN0IHZjX2RhdGEgKnZjLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX2N3LmMtNTItXFx0c3RydWN0IGZiY29uX3BhciAqcGFyID0gaW5mby1cXHUwMDNlZmJjb25fcGFyO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jOjUzOlxcdHN0cnVjdCBmYl9jb3B5YXJlYSBhcmVhO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTU0LVxcdHUzMiB2eHJlcyA9IEdFVFZYUkVTKHBhci1cXHUwMDNlcCwgaW5mbyk7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYy02Mi1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fY3cuYzo2MzpcXHRpbmZvLVxcdTAwM2VmYm9wcy1cXHUwMDNlZmJfY29weWFyZWEoaW5mbywgXFx1MDAyNmFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl9jdy5jLTY0LX1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jPTQ4PXN0YXRpYyB2b2lkIHVkX2Jtb3ZlKHN0cnVjdCB2Y19kYXRhICp2Yywgc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBzeSxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbl91ZC5jLTUxLVxcdHN0cnVjdCBmYmNvbl9wYXIgKnBhciA9IGluZm8tXFx1MDAzZWZiY29uX3BhcjtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYzo1MjpcXHRzdHJ1Y3QgZmJfY29weWFyZWEgYXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy01My1cXHR1MzIgdnlyZXMgPSBHRVRWWVJFUyhwYXItXFx1MDAzZXAsIGluZm8pO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmMtNjItXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uX3VkLmM6NjM6XFx0aW5mby1cXHUwMDNlZmJvcHMtXFx1MDAzZWZiX2NvcHlhcmVhKGluZm8sIFxcdTAwMjZhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb25fdWQuYy02NC19XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM6MTk6dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yMy1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYzoyNDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYy0yNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjAwLjQ2MzY2MzI1NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkzMDE2MTczNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQXR0YWNrIFN1cmZhY2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSBhbGwgaW5saW5lIGZ1bmN0aW9ucyBpbiB0aGUgaGVhZGVycywgd2hpY2ggYXJlIHRoZW4gdXNlZCBieSBmdW5jdGlvbnMgbGlrZSBgY2ZiX2NvcHlhcmVhYCwgYHN5c19jb3B5YXJlYWAsIGFuZCBzbyBvbi4gVGhlc2UgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYW5kIHVzZWQgYnkgYSBidW5jaCBvZiBmcmFtZWJ1ZmZlciBkcml2ZXJzLCB3aGljaCBpcyBpbXBvcnRhbnQuIFRoZSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggYGlvY3RsKGZkLCBGQklPUFVUX1ZTQ1JFRU5JTkZPLCAuLi4pYCBiZWNhdXNlIHRoYXQgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIHdoaWNoIHNldHMgdXAgYSBwb3NzaWJsZSB3YXkgdG8gaW5mbHVlbmNlIHJlbmRlcmluZy4gVGhlbiB0aGVyZSBpcyBgaW9jdGwoZmQsIEZCSU9QQU5fRElTUExBWSwgLi4uKWAgd2hpY2ggcmVsaWVzIG9uIHRoZSBgaW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKWAgYW5kIG90aGVyIG1ldGhvZHMgb2Ygd3JpdGluZyB0byB0aGUgZnJhbWVidWZmZXIuXG5cbkhhbmcgb27igKYgZG9lcyBgRkJJT1BBTl9ESVNQTEFZYCAqZGlyZWN0bHkqIGNhbGwgYGZiX2NvcHlhcmVhYD8gTm8sIG5vLCBpdCBkb2Vzbid0LiBCdXQgYGZiY29uYCwgdGhlIGNvbnNvbGUgZHJpdmVyLCBkZWZpbml0ZWx5ICpkb2VzKiBjYWxsIGl0LCBwYXJ0aWN1bGFybHkgZHVyaW5nIHNjcm9sbGluZyBhbmQgdGV4dCBtb3ZlbWVudC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBgRkJJT1BVVF9WU0NSRUVOSU5GT2AgaW9jdGwgY2FuIGFsc28gYmUgdXNlZCB0byBjaGFuZ2UgdGhlIHZpcnR1YWwgc2NyZWVuIHNpemUsIHNvIHRoYXQncyBhbm90aGVyIHRoaW5nIHRvIGtlZXAgaW4gbWluZC5cblxuSXMgdGhlcmUgYW55ICpvdGhlciogaW9jdGwgdGhhdCBtaWdodCBkaXJlY3RseSB1c2UgYGZiX2NvcHlhcmVhYD8gTm8sIGl0IGxvb2tzIGxpa2UgYGZiY29uYCBpcyB0aGUgcHJpbWFyeSBkaXJlY3QgY29uc3VtZXIsIGFzIGZhciBhcyBJIGNhbiB0ZWxsLiBBbHJpZ2h0LCBzbyBgZmJjb25gIGlzIGEgY29uc29sZSBkcml2ZXIsIHRoYXQncyBjcnVjaWFsLiBTaW5jZSBpdCdzIGEgY29uc29sZSBkcml2ZXIsIHRoYXQgbWVhbnMgaXQncyBiZWVuIGZ1enplZCBieSBzeXprYWxsZXIsIHdoaWNoIHNob3VsZCBnaXZlIHVzIHNvbWUgZ29vZCB0ZXN0IGNhc2VzLiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5GaW5hbGx5LCBjb3VsZCB0aGVzZSBmdW5jdGlvbnMgYWxzbyBiZSBjYWxsZWQgdGhyb3VnaCBvdGhlciBgZmJtZW1gIGlvY3Rscz8gUHJvYmFibHksIHNvIG5lZWQgdG8gbG9vayBhdCBgZmJtZW0uY2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBpbnRlcmVzdGluZyBkYXRhIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjA5Ljc2NTI4MjcxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYwNjI4NjEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTowOS45MjEzNTc0NDZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc3NDEzNjE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRnJhbWVidWZmZXIgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoZXNlIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMgYXJlIHdvcmtpbmcgdW5kZXIgdGhlIGhvb2QuIE15IGZpcnN0IG1vdmUgd2lsbCBiZSB0byB6ZXJvIGluIG9uIGBmYl9maWxscmVjdGAgYW5kIGBmYl9pbWFnZWJsaXRgIHdpdGhpbiBgZmJtZW0uY2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBjb3JlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIGJhc2ljIHRhc2tzIG9mIGZpbGxpbmcgcmVjdGFuZ2xlcyBhbmQgYmxpdHRpbmcgaW1hZ2VzIHRvIHRoZSBmcmFtZWJ1ZmZlci4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQsIHRoZSBhbGdvcml0aG1zIHVzZWQgZm9yIHBpeGVsIG1hbmlwdWxhdGlvbiwgYW5kIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgcXVpdGUgZnJhbmtseSwgZGVidWdnaW5nIHRoYXQgSSBtaWdodCBuZWVkIHRvIGFkZHJlc3MgbGF0ZXIuIFRoaXMgaXMgZm91bmRhdGlvbmFsIHN0dWZmOyB1bmRlcnN0YW5kaW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgcmVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjEyLjY5ODc3MzU0MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzEwMzQwODIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX2ZpbGxyZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MToxMi44Mjk4MTM0MzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQxNTQ0NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLlxuXG4qKkludmVzdGlnYXRpbmcgQ29weSBBcmVhIEZ1bmN0aW9uIENhbGxlcnMqKlxuXG5IbW0sIHNvIGBmYl9jb3B5YXJlYWAgY2FsbHMgYGNmYl9jb3B5YXJlYWAsIGFuZCBhbHNvIGBzeXNfY29weWFyZWFgLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGZ1bmN0aW9ucyBhbmQgd2hlcmUgYGNmYl9jb3B5YXJlYWAgaXMgKmFjdHVhbGx5KiB1c2VkLiBUaGF0J3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250cm9sIGZsb3cgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgaGVyZS4gTGV0J3Mgc2VlIHdoZXJlIHRoYXQgYGNmYl9jb3B5YXJlYWAgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCBzaG91bGQgcmV2ZWFsIGEgbG90LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgZnVuY3Rpb24gY2FsbC4gUmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODA5LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MTYuMTcxMzYwODE2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NjM4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZiX2NvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYz05MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgYXJrZmJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hcmtmYi5jLTk0MS1cXHQuZmJfZmlsbHJlY3RcXHQ9IGFya2ZiX2ZpbGxyZWN0LFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXJrZmIuYzo5NDI6XFx0LmZiX2NvcHlhcmVhXFx0PSBjZmJfY29weWFyZWEsXFxuZHJpdmVycy92aWRlby9mYmRldi9hcmtmYi5jLTk0My1cXHQuZmJfaW1hZ2VibGl0XFx0PSBhcmtmYl9pbWFnZWJsaXQsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmM9MjQ1OD1zdGF0aWMgdm9pZCBhdGFmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hdGFmYi5jLTI0NjYtXFx0aWYgKGluZm8tXFx1MDAzZXZhci5iaXRzX3Blcl9waXhlbCA9PSAxNikge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXRhZmIuYzoyNDY3OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0YWZiLmMtMjQ2OC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9tYWNoNjRfYWNjZWwuYz0xOTk9dm9pZCBhdHlmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvbWFjaDY0X2FjY2VsLmMtMjA5LVxcdGlmICghcGFyLVxcdTAwM2VhY2NlbF9mbGFncykge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L21hY2g2NF9hY2NlbC5jOjIxMDpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9hdHkvbWFjaDY0X2FjY2VsLmMtMjExLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jPTEzNT12b2lkIHJhZGVvbmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYy0xNDktXFx0aWYgKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9yYWRlb25fYWNjZWwuYzoxNTA6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvYXR5L3JhZGVvbl9hY2NlbC5jLTE1MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NpcnJ1c2ZiLmM9MTc3MD1zdGF0aWMgdm9pZCBjaXJydXNmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgwLVxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9jaXJydXNmYi5jOjE3ODE6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY2lycnVzZmIuYy0xNzgyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTM3PWNvbmZpZyBGQl9DRkJfQ09QWUFSRUFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTQwLVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo0MTpcXHQgIEluY2x1ZGUgdGhlIGNmYl9jb3B5YXJlYSBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSBhcmVhIGNvcHlpbmcuXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNDItXFx0ICBUaGlzIGlzIHVzZWQgYnkgZHJpdmVycyB0aGF0IGRvbid0IHByb3ZpZGUgdGhlaXIgb3duIChhY2NlbGVyYXRlZClcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE5OnZvaWQgY2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMzEtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2NvcHlhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMy1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oPTEyND1zdGF0aWMgaW5saW5lIGludCBtb25vX2NvbChjb25zdCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3Mi0gKiArIHJlYWQgd2hhdCdzIGFscmVhZHkgcmVuZGVyZWQgb24gdGhlIHNjcmVlbiBhbmRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uaDoxNzM6ICogICAgIHdyaXRlIGl0IGluIGEgZGlmZmVyZW50IHBsYWNlICh0aGlzIGlzIGNmYl9jb3B5YXJlYSgpKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5oLTE3NC0gKiArIHJlLXJlbmRlciB0aGUgdGV4dCB0byB0aGUgc2NyZWVuXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM9MTg3PWN5YmVyMjAwMGZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKnJlZ2lvbilcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTMtXFx0aWYgKCEoY2ZiLVxcdTAwM2VmYi52YXIuYWNjZWxfZmxhZ3MgXFx1MDAyNiBGQl9BQ0NFTEZfVEVYVCkpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLmM6MTk0OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCByZWdpb24pO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY3liZXIyMDAwZmIuYy0xOTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9mZmIuYz01Mjg9c3RhdGljIHZvaWQgZmZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jLTUzNS1cXHQgICAgYXJlYS1cXHUwMDNlZHkgPT0gYXJlYS1cXHUwMDNlc3kpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2ZmYi5jOjUzNjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9mZmIuYy01MzctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9pODEwL2k4MTBfYWNjZWwuYz0zMjY9dm9pZCBpODEwZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKSBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvaTgxMC9pODEwX2FjY2VsLmMtMzMyLVxcdCAgICBwYXItXFx1MDAzZWRlcHRoID09IDQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k4MTAvaTgxMF9hY2NlbC5jOjMzMzpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2k4MTAvaTgxMF9hY2NlbC5jLTMzNC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTExMz12b2lkIG1hdHJveF9jZmJYX2luaXQoc3RydWN0IG1hdHJveF9mYl9pbmZvICptaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMTIzLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmM6MTI0OlxcdG1pbmZvLVxcdTAwM2VmYm9wcy5mYl9jb3B5YXJlYSA9IGNmYl9jb3B5YXJlYTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jLTEyNS1cXHRtaW5mby1cXHUwMDNlZmJvcHMuZmJfZmlsbHJlY3QgPSBjZmJfZmlsbHJlY3Q7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl9hY2NlbC5jPTI5ND1zdGF0aWMgdm9pZCBtYXRyb3hmYl9jZmI0X2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvKiBpbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEqIGFyZWEpIHtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMjk3LVxcdGlmICgoYXJlYS1cXHUwMDNlc3ggfCBhcmVhLVxcdTAwM2VkeCB8IGFyZWEtXFx1MDAzZXdpZHRoKSBcXHUwMDI2IDEpXFxuZHJpdmVycy92aWRlby9mYmRldi9tYXRyb3gvbWF0cm94ZmJfYWNjZWwuYzoyOTg6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWF0cm94L21hdHJveGZiX2FjY2VsLmMtMjk5LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbWI4NjJ4eC9tYjg2Mnh4ZmJfYWNjZWwuYz0zMDI9dm9pZCBtYjg2Mnh4ZmJfaW5pdF9hY2NlbChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgc3RydWN0IGZiX29wcyAqZmJvcHMsIGludCB4cmVzKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwNy1cXHRcXHRmYm9wcy1cXHUwMDNlZmJfZmlsbHJlY3QgPSBjZmJfZmlsbHJlY3Q7XFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jOjMwODpcXHRcXHRmYm9wcy1cXHUwMDNlZmJfY29weWFyZWEgPSBjZmJfY29weWFyZWE7XFxuZHJpdmVycy92aWRlby9mYmRldi9tYjg2Mnh4L21iODYyeHhmYl9hY2NlbC5jLTMwOS1cXHRcXHRmYm9wcy1cXHUwMDNlZmJfaW1hZ2VibGl0ID0gY2ZiX2ltYWdlYmxpdDtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYz0xNTA5PW5lb2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMtMTUxOC1cXHRcXHRkZWZhdWx0OlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbmVvZmIuYzoxNTE5OlxcdFxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L25lb2ZiLmMtMTUyMC1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252X2FjY2VsLmM9Mjk4PXZvaWQgbnZpZGlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDUtXFx0aWYgKHBhci1cXHUwMDNlbG9ja3VwKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYzozMDY6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIHJlZ2lvbik7XFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZfYWNjZWwuYy0zMDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9udmlkaWEvbnZpZGlhLmM9NjEyPXN0YXRpYyBpbnQgbnZpZGlhZmJfc2V0X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3NS1cXHRcXHRudmlkaWFfZmJfb3BzLmZiX2ZpbGxyZWN0ID0gY2ZiX2ZpbGxyZWN0O1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jOjY3NjpcXHRcXHRudmlkaWFfZmJfb3BzLmZiX2NvcHlhcmVhID0gY2ZiX2NvcHlhcmVhO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbnZpZGlhL252aWRpYS5jLTY3Ny1cXHRcXHRudmlkaWFfZmJfb3BzLmZiX3N5bmMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9wbTJmYi5jPTExMTA9c3RhdGljIHZvaWQgcG0yZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTExOS1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0yZmIuYzoxMTIwOlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtMmZiLmMtMTEyMS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3BtM2ZiLmM9NDQwPXN0YXRpYyB2b2lkIHBtM2ZiX2NvcHlhcmVhKHN0cnVjdCBmYl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9wbTNmYi5jLTQ1MC1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCkge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0zZmIuYzo0NTE6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvcG0zZmIuYy00NTItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM9MTM5Nz1zdGF0aWMgdm9pZCByaXZhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqcmVnaW9uKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmMtMTQwMS1cXHRpZiAoKGluZm8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkJJTkZPX0hXQUNDRUxfRElTQUJMRUQpKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi9yaXZhL2ZiZGV2LmM6MTQwMjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgcmVnaW9uKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3JpdmEvZmJkZXYuYy0xNDAzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jPTExMTY9c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgczNmYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYy0xMTI2LVxcdC5mYl9maWxscmVjdFxcdD0gczNmYl9maWxscmVjdCxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3MzZmIuYzoxMTI3OlxcdC5mYl9jb3B5YXJlYVxcdD0gY2ZiX2NvcHlhcmVhLFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvczNmYi5jLTExMjgtXFx0LmZiX2ltYWdlYmxpdFxcdD0gczNmYl9pbWFnZWJsaXQsXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NidXNsaWIuaD0yOT1pbnQgc2J1c2ZiX2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2J1c2xpYi5oLTQxLVxcdC5mYl9maWxscmVjdFxcdD0gY2ZiX2ZpbGxyZWN0LCBcXFxcXFxuZHJpdmVycy92aWRlby9mYmRldi9zYnVzbGliLmg6NDI6XFx0LmZiX2NvcHlhcmVhXFx0PSBjZmJfY29weWFyZWEsIFxcXFxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NidXNsaWIuaC00My1cXHQuZmJfaW1hZ2VibGl0XFx0PSBjZmJfaW1hZ2VibGl0XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYz0zNTY9dm9pZCBmYmNvbl9zaXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2lzL3Npc19hY2NlbC5jLTM2OC1cXHRpZigoIWl2aWRlby1cXHUwMDNlYWNjZWwpIHx8ICghaXZpZGVvLVxcdTAwM2VlbmdpbmVvaykpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Npcy9zaXNfYWNjZWwuYzozNjk6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2lzL3Npc19hY2NlbC5jLTM3MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jPTE3Nz1zdGF0aWMgdm9pZCBlM2RfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmMtMTgyLVxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZlcC1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTgzOlxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4NC1cXHRpbmZvLVxcdTAwM2VzY3JlZW5fYmFzZSArPSBlcC1cXHUwMDNlZmI4X2J1Zl9kaWZmO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc3VueHZyNTAwLmM6MTg1OlxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3N1bnh2cjUwMC5jLTE4Ni1cXHRpbmZvLVxcdTAwM2VzY3JlZW5fYmFzZSAtPSBlcC1cXHUwMDNlZmI4X2J1Zl9kaWZmO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jPTExNTc9Y29weWFyZWFfOGJwcChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIGR4LCB1MzIgZHksIHUzMiBzeCwgdTMyIHN5LFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTExNzAtXFx0aWYgKChkeCB8IHN4IHwgd2lkdGgpIFxcdTAwMjYgNykge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYzoxMTcxOlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmMtMTE3Mi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmM9MTI2Nj10Z2FmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3Qgc3RydWN0IGZiX2NvcHlhcmVhICphcmVhKVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi90Z2FmYi5jLTEzMDgtXFx0ZWxzZSBpZiAoYnBwID09IDMyKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdGdhZmIuYzoxMzA5OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RnYWZiLmMtMTMxMC1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmM9NjY4PXN0YXRpYyB2b2lkIHRyaWRlbnRmYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdHJpZGVudGZiLmMtNjczLVxcdGlmIChpbmZvLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZCSU5GT19IV0FDQ0VMX0RJU0FCTEVEKSB7XFxuZHJpdmVycy92aWRlby9mYmRldi90cmlkZW50ZmIuYzo2NzQ6XFx0XFx0Y2ZiX2NvcHlhcmVhKGluZm8sIGNhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3RyaWRlbnRmYi5jLTY3NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYz0xMDI3PXN0YXRpYyB2b2lkIHZnYTE2ZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmdhMTZmYi5jLTExMTMtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYzoxMTE0OlxcdFxcdGNmYl9jb3B5YXJlYShpbmZvLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZnYTE2ZmIuYy0xMTE1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYz02OTk9c3RhdGljIHZvaWQgdmlhZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jLTcwNS1cXHRpZiAoaW5mby1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQklORk9fSFdBQ0NFTF9ESVNBQkxFRCB8fCAhc2hhcmVkLVxcdTAwM2Vod19iaXRibHQpIHtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jOjcwNjpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MDctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MTgtXFx0XFx0YXJlYS1cXHUwMDNlc3gsIGFyZWEtXFx1MDAzZXN5LCAwLCAwLCAwKSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZpYS92aWFmYmRldi5jOjcxOTpcXHRcXHRjZmJfY29weWFyZWEoaW5mbywgYXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi92aWEvdmlhZmJkZXYuYy03MjAtfVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGZiX29wcyB2dDg2MjNmYl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Z0ODYyM2ZiLmMtNjYwLVxcdC5mYl9maWxscmVjdFxcdD0gdnQ4NjIzZmJfZmlsbHJlY3QsXFxuZHJpdmVycy92aWRlby9mYmRldi92dDg2MjNmYi5jOjY2MTpcXHQuZmJfY29weWFyZWFcXHQ9IGNmYl9jb3B5YXJlYSxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3Z0ODYyM2ZiLmMtNjYyLVxcdC5mYl9pbWFnZWJsaXRcXHQ9IHZ0ODYyM2ZiX2ltYWdlYmxpdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6MTYuMzI2MjI5NjI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjk4OTk3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYGNmYl9jb3B5YXJlYWAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBgY2ZiX2NvcHlhcmVhYC4uLiB0aGF0J3MgYSBmdW5jdGlvbiB1c2VkIHByZXR0eSBicm9hZGx5IGFjcm9zcyB2YXJpb3VzIGZyYW1lYnVmZmVyIGRyaXZlcnMsIGlzbid0IGl0PyBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBhc2sgaWYgdGhlcmUncyBhbiBpb2N0bCBvdXQgdGhlcmUgdGhhdCdzIGRpcmVjdGx5IGNhbGxpbmcgYGZiX2NvcHlhcmVhYCBidXQsIGhhbmcgb24gYSBzZWNvbmQsIHRoYXQgZG9lc24ndCBzZWVtIHJpZ2h0LiBOZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIEJlc3QgdG8gY29uZmlybSB0aGF0IGluIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uY2AuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBmcmFtZWJ1ZmZlciBtZW1vcnkgbWFuYWdlbWVudCBzdHVmZiBzaG91bGQgYmUsIGFuZCB3aGVyZSBgZmJfY29weWFyZWFgIGxpa2VseSByZXNpZGVzLiBMZXQncyBkaWcgaW4gdGhlcmUgYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MDIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MToyMC40OTYxMzI0NjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjAxNTYyNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJfY29weWFyZWFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjIwLjkyMjE1NDcxOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDAyMTU4MjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBmYl9jb3B5YXJlYWAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBEaWRuJ3QgSSBhbHJlYWR5IGNvbmZpcm0gc29tZXRoaW5nIGFib3V0IHRoaXM/IFJpZ2h0LCBJIGtub3cgaG93IGBmYl9jb3B5YXJlYWAgaXMgYWNjZXNzZWQuIExldCdzIHNlZS4uLiBob3cgZXhhY3RseSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGNhbGxlZCBmcm9tIHVzZXJzcGFjZSBhZ2Fpbj8gSSdtIHByZXR0eSBzdXJlIGl0J3MgdGhyb3VnaCBgZmJjb25gLCB0aGUgY29uc29sZSBkcml2ZXIuIFJpZ2h0LCBpdCdzIHVzZWQgd2l0aGluIGBmYmNvbmAgZm9yIHRhc2tzIGxpa2Ugc2Nyb2xsaW5nIG9yIG1vdmluZyB0ZXh0IG9uIHRoZSBkaXNwbGF5LlxuXG5Pa2F5LCBpcyBpdCByZWFjaGVkIHZpYSBgZmJfaW9jdGxgIGRpcmVjdGx5PyBObywgZGVmaW5pdGVseSBub3QuIGBmYl93cml0ZWA/IE5vcGUuIGBmYl9tbWFwYD8gTmFoLCBkb2Vzbid0IHNlZW0gbGlrZWx5LiBCdXQsIGhhbmcgb24uLi4gZGlkbid0IEkgcmVtZW1iZXIgYGZiX2NvcHlhcmVhYCBnZXR0aW5nIHVzZWQgd2hlbiBgZmJjb25gIGhhbmRsZXMgc2Nyb2xsaW5nIG9yIHRleHQgbW92ZW1lbnQ/IEFoYSwgeWVzIVxuXG5Ob3csIGhvdyBkb2VzIHN5emthbGxlciBnZXQgaW52b2x2ZWQgaW4gZnV6emluZyB0aGlzIHRoaW5nPyBJdCBoaXRzIGBmYmNvbmAgdXNpbmcgZWl0aGVyIGBpb2N0bChmZCwgVlRfUkVTSVpFLCAuLi4pYCBvciBieSBjcmFmdGluZyBlc2NhcGUgc2VxdWVuY2VzIGFuZCB3cml0aW5nIHRoZW0gdG8gc29tZXRoaW5nIGxpa2UgYC9kZXYvdHR5MWAuIEl0IGFsc28gZnV6emVzIHRoZSBgZmJkZXZgIGlvY3RscyBsaWtlIGBGQklPUFVUX1ZTQ1JFRU5JTkZPYCwgc2V0dGluZyB0aGluZ3MgbGlrZSBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuXG5cblNvLCB0aGUgYnVnIGlzIHByb2JhYmx5IHRyaWdnZXJlZCBieSBzZXR0aW5nIHVwIHZlcnkgc21hbGwgdmFsdWVzIGZvciBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAsIGFuZCB0aGVuIGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgbWFrZXMgYGZiX2NvcHlhcmVhYCBydW4gd2l0aCBjb29yZGluYXRlcyB0aGF0IGFyZSBvdXQtb2YtYm91bmRzLCByaWdodD8gVGhhdCBtYWtlcyBzZW5zZS4gQSBzbWFsbCB2aXJ0dWFsIHJlc29sdXRpb24sIHRoZW4gdHJpZ2dlciBhIGNvbnNvbGUgc2Nyb2xsLi4uIHRoYXQgc2hvdWxkIGRvIGl0IVxuXG5IbW0sIGlzIGBmYl9jb3B5YXJlYWAgZXhwb3J0ZWQgdG8gdXNlcnNwYWNlIGRpcmVjdGx5IHZpYSBgaW9jdGxgIGluIHNvbWUgd2F5PyBObywgSSBkb24ndCByZWNhbGwgc2VlaW5nIGFueXRoaW5nIGxpa2UgYW4gYEZCSU9QVVRfQ09QWUFSRUFgIG9yIHNpbWlsYXIgZGVmaW5lZC4gTGV0J3MgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgYW5kIGNoZWNrIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAgZm9yIGBjb3B5YXJlYWAgZGVmaW5pdGlvbnMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBzb21lIGZ1bmt5IGRlZmluaXRpb24gSSBtaXNzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjYxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjI5LjkyNDMxNTIzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEzNjAxMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9mYi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvdWFwaS9saW51eC9mYi5oPTMyND1zdHJ1Y3QgZmJfdmJsYW5rIHtcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTMzNS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzY6c3RydWN0IGZiX2NvcHlhcmVhIHtcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zMzctXFx0X191MzIgZHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjMwLjAzNzkyMTA3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNjM1MTQzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLiBJJ20gbG9va2luZyBhdCBzb21ldGhpbmcgcmVsYXRlZCB0byBmcmFtZWJ1ZmZlcnMsIGFuZCB0aGUgY29kZSByZWZlcmVuY2VzIGBzdHJ1Y3QgZmJfY29weWFyZWFgLiBSaWdodCwgdGhhdCBzdHJ1Y3QuLi4gaXQncyBkZWZpbmVkIGluIGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIEkgcmVjYWxsIHRoYXQgaGVhZGVyIOKAkyBpdCdzIHRoZSB1c2Vyc3BhY2UgaW50ZXJmYWNlIGRlZmluaXRpb25zIGZvciBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zLlxuXG5TbywgdGhlIG5leHQgbG9naWNhbCBzdGVwLCBnaXZlbiB0aGF0IHN0cnVjdHVyZSdzIGludm9sdmVkLCBpcyB0byBjaGVjayB3aGV0aGVyIGFuIGBpb2N0bGAgc3lzdGVtIGNhbGwgbGV2ZXJhZ2VzIGl0LiBJIG5lZWQgdG8gZmluZCB0aGUgc3BlY2lmaWMgaW9jdGwgY29tbWFuZCBhc3NvY2lhdGVkIHdpdGggdGhpcyBgZmJfY29weWFyZWFgIHN0cnVjdHVyZS4gVGhhdCB3b3VsZCBsaWtlbHkgZ2l2ZSBtZSBtb3JlIGNvbnRleHQgYWJvdXQgd2hhdCdzIGdvaW5nIG9uLiBMZXQgbWUgbG9vayBhcm91bmQgdGhlIGNvZGUgZm9yIHNvbWUgaW9jdGwgY2FsbHMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0OTQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTozNi4xMDE0Mzg1NTFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzE0NTc3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvZmIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL3VhcGkvbGludXgvZmIuaD0zMjQ9c3RydWN0IGZiX3ZibGFuayB7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zMzUtXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzM2OnN0cnVjdCBmYl9jb3B5YXJlYSB7XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMzM3LVxcdF9fdTMyIGR4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTozNi4zNDg1OTIwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTYyMjg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkNoZWNraW5nIHRoZSBGcmFtZWJ1ZmZlciBIZWFkZXIgZm9yIFNwZWNpZmljIERlZmluaXRpb25zKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBwcmVzZW5jZSBvZiBzcGVjaWZpYyBkZWZpbml0aW9ucyByZWxhdGVkIHRvIGZyYW1lIGJ1ZmZlciBJL08gY29udHJvbCBjb2Rlcywgc3BlY2lmaWNhbGx5IHRob3NlIHN0YXJ0aW5nIHdpdGggYEZCSU9QVVRfYC4gSSdsbCBpbW1lZGlhdGVseSBnbyB0byB0aGUgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiBsb3ctbGV2ZWwgZnJhbWVidWZmZXIgaW5mb3JtYXRpb246IGBpbmNsdWRlL3VhcGkvbGludXgvZmIuaGAuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyB0byB2ZXJpZnkgaWYgdGhlc2UgcGFydGljdWxhciBgRkJJT1BVVF9gIG1hY3Jvcywgb3IgYW55dGhpbmcgdmVyeSBzaW1pbGFyIGxpa2UgYEZCSU9HRVRfYCBvciByZWxhdGVkLCBhcmUgYWN0dWFsbHkgZGVmaW5lZCBpbiB0aGF0IGhlYWRlci4gSSBuZWVkIHRvIGVuc3VyZSB0aGV5IGV4aXN0IGFuZCB0aGF0IEkgdW5kZXJzdGFuZCB0aGVpciBjb250ZXh0IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggYW55dGhpbmcgZWxzZS4gVGhpcyBzZWVtcyBsaWtlIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIHRvIGdldHRpbmcgbXkgZHVja3MgaW4gYSByb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExODA4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDAuMjk0MjE4MDE5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNzM5NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZCSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgtMTQtICAgMHg0NiBpcyAnRidcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE1OiNkZWZpbmUgRkJJT0dFVF9WU0NSRUVOSU5GT1xcdDB4NDYwMFxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE2OiNkZWZpbmUgRkJJT1BVVF9WU0NSRUVOSU5GT1xcdDB4NDYwMVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE3OiNkZWZpbmUgRkJJT0dFVF9GU0NSRUVOSU5GT1xcdDB4NDYwMlxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjE4OiNkZWZpbmUgRkJJT0dFVENNQVBcXHRcXHQweDQ2MDRcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoxOTojZGVmaW5lIEZCSU9QVVRDTUFQXFx0XFx0MHg0NjA1XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MjA6I2RlZmluZSBGQklPUEFOX0RJU1BMQVlcXHRcXHQweDQ2MDZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0yMS0jaWZuZGVmIF9fS0VSTkVMX19cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyMjojZGVmaW5lIEZCSU9fQ1VSU09SICAgICAgICAgICAgX0lPV1IoJ0YnLCAweDA4LCBzdHJ1Y3QgZmJfY3Vyc29yKVxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTIzLSNlbmRpZlxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oLTI0LS8qIDB4NDYwNy0weDQ2MEIgYXJlIGRlZmluZWQgYmVsb3cgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNTovKiAjZGVmaW5lIEZCSU9HRVRfTU9OSVRPUlNQRUNcXHQweDQ2MEMgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNjovKiAjZGVmaW5lIEZCSU9QVVRfTU9OSVRPUlNQRUNcXHQweDQ2MEQgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyNzovKiAjZGVmaW5lIEZCSU9TV0lUQ0hfTU9OSUJJVFxcdDB4NDYwRSAqL1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjI4OiNkZWZpbmUgRkJJT0dFVF9DT04yRkJNQVBcXHQweDQ2MEZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDoyOTojZGVmaW5lIEZCSU9QVVRfQ09OMkZCTUFQXFx0MHg0NjEwXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzA6I2RlZmluZSBGQklPQkxBTktcXHRcXHQweDQ2MTFcXHRcXHQvKiBhcmc6IDAgb3IgdmVzYSBsZXZlbCArIDEgKi9cXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMTojZGVmaW5lIEZCSU9HRVRfVkJMQU5LXFx0XFx0X0lPUignRicsIDB4MTIsIHN0cnVjdCBmYl92YmxhbmspXFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzI6I2RlZmluZSBGQklPX0FMTE9DICAgICAgICAgICAgICAweDQ2MTNcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozMzojZGVmaW5lIEZCSU9fRlJFRSAgICAgICAgICAgICAgIDB4NDYxNFxcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM0OiNkZWZpbmUgRkJJT0dFVF9HTFlQSCAgICAgICAgICAgMHg0NjE1XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6MzU6I2RlZmluZSBGQklPR0VUX0hXQ0lORk8gICAgICAgICAweDQ2MTZcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaDozNjojZGVmaW5lIEZCSU9QVVRfTU9ERUlORk8gICAgICAgIDB4NDYxN1xcbmluY2x1ZGUvdWFwaS9saW51eC9mYi5oOjM3OiNkZWZpbmUgRkJJT0dFVF9ESVNQSU5GTyAgICAgICAgMHg0NjE4XFxuaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmg6Mzg6I2RlZmluZSBGQklPX1dBSVRGT1JWU1lOQ1xcdF9JT1coJ0YnLCAweDIwLCBfX3UzMilcXG5pbmNsdWRlL3VhcGkvbGludXgvZmIuaC0zOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDEuODI0OTYyNzg0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODk5NDc3ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4uLlxuXG4qKkRlY29uc3RydWN0aW5nIGEgUG90ZW50aWFsIEZyYW1lYnVmZmVyIElzc3VlKipcblxuSG1tLCBgRkJJT19DVVJTT1JgLi4uIG5vLCB0aGF0IGRvZXNuJ3QgZmVlbCByaWdodC4gVGhhdCdzIHByb2JhYmx5IGEgcmVkIGhlcnJpbmcuIE9rYXksIGxldCdzIHJlLWNlbnRlciBteSBmb2N1cy4gVGhlIGNvcmUgaXNzdWUgaXMgcHJvYmFibHkgcmVsYXRlZCB0byBgZmJfY29weWFyZWFgLiBXaGVyZSBleGFjdGx5IGlzICp0aGF0KiBmdW5jdGlvbiB1dGlsaXplZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIHVzYWdlcy4gQWgsIHllcywgSSdsbCBnbyBiYWNrIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uY2AuIFRoYXQncyB3aGVyZSB0aGUgZnJhbWVidWZmZXIgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIGNvcmUgb3BlcmF0aW9ucyByZXNpZGUuIExldCdzIGRpZyBiYWNrIGludG8gdGhhdCBmaWxlIGFuZCBzZWUgaWYgSSBtaXNzZWQgYW55dGhpbmcgdGhlIGZpcnN0IHRpbWUgYXJvdW5kIHJlZ2FyZGluZyBgY29weWFyZWFgLiBJIG5lZWQgYSBtb3JlIGRpcmVjdCB1bmRlcnN0YW5kaW5nIG9mIGl0cyBwb3RlbnRpYWwgY29udGV4dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODI0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NDYuOTE0OTEzNTE2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjEzNTQ1MTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcHlhcmVhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MTo0Ny4yMzYyNzc3MDZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTI4NjgzMzM0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudDpcblxuKipUcmFja2luZyBEb3duIHRoZSBgZmJfY29weWFyZWFgIENhbGxlcnMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYGZiX2NvcHlhcmVhYCBpcyBiZWluZyBpbnZva2VkIGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgYXNzdW1wdGlvbiwgdGhhdCBpdCB3YXMgbmVzdGVkIHdpdGhpbiBgZmJtZW0uY2AsIHdhcyBpbmNvcnJlY3QuIFRoYXQncyBhIGNvbW1vbiBpbml0aWFsIGd1ZXNzLCBzbyBubyBiaWcgZGVhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byBiZSBtZXRob2RpY2FsLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBpdOKAmXMgY2FsbGVkIGluIGBkcml2ZXJzL2NoYXIvdnQuY2AuIEhtbSwgbm8sIHRoYXQgc2VlbXMgb2ZmLCB0b28uICBJJ2xsIGhhdmUgdG8gaW52ZXN0aWdhdGUgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgY29kZSBtb3JlIGNsb3NlbHkuIEdpdmVuIHRoZSBmdW5jdGlvbmFsaXR5LCBpdCdzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIHdpdGggdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgZGlyZWN0bHksIHNvIGxldCBtZSBleHBhbmQgbXkgc2VhcmNoIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY2AgYW5kIGBmYmNvbl9jY3cuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay4gSSdsbCBmb2N1cyBvbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmNgIGZpcnN0LCB0aGF0J3MgdGhlIG1vc3QgZ2VuZXJpYyBhbmQgY29tbW9uIGZyYW1lYnVmZmVyIGNvbnNvbGUgZHJpdmVyLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzA3OSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUxOjU2LjUyMzExMzg2NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1Njc4MTU3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTE6NTYuNzM4Nzk5MTUzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5MDQxMTAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2V5IENoYW5nZSBpbiBGcmFtZWJ1ZmZlciBDb3JlKipcblxuT2theSwgc28gSSBqdXN0IHNhdyBzb21lIGNoYW5nZXMgdGhhdCBpbW1lZGlhdGVseSBjYXVnaHQgbXkgZXllLiBJIHJlbWVtYmVyIGVuY291bnRlcmluZyByZWxhdGVkIGNvZGUgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9iaXRibGl0LmNgIGFuZCBgZmJjb25fY2N3LmNgIGVhcmxpZXIuIFJpZ2h0LCBgYml0X2Jtb3ZlYCBjYWxscyBgaW5mby1cdTAwM2VmYm9wcy1cdTAwM2VmYl9jb3B5YXJlYShpbmZvLCBcdTAwMjZhcmVhKWAuIFRoYXQgcmluZ3MgYSBiZWxsLCBJJ3ZlIHNlZW4gYGJpdF9ibW92ZWAgdXNlZCBoZWF2aWx5IGluIGBmYmNvbmAuXG5cblRoZSBoZWFydCBvZiB0aGlzIHNlZW1zIHRvIGJlIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gd2l0aGluIHRoZSBjb3JlIGZyYW1lYnVmZmVyIGNvZGUuIFNwZWNpZmljYWxseSwgdGhlIHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3M6IGBmYl9jb3B5YXJlYWAsIGBmYl9maWxscmVjdGAsIGFuZCBgZmJfaW1hZ2VibGl0YC4gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbnMgdGhhdCBmcmFtZWJ1ZmZlciBkcml2ZXJzLCBsaWtlIGB2Z2ExNmZiYCwgYHZlc2FmYmAsIGBlZmlmYmAsIGFuZCBgc2ltcGxlZmJgLCBsZXZlcmFnZSB3aGVuIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBpc24ndCBhdmFpbGFibGUuXG5cblRoZSBlc3NlbmNlIG9mIHRoZSBjaGFuZ2UgaXMgYm91bmRzIGNoZWNraW5nLiBXZSdyZSBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gYGR4YCwgYGR5YCwgYHdpZHRoYCwgb3IgYGhlaWdodGAgdmFsdWVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLCBgeHJlc192aXJ0dWFsYCBhbmQgYHlyZXNfdmlydHVhbGAuIEkgbGlrZSB0aGF0LiBUaGlzIGlzIGEgY2xlYXIgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoZSBwYXRjaCB0YXJnZXRzLiBXZSdyZSB0YWxraW5nIGFib3V0IGBmYl9jb3B5YXJlYWAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9jb3B5YXJlYS5oYCwgYGZiX2ZpbGxyZWN0YCBpbiBgZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmhgLCBhbmQgYGZiX2ltYWdlYmxpdGAgaW4gYGRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYl9pbWFnZWJsaXQuaGAuXG5cbkFoLCB0aGVzZSBhcmUgaW5saW5lIGZ1bmN0aW9ucy4gU28gd2hlcmUgYXJlIHRoZXkgZ2V0dGluZyAqY2FsbGVkKiBmcm9tPyBJJ2xsIG5lZWQgdG8gZ28gZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGhzLiBMb29rcyBsaWtlIGBjZmJfY29weWFyZWFgIGluIGBjZmJjb3B5YXJlYS5jYCwgYHN5c19jb3B5YXJlYWAgaW4gYHN5c2NvcHlhcmVhLmNgLCBhbmQgc28gb24uIFJpZ2h0LCB0aGF0J3Mgd2hlcmUgdGhlIHJlYWwgd29yayBoYXBwZW5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ2MSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjowMy42NDI5MTE2NDFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NTM0NzEwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYl9jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTc6I2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTgtXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MTk6dm9pZCBjZmJfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yMC17XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0yOS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYzozMDpcXHRmYl9jb3B5YXJlYShwLCBhcmVhKTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiY29weWFyZWEuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmM6MzI6RVhQT1JUX1NZTUJPTChjZmJfY29weWFyZWEpO1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjowMy45MzgyNjMwMDNaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTcwNTc0ODg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBHcmFwaGljcyBPcGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIGhvbmluZyBpbiBvbiBzcGVjaWZpYyBncmFwaGljcyBmdW5jdGlvbnM6IGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFwcGVhciB0byBiZSB0aGUga2V5IGFyZWFzIGZvciBtZSB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gY29uZmlybSB0aGUgcHJlc2VuY2Ugb2YgY2VydGFpbiBjb3JlIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIFwic3lzXCIgbmFtZXNwYWNlLCBzcGVjaWZpY2FsbHkgYHN5c19maWxscmVjdGAgYW5kIGBzeXNfaW1hZ2VibGl0YC4gSSdsbCB2ZXJpZnkgdGhlaXIgZXhpc3RlbmNlIGFzIGEgcHJlY3Vyc29yIHRvIGFueSBzdWJzZXF1ZW50IGFuYWx5c2lzIG9yIG9wdGltaXphdGlvbiBlZmZvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU1MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjA5LjY0NDAxNDIyN1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNTk2MzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c19maWxscmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTYxPWNvbmZpZyBGQl9TWVNfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTY0LVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2NTpcXHQgIEluY2x1ZGUgdGhlIHN5c19maWxscmVjdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSByZWN0YW5nbGVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy02Ni1cXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd25cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE5OnZvaWQgc3lzX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMjUtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjI2OkVYUE9SVF9TWU1CT0woc3lzX2ZpbGxyZWN0KTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0yNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MDkuOTI0NjI2NTk5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2OTkzNDUxOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqUXVpY2sgVmVyaWZpY2F0aW9uIFx1MDAyNiBJbml0aWFsIEludmVzdGlnYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGluaXRpYWwgYXNzdW1wdGlvbiBpcyBjb25maXJtZWQ6IHRoZXkgZG8sIGluIGZhY3QsIHVzZSB0aG9zZSBzcGVjaWZpYyBmdW5jdGlvbnMuIE5vdywgbGV0J3MgZGl2ZSBzdHJhaWdodCBpbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSBxdWljayBjaGVjayBvZiBgY2ZiX2ZpbGxyZWN0YCBhbmQgdGhlbiBgY2ZiX2ltYWdlYmxpdGAuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhvc2UgYXJlIHRoZSBsaWtlbHkgY3VscHJpdHMgdG8gZXhhbWluZSBnaXZlbiB0aGUgY29udGV4dC4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwNDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoxMy42MjM5NzQ1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjc5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmYl9maWxscmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTMyLVxcdGhlbHBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzozMzpcXHQgIEluY2x1ZGUgdGhlIGNmYl9maWxscmVjdCBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBzb2Z0d2FyZSByZWN0YW5nbGVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zNC1cXHQgIGZpbGxpbmcuIFRoaXMgaXMgdXNlZCBieSBkcml2ZXJzIHRoYXQgZG9uJ3QgcHJvdmlkZSB0aGVpciBvd25cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE5OnZvaWQgY2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICpwLCBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMjAte1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMzEtfVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2ZpbGxyZWN0KTtcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0zMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MTMuNzE3NjYwNTQyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNjY5MzExNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSW1hZ2UgQmxpdHRpbmcgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgaW1hZ2UgYmxpdHRpbmcuIFNwZWNpZmljYWxseSwgSSdtIGNvbnNpZGVyaW5nIGBjZmJfaW1hZ2VibGl0YCBhbmQgYHN5c19pbWFnZWJsaXRgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGEgZmV3IGNvcmUgYXJlYXMgd2hlbiBJIHNlZSB0aG9zZSBmdW5jdGlvbiBuYW1lcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHdoaWNoIGNvbnRleHQgaXMgaW50ZW5kZWQgaGVyZS5cblxuKiAgIEFyZSB3ZSB0YWxraW5nIGFib3V0IHRoZSBmcmFtZWJ1ZmZlciBjb250ZXh0IChgY2ZiYCk/IElmIHNvLCBpcyB0aGlzIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMsIHBhcnRpY3VsYXJseSBkaXJlY3QgYWNjZXNzPyBJIHdvbmRlciBhYm91dCBjb2xvciBkZXB0aCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1vZGVsIHdoZW4gYGNmYmAgaXMgaW4gcGxheS4gQW0gSSBsb29raW5nIGF0IGFueSBzcGVjaWZpYyBoYXJkd2FyZSBhY2NlbGVyYXRvciBpbnRlcmFjdGlvbnMgaGVyZSwgb3IgaXMgdGhpcyBwcmltYXJpbHkgc29mdHdhcmUtYmFzZWQ/XG5cbiogICBBbHRlcm5hdGl2ZWx5LCBjb3VsZCB0aGlzIGJlIHN5c3RlbS1sZXZlbCBibGl0dGluZyAoYHN5c2ApPyBUaGVuIEkgbmVlZCB0byBjb25zaWRlciBzeW5jaHJvbml6YXRpb24sIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBwcm9jZXNzZXMgb3IgZHJpdmVycy4gV2hhdCBraW5kIG9mIGJ1ZmZlcmluZyBpcyBpbiB1c2U/IElzIHRoZXJlIGFueSBjYWNoaW5nIGdvaW5nIG9uIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBUaGlzIGFsc28gYnJpbmdzIHVwIHF1ZXN0aW9ucyBhYm91dCB0aGUgdGFyZ2V0IGRpc3BsYXk6IGFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZGVkaWNhdGVkIGZyYW1lYnVmZmVyIG9yIHBlcmhhcHMgYSB3aW5kb3cgbWFuYWdlZCBieSBhIHdpbmRvd2luZyBzeXN0ZW0gbGlrZSBYMTE/XG5cblVsdGltYXRlbHksIHRoaXMgcmVtaW5kcyBtZSB0aGF0IEkgbmVlZCB0byBiZSBhdHRlbnRpdmUgdG8gdGhlIHN5c3RlbSBjb250ZXh0IGFuZCB0aGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gaW1hZ2UgbWFuaXB1bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQ5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjIxLjg4NDU5NDMyMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1ODEwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2ZiX2ltYWdlYmxpdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTQ1PWNvbmZpZyBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy00OC1cXHRoZWxwXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6NDk6XFx0ICBJbmNsdWRlIHRoZSBjZmJfaW1hZ2VibGl0IGZ1bmN0aW9uIGZvciBnZW5lcmljIHNvZnR3YXJlIGltYWdlXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNTAtXFx0ICBibGl0dGluZy4gVGhpcyBpcyB1c2VkIGJ5IGRyaXZlcnMgdGhhdCBkb24ndCBwcm92aWRlIHRoZWlyIG93blxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYzoxOTp2b2lkIGNmYl9pbWFnZWJsaXQoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UpXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTIwLXtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0zMS19XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jOjMyOkVYUE9SVF9TWU1CT0woY2ZiX2ltYWdlYmxpdCk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTMzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyMS45NjgxODEzNTdaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2MjAxNDgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdyYXBoaWNzIEFjY2VsZXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gUmlnaHQsIHRoZXNlIGFyZSB0aGUgY29tbW9uIHN1c3BlY3RzIGluIGFjY2VsZXJhdGVkIGdyYXBoaWNzIG9wZXJhdGlvbnMuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4udGhlIHBhdGNoIGlzIGFjdHVhbGx5IG1vZGlmeWluZyBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAuIFRoZXNlIGFyZSAqaW5saW5lKiBmdW5jdGlvbnMhIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24gb2YgdGhlc2UgaW5saW5lIGRlZmluaXRpb25zIHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyLiBXaGF0ICpkb2VzKiBtYXR0ZXIgaXMgd2hlcmUgdGhlc2UgYXJlICp1c2VkKi4gVGhlIGNvbXBpbGVyIHdpbGwsIGVmZmVjdGl2ZWx5LCBzdWJzdGl0dXRlIHRoZSBpbmxpbmVkIGNvZGUuIFNvLCB0aGUgaW1wb3J0YW50IGZ1bmN0aW9ucyBhcmUgdGhlIG9uZXMgdGhhdCAqY2FsbCogdGhlc2UgaW5saW5lZCBmdW5jdGlvbnMuXG5cbkFuZCBJIGtub3cgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGVycyBhcmUgYGNmYl8qYCBhbmQgYHN5c18qYOKAlHRob3NlIGFyZSB0aGUgcHJpbWFyeSBhY2NlbGVyYXRlZCBwYXRocywgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBwbGFjZXMgd2hlcmUgYGZiX2NvcHlhcmVhLmhgIGlzIGluY2x1ZGVkLCB0byBjYXRjaCBhbnkgZWRnZSBjYXNlcyBvciB1bmV4cGVjdGVkIGJlaGF2aW9ycy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIGluY2x1ZGVzIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHN1cnByaXNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYwOTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6MjcuNzMwMTk4Mjk3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDc1MDc4ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2NvcHlhcmVhLmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmNvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXFxcImNmYm1lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFxcXCJmYl9jb3B5YXJlYS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJjb3B5YXJlYS5jLTE4LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jOjE3OiNpbmNsdWRlIFxcXCJmYl9jb3B5YXJlYS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjoyOC4wMzc3MTIwNjhaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MjM2MTI0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRXhhbWluaW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYGZiX2ZpbGxyZWN0LmhgKipcblxuUmlnaHQsIGxldCBtZSBzZWUuLi4gSSdtIG5vdGljaW5nIHRoYXQgdGhlIGBmYl9maWxscmVjdC5oYCBoZWFkZXIgc2VlbXMgdG8gYmUgaW5jbHVkZWQgc3BlY2lmaWNhbGx5IGJ5IGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLiBUaGF0J3MgYSBiaXQgZm9jdXNlZC4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBwbGFjZXMgd2hlcmUgaXQgKnNob3VsZCogYmUgaW5jbHVkZWQsIG9yIHdoZXRoZXIgaXRzIHVzYWdlIGlzIGludGVudGlvbmFsbHkgbGltaXRlZCB0byB0aGVzZSB0d28gbW9kdWxlcy4gQXJlIHRoZXJlIG90aGVyIGFyZWFzIG9mIHRoZSBzeXN0ZW0gdGhhdCBjb3VsZCBiZW5lZml0IGZyb20gYWNjZXNzIHRvIHRoYXQgZnVuY3Rpb25hbGl0eT8gQ291bGQgdGhlcmUgYmUgcG90ZW50aWFsIGNvZGUgZHVwbGljYXRpb24gb3IgaW5lZmZpY2llbmNpZXMgaWYgaXQncyBub3QgbW9yZSB3aWRlbHkgYWNjZXNzaWJsZT8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyYWwgaW50ZW50IGhlcmU7IGlzIHRoaXMgYnkgZGVzaWduLCBvciBpcyB0aGlzIGp1c3QgYW4gb3ZlcnNpZ2h0PyBNeSBpbW1lZGlhdGUgY29uY2VybiwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZmlsZSBuYW1lLCBpcyB0aGF0IGl0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBsb3cgbGV2ZWwgZHJhd2luZyBwcmltaXRpdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjMyLjIxMDA3NzU5N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc0OTc2OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXFxcImNmYm1lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9maWxscmVjdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJmaWxscmVjdC5jLTE4LVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9maWxscmVjdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjozMi4zMDc1ODUyNzFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwOTI0NTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgdGhlIEluY2x1c2lvbiBvZiBgZmJfaW1hZ2VibGl0LmhgKipcblxuQWxyaWdodCwgc28gdGhlIHByb21wdCBoYXMgbWUgY2lyY2xpbmcgYmFjayB0byB0aGUgaW1hZ2UgYmxpdHRpbmcgbGlicmFyeSwgc3BlY2lmaWNhbGx5IGBmYl9pbWFnZWJsaXQuaGAuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBpbiB0aGlzIGNvbnRleHQuIFdoYXQgYXJlIHdlIHRyeWluZyB0byBhY2NvbXBsaXNoPyBBcmUgd2UgZGVhbGluZyB3aXRoIHJhdyBmcmFtZWJ1ZmZlciBhY2Nlc3M/IERvIHdlIG5lZWQgb3B0aW1pemVkIGltYWdlIGNvcHkgcm91dGluZXM/IElzIHRoaXMgdGFyZ2V0IHBsYXRmb3JtIGV2ZW4gdXNpbmcgYSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBhYnN0cmFjdGlvbiwgb3Igc29tZXRoaW5nIG1vcmUgYmVzcG9rZT8gYGZiX2ltYWdlYmxpdC5oYCBzdWdnZXN0cyBhIHRyYWRpdGlvbmFsIGZyYW1lYnVmZmVyIGFwcHJvYWNoLCB3aGljaCBpcyBnb29kIGlmIHRoYXQncyB0aGUgYmFzZSBhc3N1bXB0aW9uLlxuXG5UaGUgcmVhbCBxdWVzdGlvbnMgYXJlOiBJcyB0aGlzIHRoZSBjb3JyZWN0IGxldmVsIG9mIGFic3RyYWN0aW9uPyBJcyBpdCBoYXJkd2FyZS1hY2NlbGVyYXRlZCwgb3IgcHVyZWx5IHNvZnR3YXJlPyBJZiBzb2Z0d2FyZSwgYXJlIHRoZXJlIHBvdGVudGlhbGx5IGZhc3RlciBsb3ctbGV2ZWwgYWx0ZXJuYXRpdmVzLCBtYXliZSByZWx5aW5nIG9uIFNJTUQgaW50cmluc2ljcyBvciBzcGVjaWFsaXplZCBoYXJkd2FyZSByZWdpc3RlcnMgaWYgdGhleSBhcmUgZXhwb3NlZD9cblxuTW9yZSBnZW5lcmFsbHksIEkgbmVlZCB0byBldmFsdWF0ZSB0aGUgbWFpbnRhaW5hYmlsaXR5IGFuZCBwb3J0YWJpbGl0eSBpbXBsaWNhdGlvbnMuIElzIGBmYl9pbWFnZWJsaXQuaGAgd2lkZWx5IHN1cHBvcnRlZCBhbmQgZG9jdW1lbnRlZD8gRG9lcyBpdCBwcm92aWRlIHRoZSBmdW5jdGlvbmFsaXR5IHdlIHJlcXVpcmUgd2l0aG91dCB1bm5lY2Vzc2FyeSBvdmVyaGVhZD8gSSBuZWVkIHRvIGNvbnNpZGVyIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZ3JhcGhpY3Mgc3RhY2suIElmIGl0J3MgYSBsZWdhY3kgbGlicmFyeSwgdGhlIGNvc3QvYmVuZWZpdCBtaWdodCBub3QgYmUgdGhlcmUuIEkgbmVlZCB0byBrbm93IGhvdyBpdCBwbGF5cyBpbiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUuIFRoZXJlIGNvdWxkIGJlIGJldHRlciwgbG93ZXItbGV2ZWwgYXBwcm9hY2hlcywgb3IgYmV0dGVyLCBoaWdoZXItbGV2ZWwgYWJzdHJhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE0NCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjM4LjQxNjgzMzYxWiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI4MDAxNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2luY2x1ZGUgXFxcImZiX2ltYWdlYmxpdC5oXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9pbWFnZWJsaXQuaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmMtMTgtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTYtI2luY2x1ZGUgXFxcInN5c21lbS5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYzoxNzojaW5jbHVkZSBcXFwiZmJfaW1hZ2VibGl0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MjozOC42ODk2NDIwNjNaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI4MDQ5MTU4MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZyYW1lYnVmZmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIGl0J3MgY2xlYXIgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBoaW5nZXMgYXJvdW5kIHRob3NlIHNpeCBzcGVjaWZpYyBmcmFtZWJ1ZmZlciBmdW5jdGlvbnM6IGBGQl9DRkJfQ09QWUFSRUFgLCBgRkJfU1lTX0NPUFlBUkVBYCwgYEZCX0NGQl9GSUxMUkVDVGAsIGBGQl9TWVNfRklMTFJFQ1RgLCBgRkJfQ0ZCX0lNQUdFQkxJVGAsIGFuZCBgRkJfU1lTX0lNQUdFQkxJVGAuIFRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb25zLlxuXG5NeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0LCBhdCBhIG1pbmltdW0sIHdlJ2xsIGRlZmluaXRlbHkgbmVlZCBgRkJgLCB3aGljaCBjb3ZlcnMgdGhlIGZ1bmRhbWVudGFsIGZyYW1lYnVmZmVyIHN1cHBvcnQsIGFuZCBgRlJBTUVCVUZGRVJfQ09OU09MRWAsIHdoaWNoIGVuYWJsZXMgdGhlIGNydWNpYWwgZnJhbWVidWZmZXIgY29uc29sZSBmdW5jdGlvbmFsaXR5LiBOb3cgSSBuZWVkIHRvIHNlZSBpZiBteSB0aGlua2luZyBpcyByaWdodCBhYm91dCB0aGUgbG9jYXRpb24gb2YgdGhlc2UgY29uZmlncy4gTGV0J3MgaGVhZCBvdmVyIHRvIGBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ2AgYW5kIGRvdWJsZSBjaGVjay4gVGhpcyBzaG91bGQgYmUgd2hlcmUgdGhlc2UgZXNzZW50aWFsIGJ1aWxkaW5nIGJsb2NrcyBhcmUgZGVmaW5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc2NTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTEuNDk0NTYyMjEzWiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTYyMzc2MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZCX1NZU19DT1BZQVJFQVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz02MT1jb25maWcgRkJfU1lTX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy02OC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzo2OTpjb25maWcgRkJfU1lTX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctNzAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTI6NTEuNjEwODA1OTI2WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNTM1NzQ0NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb2RpbmcgdGhlIENvbmZpZzogQSBUcmlzdGF0ZSBXaXRob3V0IGEgVm9pY2UqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJJ20gbG9va2luZyBhdCB0aGlzIGBGQl9TWVNfQ09QWUFSRUFgIGNvbmZpZyBvcHRpb24gYW5kIHNvbWV0aGluZydzIG5vdCBxdWl0ZSByaWdodC4gSXQncyBhIHRyaXN0YXRlLCByaWdodD8gV2hpY2ggbWVhbnMgaXQgY2FuIGJlIHllcywgbm8sIG9yIG1heWJlLiBCdXQgdGhlcmUncyBubyBhc3NvY2lhdGVkIHByb21wdCDigJMgbm8gdXNlci1mYWNpbmcgc3RyaW5nIHRvIHRlbGwgbWUgd2hhdCB0aGlzIG9wdGlvbiAqZG9lcyogb3Igd2h5IEknZCB3YW50IHRvIGVuYWJsZSBpdC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgY29udHJvbGxlZCBieSBkZXBlbmRlbmNpZXMsIG5vdCBkaXJlY3RseSBieSBtZSwgdGhlIHVzZXIuIEl04oCZcyBhbiBvcHRpb24gZW5hYmxlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIGVuYWJsaW5nIG90aGVyIHRoaW5ncy5cblxuU28sIHRoZSBuZXh0IGxvZ2ljYWwgcXVlc3Rpb24gYmVjb21lczogV2hhdCdzIGRyaXZpbmcgdGhpcz8gV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgKnNlbGVjdGluZyogYEZCX1NZU19DT1BZQVJFQWA/IEkgbmVlZCB0byB0cmFjZSBiYWNrIHRob3NlIGRlcGVuZGVuY2llcyB0byB1bmRlcnN0YW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgYmVpbmcgc2V0LiBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHNlZSB3aGF0J3MgY29udHJvbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIGJpdC4gSSBzdXNwZWN0IHRoaXMgaXMgc29tZXRoaW5nIGRlZXAgaW4gdGhlIGZyYW1ld29yay4gTGV0J3Mgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODEwMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUyOjU1Ljg2NDM4MzA2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTY3NTQwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfU1lTX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzU0PWNvbmZpZyBGQl9WVDg1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzU3LVxcdHNlbGVjdCBGQl9TWVNfRklMTFJFQ1QgaWYgKCFGQl9XTVRfR0VfUk9QUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM1ODpcXHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBIGlmICghRkJfV01UX0dFX1JPUFMpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNTktXFx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMzY3PWNvbmZpZyBGQl9XTTg1MDVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzcxLVxcdHNlbGVjdCBGQl9TWVNfRklMTFJFQ1QgaWYgKCFGQl9XTVRfR0VfUk9QUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTM3MjpcXHRzZWxlY3QgRkJfU1lTX0NPUFlBUkVBIGlmICghRkJfV01UX0dFX1JPUFMpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzNzMtXFx0c2VsZWN0IEZCX1NZU19JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTEzMj1jb25maWcgRkJfRE1BTUVNX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTEzNC1cXHRkZXBlbmRzIG9uIEZCX0NPUkVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxMzU6XFx0c2VsZWN0IEZCX1NZU19DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTEzNi1cXHRzZWxlY3QgRkJfU1lTX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNjQ9Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjYtXFx0ZGVwZW5kcyBvbiBGQl9DT1JFXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTY3OlxcdHNlbGVjdCBGQl9TWVNfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjgtXFx0c2VsZWN0IEZCX1NZU19GSUxMUkVDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mjo1NS45NTQwNjQyNjVaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUwMTQyMzYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBGcmFtZWJ1ZmZlciBTeXN0ZW0gTWVtb3J5IEhlbHBlcnMqKlxuXG5SaWdodCwgc28gYEZCX1NZU01FTV9IRUxQRVJTYCBpcyBjbGVhcmx5IGRlZmluaW5nIHRoZSBzeXN0ZW0gbWVtb3J5LWJhc2VkIGFjY2VsZXJhdGlvbiByb3V0aW5lcy4gSXQncyBvcHRpbmcgZm9yIGBGQl9TWVNfQ09QWUFSRUFgLCBgRkJfU1lTX0ZJTExSRUNUYCwgYW5kIGBGQl9TWVNfSU1BR0VCTElUYC4gTWFrZXMgc2Vuc2UuIFRob3NlIGFyZSB0aGUgY29yZSBvcGVyYXRpb25zIHdlJ2QgZXhwZWN0IGZvciBnZW5lcmFsLXB1cnBvc2UgYWNjZWxlcmF0aW9uIHdoZW4gZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaXMgYXZhaWxhYmxlLlxuXG5CdXQgaGFuZyBvbuKApiBpcyBgRkJfQ0ZCX0NPUFlBUkVBYCBpbiB0aGUgbWl4IGFzIHdlbGw/IFRoYXQncyB0eXBpY2FsbHkgdXNlZCBmb3IgQml0QkxUIGFuZCBjaGFyYWN0ZXIgY29weWluZyB1c2luZyBhIGNvbG91ciBmcmFtZSBidWZmZXIuIElzIHRoZSBzeXN0ZW0gZ29pbmcgdG8gdXNlICpib3RoKiBvciBjb3VsZCB0aGV5IGJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIElmIHNvLCB3aHkgYW5kIGluIHdoYXQgY2lyY3Vtc3RhbmNlcz8gT3IgaXMgdGhlcmUgYSBkZWVwZXIgaW50ZXJhY3Rpb24gSSBuZWVkIHRvIGJlIGF3YXJlIG9mIGJldHdlZW4gdGhlbT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4ODcwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MDAuNDU1NDkwOTEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODU0MTc0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkJfQ0ZCX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTI5PWNvbmZpZyBGQl9DRkJfRklMTFJFQ1RcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTM2LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjM3OmNvbmZpZyBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0zOC1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzowMC41NDQwMzk2NDhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTMyMzE5MjQyMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBVbnByb21wdGVkIFRyaXN0YXRlKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSXQgc2VlbXMgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSB0cmlzdGF0ZSBzeXN0ZW0sIGJ1dCBjcnVjaWFsbHksIHRoZXJlJ3Mgbm8gZXhwbGljaXQgcHJvbXB0LiBUaGF0J3MgdGhlIGtleSBpc3N1ZS4gQSB0cmlzdGF0ZSwgYnkgaXRzIG5hdHVyZSwgbmVlZHMgYSBkZWZpbmVkIHNlbGVjdGlvbiBvciBjb250cm9sIG1lY2hhbmlzbSB0byBuYXZpZ2F0ZSBiZXR3ZWVuIGl0cyB0aHJlZSBzdGFibGUgc3RhdGVzLiBXaXRob3V0IHRoYXQsIGl04oCZcyBqdXN0Li4uaW5kZXRlcm1pbmF0ZS4gSXQncyBsaWtlIGhhdmluZyB0aHJlZSBzd2l0Y2hlcywgYnV0IG5vIGxldmVyIG9yIGJ1dHRvbiB0byBkZWNpZGUgd2hpY2ggcG9zaXRpb24gdGhleSdyZSBpbi4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IHdoYXQgbWVjaGFuaXNtLCBpbnRlcm5hbCBvciBleHRlcm5hbCwgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIHRoZXNlIHN0YXRlcz8gSXMgaXQgYSBwYXNzaXZlIHN5c3RlbSwgcmVseWluZyBvbiBpbmhlcmVudCBwcm9wZXJ0aWVzIG9yIHNvbWUga2luZCBvZiBleHRlcm5hbCBpbmZsdWVuY2UgdG8gZGV0ZXJtaW5lIGl0cyBiZWhhdmlvciwgb3IgaXMgdGhlcmUgYW4gaW1wbGljaXQgY29udHJvbCBzaWduYWwgb3IgY29uZGl0aW9uIEknbSBtaXNzaW5nPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSdzIHN0YXRlcyBhcmUgYmVpbmcgZGV0ZXJtaW5lZCB3aXRob3V0IGFuIG9idmlvdXMgZXhwbGljaXQgaW5wdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MjU1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MTMuNzc1OTY3OTRaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzg0MDIyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03MT1jb25maWcgRkJfQ0lSUlVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNzQtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3NTpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc2LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTA9Y29uZmlnIEZCX1BNMlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTkzLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTQ6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI1OT1jb25maWcgRkJfQVRBUklcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjItXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNjM6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNjQtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zMzM9Y29uZmlnIEZCX1ZHQTE2XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzM4OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzM5LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzUwPWNvbmZpZyBGQl9TVElcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTMtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzozNTQ6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNTUtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0zODM9Y29uZmlnIEZCX1RHQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM4OS1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjM5MDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM5MS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ3OT1jb25maWcgRkJfU0JVU19IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ4MC1cXHRib29sXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ4MTpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ4Mi1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTAwPWNvbmZpZyBGQl9DRzZcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MDItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoU1BBUkMgXFx1MDAyNlxcdTAwMjYgRkJfU0JVUylcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTAzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTA0LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTEwPWNvbmZpZyBGQl9GRkJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MTItXFx0ZGVwZW5kcyBvbiBGQl9TQlVTIFxcdTAwMjZcXHUwMDI2IFNQQVJDNjRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTEzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNTE0LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NTUyPWNvbmZpZyBGQl9YVlI1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NTUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1NTY6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NTctXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz01ODc9Y29uZmlnIEZCX1BWUjJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01OTEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo1OTI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01OTMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02MjQ9Y29uZmlnIEZCX1MxRDEzWFhYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjI3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NjI4OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjI5LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjQ4PWNvbmZpZyBGQl9OVklESUFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NTEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NTI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NTMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02OTg9Y29uZmlnIEZCX1JJVkFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03MDEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo3MDI6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03MDMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz04MDU9Y29uZmlnIEZCX01BVFJPWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTgwOS1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjgxMDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTgxMS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTkyNj1jb25maWcgRkJfUkFERU9OXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTI5LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6OTMwOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTMxLVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9OTg3PWNvbmZpZyBGQl9BVFlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05OTAtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo5OTE6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05OTItXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMDM5PWNvbmZpZyBGQl9TM1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNDMtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDQ0OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA0NS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEwNjI9Y29uZmlnIEZCX1NBVkFHRVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEwNjUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMDY2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTA2Ny1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExMDE9Y29uZmlnIEZCX1NJU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMDUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTA2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEwNy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExMzI9Y29uZmlnIEZCX1ZJQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExMzUtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMTM2OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTEzNy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTExNzE9Y29uZmlnIEZCX05FT01BR0lDXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE3NC1cXHRzZWxlY3QgRkJfQ0ZCX0ZJTExSRUNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjExNzU6XFx0c2VsZWN0IEZCX0NGQl9DT1BZQVJFQVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTc2LVxcdHNlbGVjdCBGQl9DRkJfSU1BR0VCTElUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTE5OD1jb25maWcgRkJfM0RGWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMDEtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjAyOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIwMy1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEyNDU9Y29uZmlnIEZCX1ZUODYyM1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNDktXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjUwOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTI1MS1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEyNjA9Y29uZmlnIEZCX1RSSURFTlRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjYzLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI2NDpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyNjUtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjgzPWNvbmZpZyBGQl9BUktcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMjg3LVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTI4ODpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyODktXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjk4PWNvbmZpZyBGQl9QTTNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzAxLVxcdHNlbGVjdCBGQl9DRkJfRklMTFJFQ1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwMjpcXHRzZWxlY3QgRkJfQ0ZCX0NPUFlBUkVBXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMDMtXFx0c2VsZWN0IEZCX0NGQl9JTUFHRUJMSVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTUzPWNvbmZpZyBGQl9TTTUwMVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NTYtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTU3OlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU1OC1cXHRzZWxlY3QgRkJfQ0ZCX0lNQUdFQkxJVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTUwPWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTItXFx0ZGVwZW5kcyBvbiBGQl9DT1JFXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTUzOlxcdHNlbGVjdCBGQl9DRkJfQ09QWUFSRUFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTQtXFx0c2VsZWN0IEZCX0NGQl9GSUxMUkVDVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzoxMy45MDk4MTQwMjJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODg0NDM5ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZyYW1lYnVmZmVyIGhlbHBlciBvcHRpb25zLCBzcGVjaWZpY2FsbHkgYEZCX0lPTUVNX0hFTFBFUlNgIGFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgLiBJdCBzZWVtcyBsaWtlIHNlbGVjdGluZyBgRkJfSU9NRU1fSEVMUEVSU2AgZW5hYmxlcyB0aGUgYEZCX0NGQl9DT1BZQVJFQWAsIGBGQl9DRkJfRklMTFJFQ1RgLCBhbmQgYEZCX0NGQl9JTUFHRUJMSVRgIGZ1bmN0aW9ucy4gQW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AgZG9lcyB0aGUgc2FtZSwgYnV0IHdpdGggdGhlIGBGQl9TWVNfYCB2YXJpYW50cy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBqdXN0IGVuYWJsZSBib3RoLCBzaW5jZSB0aGV5IHNlZW0gdG8gcHJvdmlkZSB1c2VmdWwsIG9wdGltaXplZCBmdW5jdGlvbnMuIEJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHRoYXQgbWFueSBkcml2ZXJzIGFsc28gc2VsZWN0IHRoZXNlLiBUaGF0J3MgYSBrZXkgcG9pbnQgdG8ga2VlcCBpbiBtaW5kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgdW5uZWNlc3NhcnkgcmVkdW5kYW5jeS5cblxuU28sIEkgY291bGQgbGlzdCBgRkJfSU9NRU1fSEVMUEVSU2AgYW5kIGBGQl9TWVNNRU1fSEVMUEVSU2AgZGlyZWN0bHkgaW4gdGhlIGBFbmFibGVDb25maWdzYCBzZWN0aW9uLCBvciBtYXliZSBJIHNob3VsZCBhaW0gZm9yIHRoZSBzcGVjaWZpYyBwcmltaXRpdmVzIGxpa2UgYEZCX0NGQl9DT1BZQVJFQWAuIEJ1dCwgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgSSBjYW4gYWN0dWFsbHkgZW5hYmxlIGBGQl9DRkJfQ09QWUFSRUFgIGRpcmVjdGx5IGluIGAuY29uZmlnYCBpZiBpdCdzIHRyaXN0YXRlIGFuZCBkb2Vzbid0IGhhdmUgaXRzIG93biBwcm9tcHQuIElmIEkgdHJ5IHRvIGVuYWJsZSBpdCwgdGhlIGJ1aWxkIHdpbGwgbGlrZWx5IGZhaWwuXG5cblJpZ2h0LCBzbyB0aGF0J3Mgd2hlcmUgYEZCX0lPTUVNX0hFTFBFUlNgIGNvbWVzIGluLiBJdCdzIGEgYm9vbGVhbiB3aXRoIGEgcHJvbXB0LiBJIHNob3VsZCB2ZXJpZnkgdGhpcyB0aG91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzkxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjI1LjM5ODI2MTE3MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MzU2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9JT01FTV9IRUxQRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE0Nj1jb25maWcgRkJfSU9NRU1fRk9QU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTQ5LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnOjE1MDpjb25maWcgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE1MS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNTctXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTU4OmNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTU5LVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MjUuNTUzNjIzNTMxWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODI1MTA4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gSGVscGVycyoqXG5cbkhtbSwgbm8sIHRoYXQgYEZCX0lPTUVNX0hFTFBFUlNgIHN5bWJvbCBpcyBhIGJvb2xlYW4sIGFuZCB0aGVyZSdzIG5vIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBwcm9tcHQuIFRoYXQgcGF0aCBpc24ndCBnb2luZyB0byBnZXQgbWUgYW55d2hlcmUgaW50ZXJlc3RpbmcgcmlnaHQgbm93LiBJdCdzIGEgYmluYXJ5IGNob2ljZS5cblxuTm93LCB3aGF0IGFib3V0IGBGQl9TWVNNRU1fSEVMUEVSU2A/IEkgbmVlZCB0byBjaGVjayBob3cgdGhhdCBvbmUgaXMgZGVmaW5lZC4gSXQncyBwb3RlbnRpYWxseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIHRvLiBJIHN1c3BlY3QsIGJhc2VkIG9uIHRoZSBuYW1pbmcgY29udmVudGlvbiwgaXQgY291bGQgYmUgYSBzaW1pbGFyIHNpdHVhdGlvbiwgYnV0IGl0J3Mgd29ydGggdGhlIHF1aWNrIGludmVzdGlnYXRpb24uIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBpcyBhIHByb21wdCBvciBtb3JlIGRldGFpbHMgZm9yIG1lIHRvIGNvbnNpZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzE2MSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjUzOjI4LjgzNjEzNzQ4NVoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAxNzc1MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9TWVNNRU1fSEVMUEVSU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZz0xNTg9Y29uZmlnIEZCX0lPTUVNX0hFTFBFUlNfREVGRVJSRURcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE2My1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNjQ6Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTY1LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3MS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNzI6Y29uZmlnIEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTczLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTM6MjkuMDM3OTE4ODIyWiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3ODQ3NjcwOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBSZWFzb25pbmcgb24gRnJhbWVidWZmZXIgRHJpdmVyIFNlbGVjdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoZXNlIGZyYW1lYnVmZmVyIGRyaXZlcnMgYXJlIGNob3NlbiBhbmQgaXQncyBnZXR0aW5nIGEgbGl0dGxlIGludHJpY2F0ZS4gV2UgaGF2ZSB0aGlzIGJvb2xlYW4gb3B0aW9uLCBsZXQncyBjYWxsIGl0IGEgXCJmbGFnXCIgZm9yIHRoZSBzYWtlIG9mIGNvbnZlcnNhdGlvbiwgdGhhdCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgcHJvbXB0IGF0dGFjaGVkIHRvIGl0LiBUaGF0IG1lYW5zIHdlIG5lZWQgc29tZSBraW5kIG9mIHNtYXJ0IGRyaXZlciB0byBhY3R1YWxseSAqc2VsZWN0KiBpdCwgbWFrZSBpdCBhY3RpdmUuXG5cbkZvciBleGFtcGxlLCBJIHNlZSB0aGF0IHRoZSBgRkJfVkdBMTZgIGRyaXZlciwgaXQgc2VlbXMgdG8gZGlyZWN0bHkgaW1wbHkgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0NPUFlBUkVBYCBlbmFibGVkLiBPaCB3YWl0LCBsb29raW5nIGNsb3NlciwgYEZCX1ZHQTE2YCBhbHNvIGltcGxpZXMgdGhhdCBpdCBuZWVkcyBgRkJfQ0ZCX0ZJTExSRUNUYCwgYW5kIGBGQl9DRkJfSU1BR0VCTElUYCBhcyB3ZWxsLiBUaGF0IGdpdmVzIG1lIGEgY2x1ZSBhYm91dCBhIHBhdHRlcm4uXG5cbk5vdywgd2hhdOKAmXMgKnNlbGVjdGluZyogYEZCX1NZU19DT1BZQVJFQWA/IExldCdzIHNlZS4uLiBgRkJfVlQ4NTAwYCwgYEZCX1dNODUwNWAsIGBGQl9ETUFNRU1fSEVMUEVSU2AsIGFuZCBgRkJfU1lTTUVNX0hFTFBFUlNgLiBJbnRlcmVzdGluZy4gU28gdGhlcmUncyBhIHNldCBvZiBtb3JlIGdlbmVyaWMgb3B0aW9ucyBoZXJlLiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoZXJlIGEgc2ltaWxhcmx5IGdlbmVyaWMgZHJpdmVyIHRoYXQgd2lsbCBoYW5kbGUgc2V0dGluZyBgRkJfU1lTTUVNX0hFTFBFUlNgIGJ5IGl0c2VsZj8gSXQgbG9va3MgbGlrZSB0aG9zZSBmb3VyIHRoaW5ncyBhcmUgcmVsYXRlZCB0byBsb3ctbGV2ZWwgbWVtb3J5IGhhbmRsaW5nLCBzbyB0aGVyZSBoYXMgdG8gYmUgc29tZXRoaW5nIHRoYXQgZGVwZW5kcyBvbiB0aGF0LiBJIG5lZWQgdG8ga2VlcCBsb29raW5nIHRvIHVuZGVyc3RhbmQgdGhlIGxheWVycyBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzU2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzozNC44MjI2ODg4OTdaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTEyNDI5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ4PWNvbmZpZyBGQl9IRUNVQkFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01MC1cXHRkZXBlbmRzIG9uIEZCXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjUxOlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01Mi1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNDY9Y29uZmlnIEZCX0FSQ1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTI0OC1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IEhBU19JT1BPUlQgXFx1MDAyNlxcdTAwMjYgKFg4NiB8fCBDT01QSUxFX1RFU1QpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI0OTpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNTcxPWNvbmZpZyBGQl9TTVNDVUZYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTU3NC1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NzU6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1NzYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1ODM9Y29uZmlnIEZCX1VETFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1ODctXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTg4OlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTg5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjA2PWNvbmZpZyBGQl9QUzNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjA4LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUFMzX1BTM0FWXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2MDk6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MTAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NTg9Y29uZmlnIEZCX1ZJUlRVQUxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjYwLVxcdGRlcGVuZHMgb24gRkJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY2MTpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY2Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY3OD1jb25maWcgWEVOX0ZCREVWX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY4MC1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFhFTlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjgxOlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjgyLVxcdHNlbGVjdCBYRU5fWEVOQlVTX0ZST05URU5EXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTY4OT1jb25maWcgRkJfTUVUUk9OT01FXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY5MS1cXHRkZXBlbmRzIG9uIEZCXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2OTI6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2OTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NTM9Y29uZmlnIEZCX0JST0FEU0hFRVRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzU1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgKEFSQ0hfUFhBIHx8IENPTVBJTEVfVEVTVClcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc1NjpcXHRzZWxlY3QgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc1Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTc3OT1jb25maWcgRkJfU1NEMTMwN1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3ODQtXFx0c2VsZWN0IEZCX0JBQ0tMSUdIVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzg1OlxcdHNlbGVjdCBGQl9TWVNNRU1fSEVMUEVSU19ERUZFUlJFRFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzg2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnPTE3Mj1jb25maWcgRkJfU1lTTUVNX0hFTFBFUlNfREVGRVJSRURcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9LY29uZmlnLTE3NS1cXHRzZWxlY3QgRkJfREVGRVJSRURfSU9cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZzoxNzY6XFx0c2VsZWN0IEZCX1NZU01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1MzozNC45NzM4MTkwODhaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM2MjYzOTU5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgVmlydHVhbCBGcmFtZSBCdWZmZXIgU3VwcG9ydCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEkgc2VlIGBGQl9WSVJUVUFMYCBoYXMgYmVlbiBzZWxlY3RlZCwgYW5kIHRoYXQncyBpbW1lZGlhdGVseSBwcm9taXNpbmcuIGBGQl9WSVJUVUFMYCBzcGVjaWZpY2FsbHkgcmVmZXJzIHRvIHRoZSBWaXJ0dWFsIEZyYW1lIEJ1ZmZlciBzdXBwb3J0LCBvciB2ZmIuIEFuZCwga25vd2luZyB3aGF0IEkga25vdyBhYm91dCBmdXp6aW5nIGFuZCB0aGUgcG93ZXIgb2YgaW5zdHJ1bWVudGVkIHRhcmdldHMsIHRoaXMganVtcHMgb3V0IGFzIGEgcG90ZW50aWFsIGdvbGRtaW5lLiBUaGUgdmZiIGhhcyBhbHdheXMgYmVlbiBhIGNvbXBlbGxpbmcgdGFyZ2V0IGFuZCB0aGUgZmFjdCB0aGF0IGl0IGlzIHNlbGVjdGVkIHN1Z2dlc3RzIGl0IGlzIHByZXNlbnQuIFNvLCBsZXQgbWUgZ2V0IGEgcXVpY2sgbG9vayBhdCBgRkJfVklSVFVBTGAgYW5kIHNlZSB3aGF0IG9wdGlvbnMgb3IgY29uZmlndXJhdGlvbnMgd2UgaGF2ZSB0byBsZXZlcmFnZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNDcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mzo0OC42MDAyMTg5ODZaIiwiU2VxIjo1MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTY4MDEyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRkJfVklSVFVBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDU9Y29uZmlnIEZCX1NINzc2MFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NTctXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE2NTg6Y29uZmlnIEZCX1ZJUlRVQUxcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTY1OS1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBGcmFtZSBCdWZmZXIgc3VwcG9ydCAoT05MWSBGT1IgVEVTVElORyEpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1Mzo0OC44MzU5MDU5NjFaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE5OTE5NzIxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIGBGQl9WSVJUVUFMYCBhbmQgYEZCX0lPTUVNX0hFTFBFUlNgKipcblxuWWVzLCAqRkJfVklSVFVBTCogaXMgaW5kZWVkIGEgdmVyeSB1c2VmdWwgdG9vbCwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgaW50cmljYWNpZXMgb2YgZnJhbWVidWZmZXIgbWVtb3J5IG1hbmFnZW1lbnQuIEl0IHNpbXBsaWZpZXMgdGhpbmdzIGNvbnNpZGVyYWJseSBpbiBtYW55IHNjZW5hcmlvcywgcGFydGljdWxhcmx5IHdoZW4geW91IG5lZWQgdG8gYWJzdHJhY3QgYXdheSBmcm9tIHRoZSBwaHlzaWNhbCBkZXRhaWxzIGFuZCBoYW5kbGUgdmlydHVhbCBtZW1vcnkgcmVnaW9ucy4gSSBhcHByZWNpYXRlIGl0cyBlbGVnYW50IGRlc2lnbjsgaXQgbWFrZXMgZGVidWdnaW5nIGZyYW1lYnVmZmVyIGlzc3VlcyBtdWNoIGVhc2llci4gQnV0IG5vdywgbXkgbWluZCB3YW5kZXJzIHRvICpGQl9JT01FTV9IRUxQRVJTKi4gSSdtIGFza2luZyBteXNlbGYgaWYgaXQncyB0aGUgcmlnaHQgY2hvaWNlIGdpdmVuIHRoZSB0YXNrIEknbSBjb250ZW1wbGF0aW5nLiBBcmUgd2UgcmVhbGx5IGxldmVyYWdpbmcgdGhlIGJlbmVmaXRzIG9mIHRob3NlIGhlbHBlciBmdW5jdGlvbnM/IEFyZSB0aGVyZSBwb3RlbnRpYWwgdHJhZGUtb2ZmcyBpbiB0aGlzIHNwZWNpZmljIGNvbnRleHQ/IFRoaXMgY291bGQgaW52b2x2ZSBhbiBhc3Nlc3NtZW50IG9mIG1lbW9yeSBhY2Nlc3MgcGF0dGVybnMsIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucywgb3IgZXZlbiBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgdGhlIGRlY2lzaW9uLiBUaW1lIHRvIHRha2UgYSBkZWVwZXIgZGl2ZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTQ4OSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjAwLjgyNzg4MDc2M1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NTcxNjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz02ND1jb25maWcgRkJfR1JWR0FcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02Ni1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFNQQVJDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjY3OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTY4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMTc9Y29uZmlnIEZCX0FDT1JOXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTE5LVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgQVJNIFxcdTAwMjZcXHUwMDI2IEFSQ0hfQUNPUk5cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTIwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTI2PWNvbmZpZyBGQl9DTFBTNzExWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyOS1cXHRkZXBlbmRzIG9uIExDRF9DTEFTU19ERVZJQ0VcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEzMS1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTM3PWNvbmZpZyBGQl9TQTExMDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzktXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBBUk0gXFx1MDAyNlxcdTAwMjYgQVJDSF9TQTExMDBcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQ5PWNvbmZpZyBGQl9JTVhcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTMtXFx0ZGVwZW5kcyBvbiBMQ0RfQ0xBU1NfREVWSUNFXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1NDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTUtXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1OD1jb25maWcgRkJfQ1lCRVIyMDAwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYwLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT1BPUlQgXFx1MDAyNlxcdTAwMjYgKEJST0tFTiB8fCAhU1BBUkM2NClcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTYxOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTk1PWNvbmZpZyBGQl9RNDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xOTgtXFx0ZGVmYXVsdCB5XFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE5OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yMDAtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjM4PWNvbmZpZyBGQl9GTTJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNDAtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBaT1JST1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyNDE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjQyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0yNzA9Y29uZmlnIEZCX09GXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjc0LVxcdHNlbGVjdCBBUEVSVFVSRV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjI3NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yNzYtXFx0c2VsZWN0IEZCX01BQ01PREVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MjgxPWNvbmZpZyBGQl9DT05UUk9MXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjgzLVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgKChQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMikgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyODQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjg1LVxcdHNlbGVjdCBGQl9NQUNNT0RFU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI5MD1jb25maWcgRkJfUExBVElOVU1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0yOTItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoyOTM6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMjk0LVxcdHNlbGVjdCBGQl9NQUNNT0RFU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTI5OT1jb25maWcgRkJfVkFMS1lSSUVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDEtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoTUFDIHx8IChQUENfUE1BQyBcXHUwMDI2XFx1MDAyNiBQUEMzMikpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjMwMjpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMDMtXFx0c2VsZWN0IEZCX01BQ01PREVTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzA4PWNvbmZpZyBGQl9DVDY1NTUwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMzEwLVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgUFBDMzIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjMxMTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTItXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTMxNj1jb25maWcgRkJfQVNJTElBTlRcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zMTgtXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzE5OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTMyMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MzcwPWNvbmZpZyBGQl9NQUNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0zNzItXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiBNQUNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MzczOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTM3NC1cXHRzZWxlY3QgRkJfTUFDTU9ERVNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MDc9Y29uZmlnIEZCX1VWRVNBXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDEwLVxcdGRlcGVuZHMgb24gIVVNTFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0MTE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDEyLVxcdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MjQ9Y29uZmlnIEZCX1ZFU0FcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00MjctXFx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NDI4OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQyOS1cXHRzZWxlY3QgU1lTRkJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz00MzY9Y29uZmlnIEZCX0VGSVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTQ0MC1cXHRzZWxlY3QgRFJNX1BBTkVMX09SSUVOVEFUSU9OX1FVSVJLU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo0NDE6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDQyLVxcdHNlbGVjdCBTWVNGQlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTQ1Nj1jb25maWcgRkJfR0JFXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNDU5LVxcdGRlcGVuZHMgb24gU0dJX0lQMzIgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjQ2MDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy00NjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU2Nj1jb25maWcgRkJfWFZSMjUwMFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU2OC1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IFBDSSBcXHUwMDI2XFx1MDAyNiBTUEFSQzY0XFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjU2OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy01NzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTU3Nz1jb25maWcgRkJfWFZSMTAwMFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU3OS1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IFNQQVJDNjRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NTgwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTU4MS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9NjEwPWNvbmZpZyBGQl9PUEVOQ09SRVNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MTItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjYxMzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02MTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTYzNj1jb25maWcgRkJfQVRNRUxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy02NDEtXFx0c2VsZWN0IEZCX0JBQ0tMSUdIVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzo2NDI6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctNjQzLVxcdHNlbGVjdCBGQl9NT0RFX0hFTFBFUlNcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz03NDY9Y29uZmlnIEZCX0k3NDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy03NDgtXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6NzQ5OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTc1MC1cXHRzZWxlY3QgRkJfTU9ERV9IRUxQRVJTXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9ODk0PWNvbmZpZyBGQl9NQVRST1hfTUFWRU5cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04OTYtXFx0ZGVwZW5kcyBvbiBGQl9NQVRST1hfRyBcXHUwMDI2XFx1MDAyNiBGQl9NQVRST1hfSTJDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjg5NzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy04OTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTk2NT1jb25maWcgRkJfQVRZMTI4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctOTY3LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjk2ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy05NjktXFx0c2VsZWN0IEZCX01BQ01PREVTIGlmIFBQQ19QTUFDXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTE4Nz1jb25maWcgRkJfS1lST1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTExODktXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0lcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTE5MDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMTkxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xMjI5PWNvbmZpZyBGQl9WT09ET08xXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTIzMS1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFBDSVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxMjMyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTEyMzMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTEzMTE9Y29uZmlnIEZCX0NBUk1JTkVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzEzLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjEzMTQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMxNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTMzNT1jb25maWcgRkJfQVUxMTAwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTMzOC1cXHRkZXBlbmRzIG9uIE1JUFNfQUxDSEVNWSB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTMzOTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xMzQwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDAxPWNvbmZpZyBGQl9QTUFHX0FBXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwMy1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IFRDXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0MDQ6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQwNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQwOT1jb25maWcgRkJfUE1BR19CQVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTEtXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBUQ1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDEyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0MTc9Y29uZmlnIEZCX1BNQUdCX0JcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDE5LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgVENcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQyMDpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDIxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDI2PWNvbmZpZyBGQl9NQVhJTkVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDI4LVxcdGRlcGVuZHMgb24gKEZCID0geSkgXFx1MDAyNlxcdTAwMjYgTUFDSF9ERUNTVEFUSU9OXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0Mjk6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQzNT1jb25maWcgRkJfRzM2NFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MzctXFx0ZGVwZW5kcyBvbiAoRkIgPSB5KSBcXHUwMDI2XFx1MDAyNiAoTUlQU19NQUdOVU1fNDAwMCB8fCBPTElWRVRUSV9NNzAwKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNDM4OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE0MzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE0NDM9Y29uZmlnIEZCXzY4MzI4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ0NS1cXHRkZXBlbmRzIG9uIChGQiA9IHkpIFxcdTAwMjZcXHUwMDI2IChNNjgzMjggfHwgTTY4RVozMjggfHwgTTY4VlozMjgpXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE0NDY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ0Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTQ1MT1jb25maWcgRkJfUFhBMTY4XFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTQ1NC1cXHRkZXBlbmRzIG9uIENQVV9QWEExNjggfHwgQ1BVX1BYQTkxMCB8fCBDT01QSUxFX1RFU1RcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQ1NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDU2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNDYwPWNvbmZpZyBGQl9QWEFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDYyLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgQVJDSF9QWEFcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTQ2MzpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNDY0LVxcdHNlbGVjdCBWSURFT01PREVfSEVMUEVSUyBpZiBPRlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MTE9Y29uZmlnIEZCX0ZTTF9ESVVcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTEzLVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRlNMX1NPQ1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNTE0OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MTUtXFx0c2VsZWN0IEZCX01PREVfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE1MzI9Y29uZmlnIEZCX1MzQ1xcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE1MzUtXFx0ZGVwZW5kcyBvbiBBUkNIX1MzQzY0WFggfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnOjE1MzY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTUzNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc9MTU5NT1jb25maWcgRkJfSUJNX0dYVDQ1MDBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTk3LVxcdGRlcGVuZHMgb24gRkJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTU5ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNTk5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjIzPWNvbmZpZyBGQl9YSUxJTlhcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjI1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgKE1JQ1JPQkxBWkUgfHwgQVJDSF9aWU5RIHx8IEFSQ0hfWllOUU1QKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjI2OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MjctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2MzI9Y29uZmlnIEZCX0dPTERGSVNIXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTYzNS1cXHRkZXBlbmRzIG9uIEdPTERGSVNIIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjM2OlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2MzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDA9Y29uZmlnIEZCX0NPQkFMVFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBNSVBTX0NPQkFMVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNjQzOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDQtXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE2NDU9Y29uZmlnIEZCX1NINzc2MFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE2NDgtXFx0XFx0fHwgQ1BVX1NVQlRZUEVfU0g3NzIwIHx8IENQVV9TVUJUWVBFX1NINzcyMSlcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTY0OTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNjUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNjk4PWNvbmZpZyBGQl9NQjg2MlhYXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTcwMS1cXHRkZXBlbmRzIG9uIFBDSSB8fCAoT0YgXFx1MDAyNlxcdTAwMjYgUFBDKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzAyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3Mzc9Y29uZmlnIEZCX0VQOTNYWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3MzktXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBBUkNIX0VQOTNYWFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzQwOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NDEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnPTE3NjM9Y29uZmlnIEZCX1NJTVBMRVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjctXFx0c2VsZWN0IEFQRVJUVVJFX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2ODpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZy0xNzY5LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzkwPWNvbmZpZyBGQl9TTTcxMlxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3OTItXFx0ZGVwZW5kcyBvbiBGQiBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZzoxNzkzOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3OTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc9MTU4PWNvbmZpZyBGQl9JT01FTV9IRUxQRVJTX0RFRkVSUkVEXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvS2NvbmZpZy0xNjEtXFx0c2VsZWN0IEZCX0RFRkVSUkVEX0lPXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWc6MTYyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL0tjb25maWctMTYzLVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTEzPWNvbmZpZyBGQl9HRU9ERV9MWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTE1LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRkJfR0VPREVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6MTY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTI2PWNvbmZpZyBGQl9HRU9ERV9HWFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTI4LVxcdGRlcGVuZHMgb24gRkIgXFx1MDAyNlxcdTAwMjYgRkJfR0VPREVcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWc6Mjk6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2dlb2RlL0tjb25maWctMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnPTM5PWNvbmZpZyBGQl9HRU9ERV9HWDFcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvZ2VvZGUvS2NvbmZpZy00MS1cXHRkZXBlbmRzIG9uIEZCIFxcdTAwMjZcXHUwMDI2IEZCX0dFT0RFXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnOjQyOlxcdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTXFxuZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS9LY29uZmlnLTQzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc9Mj1jb25maWcgTU1QX0ZCXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L21tcC9mYi9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBGQlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWc6NTpcXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSU1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvbW1wL2ZiL0tjb25maWctNi1cXHRkZWZhdWx0IHlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnPTI9Y29uZmlnIEZCX09NQVBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnLTUtXFx0ZGVwZW5kcyBvbiBBUkNIX09NQVAxIHx8IChBUk0gXFx1MDAyNlxcdTAwMjYgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcC9LY29uZmlnOjY6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvS2NvbmZpZy03LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc9NT1tZW51Y29uZmlnIEZCX09NQVAyXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnLTExLVxcdHNlbGVjdCBPTUFQMl9WUkZCIGlmIEFSQ0hfT01BUDIgfHwgQVJDSF9PTUFQM1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvb21hcDIvb21hcGZiL0tjb25maWc6MTI6XFx0c2VsZWN0IEZCX0lPTUVNX0hFTFBFUlNcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L29tYXAyL29tYXBmYi9LY29uZmlnLTEzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MDAuOTQ0NDU3MzE2WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3NzcyMDAzMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnJhbWVidWZmZXIgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyB0aHJvdWdoIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8gY29uZmlndXJlIHRoaXMgZnJhbWVidWZmZXIgc2V0dXAuIFJpZ2h0IG5vdywgYEZCX1NJTVBMRWAgcHVsbHMgaW4gYEZCX0lPTUVNX0hFTFBFUlNgLiBUaGF0IG1ha2VzIHNlbnNlLiBUaGUgcmVhbCB0cmljayBpcyB0byBnZXQgKmJvdGgqIGBGQl9TWVNNRU1fSEVMUEVSU2AgYW5kIGBGQl9JT01FTV9IRUxQRVJTYCwgYW5kIGl0IGxvb2tzIGxpa2UgSSBjYW4gZG8gdGhhdCBieSBlbmFibGluZyBgRkJfVklSVFVBTGAgKmFuZCogYEZCX1NJTVBMRWAuIERvaW5nIHRoYXQgd2lsbCBzZWxlY3QgdGhlIGNvcmUgZnVuY3Rpb25zIEkgbmVlZCBmb3IgYmFzaWMgb3BlcmF0aW9uczogYEZCX1NZU19DT1BZQVJFQWAsIGBGQl9TWVNfRklMTFJFQ1RgLCBgRkJfU1lTX0lNQUdFQkxJVGAsIGFuZCB0aGUgQ0ZCIHZhcmlhbnRzOiBgRkJfQ0ZCX0NPUFlBUkVBYCwgYEZCX0NGQl9GSUxMUkVDVGAsIGBGQl9DRkJfSU1BR0VCTElUYC5cblxuTm93LCBJICphbHNvKiBuZWVkIHRvIGVuc3VyZSBgZmJjb25gIGlzIGVuYWJsZWQsIHNpbmNlIHRoYXQncyB3aGF0J3MgYWN0dWFsbHkgKnVzaW5nKiB0aGVzZSBmcmFtZWJ1ZmZlciBmdW5jdGlvbnMsIEkgbmVlZCB0byBtYWtlIHN1cmUgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGVuYWJsZWQuXG5cbldhaXQsIGBGQl9WSVJUVUFMYCBpcyBhIHRyaXN0YXRlLCBub3QgYSBib29sZWFuLCBzbyBJIHNob3VsZCBqdXN0IGJlIHNwZWNpZnlpbmcgYEZCX1ZJUlRVQUxgIGFuZCBgRkJfU0lNUExFYCwgYW5kIGxldCB0aGUgYnVpbGQgc3lzdGVtIHNvcnQgb3V0IHRoZSBpbnRlcm1lZGlhdGUgc3RhdGVzLiBKdXN0IG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZSBjb25maWcgbmFtZXMgcmlnaHQgZm9yIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjA2LjcyMTY2MDU4NVoiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxNjE5ODE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vY29uc29sZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc9NDc9Y29uZmlnIERVTU1ZX0NPTlNPTEVfUk9XU1xcbi0tXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNTctXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6NTg6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVcXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy01OS1cXHRib29sIFxcXCJGcmFtZWJ1ZmZlciBDb25zb2xlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy02Ny1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzo2ODpjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRV9MRUdBQ1lfQUNDRUxFUkFUSU9OXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctNjktXFx0Ym9vbCBcXFwiRW5hYmxlIGxlZ2FjeSBmYmNvbiBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY29kZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTg3LVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnOjg4OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFVEVDVF9QUklNQVJZXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctODktICAgICAgIGJvb2wgXFxcIk1hcCB0aGUgY29uc29sZSB0byB0aGUgcHJpbWFyeSBkaXNwbGF5IGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnLTEwMy1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZzoxMDQ6Y29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfUk9UQVRJT05cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMDUtICAgICAgIGJvb2wgXFxcIkZyYW1lYnVmZmVyIENvbnNvbGUgUm90YXRpb25cXFwiXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZy0xMTMtXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWc6MTE0OmNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSXFxuZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWctMTE1LVxcdGJvb2wgXFxcIkZyYW1lYnVmZmVyIENvbnNvbGUgRGVmZXJyZWQgVGFrZW92ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjA2LjgyMzI4ODMwOVoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzk1MTI2NzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBmcmFtZWJ1ZmZlciBvcHRpb25zIGhlcmUuIFllcCwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgIGlzIGRlZmluaXRlbHkgaW4gdGhlIG1peCwgbm8gcXVlc3Rpb24uIE5vdywgSSBuZWVkIHRvIGVuYWJsZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb2J2aW91cyBjYW5kaWRhdGVzIGFyZSBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQsIG9mIGNvdXJzZSwgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBCdXQgaG9sZCBvbi4uLiBgRkJfU0lNUExFYC4uLiB0aGF0J3MganVzdCBhIGRlZmluaXRpb24sIGlzbid0IGl0PyBJdCdzIGNvbm5lY3RlZCB0byBgY29uZmlnIEZCX1NJTVBMRWAuIE9rYXksIHRpbWUgdG8gZGl2ZSBkZWVwZXIuIExldCdzIGRpZyBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEZCX1NJTVBMRWAgYW5kIHNlZSB3aGF0IGl0J3MgdGllZCB0by4gVW5kZXJzdGFuZGluZyB0aG9zZSBkZXBlbmRlbmNpZXMgaXMga2V5IHRvIHRoaXMgZW50aXJlIGNvbmZpZ3VyYXRpb24gcHV6emxlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgaW50cm9kdWNlIGFueSBjb25mbGljdHMgb3IgbGVhdmUgYW55IGNyaXRpY2FsIGNvbXBvbmVudHMgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjE3MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjExLjYxODQxODc4OVoiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyNzk0ODc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGQl9TSU1QTEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvS2NvbmZpZz0xNzUzPWNvbmZpZyBGQl9CUk9BRFNIRUVUXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWctMTc2Mi1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L0tjb25maWc6MTc2Mzpjb25maWcgRkJfU0lNUExFXFxuZHJpdmVycy92aWRlby9mYmRldi9LY29uZmlnLTE3NjQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBmcmFtZWJ1ZmZlciBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoxMS43MjEyMTkyNDNaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYxNDExNDI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBjb25maWd1cmF0aW9uIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGFyY2hpdGVjdHVyZS4gSXQgaGluZ2VzIG9uIHdoZXRoZXIgd2UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBsaWtlIFBQQywgQVJNLCBYODYsIE1JUFMsIFNQQVJDLCBSSVNDViwgb3IgYSBjb21waWxlIHRlc3Qgc2V0dXA7IHRoYXQncyB0aGUgY29yZS4gVGhlbiwgYEZCX1ZJUlRVQUxgIGxvb2tzIGxpa2UgaXQnbGwgZ2V0IG1lIHRoZSBgRkJfU1lTTUVNX0hFTFBFUlNgLCB0aGF0IG1ha2VzIHNlbnNlLiBCdXQgd2hhdCBhYm91dCBgRkJfSU9NRU1fSEVMUEVSU2AsIGhvdyBkbyBJIGhhbmRsZSB0aGF0PyBJIGNhbiBqdXN0IHR1cm4gb24gYEZCX1ZFU0FgIG9yIGBGQl9FRklgIG9yIGBGQl9TSU1QTEVgLCBvciBhIGNvbWJpbmF0aW9uIG9mIHRoZW0uIFllYWgsIGxldCdzIGtlZXAgaXQgc2ltcGxlIGFuZCBqdXN0IGxpc3QgYEZCX1ZJUlRVQUxgLCBgRkJfU0lNUExFYCwgYW5kIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gVGhhdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBiYXNlLlxuXG5Ib2xkIG9uLi4uIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGZiX2NvcHlhcmVhYCwgYGZiX2ZpbGxyZWN0YCwgYW5kIGBmYl9pbWFnZWJsaXRgLiBSaWdodCwgdGhhdCBtZWFucyB0aGUgZm9jdXMgaXMgb24gdGhvc2UgY29yZSBvcGVyYXRpb25zLiBBbmQgdGhlIHN5bWJvbHMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBub3cgYXJlIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuXG5cbkhtbSwgSSBzaG91bGQgZG91YmxlIGNoZWNrIHRoYXQgYHN5c19jb3B5YXJlYWAgaXMgZXhwb3J0ZWQuIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQncyBhY2Nlc3NpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjUzMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoxNy4zMzUzMzYzNjJaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MTUzMzI0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MKHN5c19jb3B5YXJlYSlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MTcuNDMyNDk1NTQ2WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MjQyNzcwOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBhcyBJIGRlbHZlIGludG8gdGhpczpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IE5hdmlnYXRpbmcgdGhlIENvZGViYXNlKipcblxuSG1tLCB3aGVyZSBkbyBJIGV2ZW4gYmVnaW4gd2l0aCB0aGlzPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgZ29pbmcgb24sIGFuZCB0byBkbyB0aGF0LCBJJ20gdGhpbmtpbmcsIFwiV2FpdCwgbGV0J3MgY2hlY2sgYHN5c2NvcHlhcmVhLmNgLlwiIFRoYXQncyB0aGUgb2J2aW91cyBmaXJzdCBzdGVwLCByaWdodD8gSXQncyBhIGtleSBmdW5jdGlvbiBmb3IgbWVtb3J5IHRyYW5zZmVycy4gSSBoYXZlIGEgZmVlbGluZyB0aGF0IGZpbGUgd2lsbCBsaWtlbHkgY29udGFpbiB0aGUgZnVuY3Rpb24gb2YgaW50ZXJlc3Qgb3IgbWF5YmUgdGhlIGZ1bmN0aW9ucyBjYWxsaW5nIGl0LiBUaGlzIGZpbGUgc2VlbXMgbGlrZSB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaXMgb3BlcmF0aW5nLiBIb3BlZnVsbHksIGl0IGlzIHdlbGwgY29tbWVudGVkLiBJIGNhbiBnZXQgc29tZSBjb250ZXh0IHF1aWNrbHkgYW5kIHdvcmsgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMwOTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoyMS4yNTY3NzU3MTdaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMjc4MzE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmM9MTk9dm9pZCBzeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKnAsIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNjb3B5YXJlYS5jLTI1LX1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzY29weWFyZWEuYzoyNjpFWFBPUlRfU1lNQk9MKHN5c19jb3B5YXJlYSk7XFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlhcmVhLmMtMjctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjIxLjM1MDA1ODYyMloiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzIxMjk4OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyB0aGUgSW5jbHVkZSoqXG5cbk9rYXksIGl0J3MgZXhwb3J0ZWQhIEkga25ldyBpdCBoYWQgdG8gYmUgc29tZXRoaW5nIHNpbXBsZSwgcHJvYmFibHkgYSBmcnVzdHJhdGluZyB0eXBvIG9yIGEgcmVnZXggbWlzdGFrZSBJIG92ZXJsb29rZWQgZWFybGllci4gVGltZSB0byBtb3ZlIG9uLlxuXG5Ob3csIGxldCdzIGNhc3QgYSB3aWRlciBuZXQuIEkgc2hvdWxkIGh1bnQgZm9yIGFueSBvdGhlciBwbGFjZXMgdGhlc2UgaGVhZGVycyBhcmUgcHVsbGVkIGluLCBzcGVjaWZpY2FsbHkgYGZiX2NvcHlhcmVhLmhgLCBgZmJfZmlsbHJlY3QuaGAsIG9yIGBmYl9pbWFnZWJsaXQuaGAuIEkndmUgYWxyZWFkeSBjb25maXJtZWQgdGhhdCBgZmJfY29weWFyZWEuaGAgaXMgb25seSB1c2VkIGluIGBjZmJjb3B5YXJlYS5jYCBhbmQgYHN5c2NvcHlhcmVhLmNgLCBzbyB0aGF0J3MgY292ZXJlZC4gSG1tLCB3aGF0IGFib3V0IGBmYl9maWxscmVjdC5oYD8gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCBvbmUgdG9vLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQyMiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDoyNi4wNzEzNjA3MDdaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTE3NDYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXFwiZmJfZmlsbHJlY3QuaFxcXCJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcXFwiY2ZibWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMtMTgtXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzZmlsbHJlY3QuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ZpbGxyZWN0LmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ZpbGxyZWN0LmMtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjI2LjIyMDU0MTgxOFoiLCJTZXEiOjY1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxMTQyNTgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipDb25zaWRlcmluZyBgZmJfaW1hZ2VibGl0LmhgKipcblxuQWxyaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCB0aGUgZnJhbWVidWZmZXIgaW1hZ2UgYmxpdHRpbmcgaGVhZGVyLCBgZmJfaW1hZ2VibGl0LmhgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgd2hhdCBhcmUgd2UgKmRvaW5nKiB3aXRoIHRoaXM/IEFyZSB3ZSBsb29raW5nIGF0IGEgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24sIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgcGVyaGFwcyBhIHBvcnRhYmlsaXR5IGlzc3VlPyBJJ20gYWxyZWFkeSBtZW50YWxseSBydW5uaW5nIHRocm91Z2ggdGhlIHZhcmlvdXMgY29udGV4dHMgd2hlcmUgSSd2ZSBlbmNvdW50ZXJlZCB0aGlzIOKAkyBkaXJlY3QgZnJhbWVidWZmZXIgbWFuaXB1bGF0aW9uLCBncmFwaGljcyBsaWJyYXJ5IGludGVncmF0aW9uLCBkZXZpY2Utc3BlY2lmaWMgZHJpdmVyc+KApiB0aGUgbGlzdCBnb2VzIG9uLiBJIG5lZWQgbW9yZSBpbmZvcm1hdGlvbiB0byByZWFsbHkgZGlnIGluLiBJIGFzc3VtZSB3ZeKAmXJlIGV4cGxvcmluZyBvcHRpb25zIHJlbGF0ZWQgdG8gbWVtb3J5IG1hbmFnZW1lbnQsIGFsaWdubWVudCBjb25zdHJhaW50cywgYW5kIHBvdGVudGlhbCBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzLiBBcmUgd2UgY29uY2VybmVkIHdpdGggcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb25zPyBPciBhcmUgd2UgY29uc2lkZXJpbmcgd2F5cyB0byBzdHJlYW1saW5lIHRoZSBibGl0dGluZyBwcm9jZXNzIGl0c2VsZiwgcGVyaGFwcyB0YXJnZXRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBhcmNoaXRlY3R1cmU/IEdvdHRhIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIGFjdHVhbCBnb2FsIGJlZm9yZSBJIGNhbiBvZmZlciBhbnkgaW5zaWdodGZ1bCBjb21tZW50LiBXaGF0J3MgdGhlIGFwcGxpY2F0aW9uIGhlcmU/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzODgyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzAuMDIxNjg3NzNaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDM1NjM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIjaW5jbHVkZSBcXFwiZmJfaW1hZ2VibGl0LmhcXFwiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmltZ2JsdC5jLTE2LSNpbmNsdWRlIFxcXCJjZmJtZW0uaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvY2ZiaW1nYmx0LmM6MTc6I2luY2x1ZGUgXFxcImZiX2ltYWdlYmxpdC5oXFxcIlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYy0xOC1cXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNpbWdibHQuYy0xNi0jaW5jbHVkZSBcXFwic3lzbWVtLmhcXFwiXFxuZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2ltZ2JsdC5jOjE3OiNpbmNsdWRlIFxcXCJmYl9pbWFnZWJsaXQuaFxcXCJcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMtMTgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjMwLjIyNjA0ODQ5N1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MDM3MzYwNTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRnJhbWVidWZmZXIgQm91bmRzIENoZWNraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhlIGZvY3VzIGhlcmUgaXMgcHJldHR5IGNsZWFyOiBpdCdzIHRob3NlIHNpeCBmdW5jdGlvbnPigJQgYGNmYl9jb3B5YXJlYWAsIGBzeXNfY29weWFyZWFgLCBgY2ZiX2ZpbGxyZWN0YCwgYHN5c19maWxscmVjdGAsIGBjZmJfaW1hZ2VibGl0YCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGF0Y2ggYWZmZWN0cyB0aGVtLlxuXG5MZXQncyByZWNhcCB0aGUgcmF0aW9uYWxlLiBUaGV5J3ZlIGFkZGVkIGJvdW5kcyBjaGVja2luZyB0byBgZmJfY29weWFyZWFgLCBgZmJfZmlsbHJlY3RgLCBhbmQgYGZiX2ltYWdlYmxpdGAsIHdoaWNoIGFyZSBjb3JlIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucy4gSXQncyBhbiBpbmxpbmUgc2l0dWF0aW9uLCB1c2VkIGJ5IHRoZSBzb2Z0d2FyZSByZW5kZXJpbmcgZmFsbGJhY2tzIGluIGBjZmJfKmAgYW5kIGBzeXNfKmAuIFRoaXMgYm91bmRzIGNoZWNraW5nIHNwZWNpZmljYWxseSBndWFyZHMgYWdhaW5zdCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3Nlcy4gRXNzZW50aWFsbHksIHRoZSBwYXRjaCBtaXRpZ2F0ZXMgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIG9yIG91dC1vZi1ib3VuZHMgcmVhZHMvd3JpdGVzIHdoZW4gb3BlcmF0aW9ucywgbGlrZSBzY3JvbGxpbmcgaW4gYGZiY29uYCwgdXNlIGNvb3JkaW5hdGVzIHRoYXQgZXhjZWVkIHRoZSB2aXJ0dWFsIHJlc29sdXRpb24sIHdoaWNoIGlzIGEgZ3JlYXQgcGxhY2UgdG8gc3RhcnQgZnV6emluZywgZm9yIHN1cmUuXG5cblRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcmUgYEZCYCwgYEZCX1ZJUlRVQUxgLCBgRkJfU0lNUExFYCwgYW5kIGBGUkFNRUJVRkZFUl9DT05TT0xFYC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYEZCX1ZJUlRVQUxgIGlzIHN1ZmZpY2llbnQgdG8gdHJpZ2dlciB0aGlzLiBDb25zaWRlcmluZyB0aGF0IGB2ZmJgIHVzZXMgYHN5c19maWxscmVjdGAsIGBzeXNfY29weWFyZWFgLCBhbmQgYHN5c19pbWFnZWJsaXRgLCBpdCBsb29rcyBsaWtlIGl0IGlzLiBJdCdzIHdvcnRoIGRvdWJsZS1jaGVja2luZyBgdmZiLmNgIGp1c3QgdG8gbWFrZSBzdXJlLiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzYuMjYzNDEyNTkxWiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQzNTY5ODAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5c19jb3B5YXJlYVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDozNi40MTc4MDQ1MDFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM5MzY2MjQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGNvZGU6XG5cbioqQ2hlY2tpbmcgdGhlIEZyYW1lYnVmZmVyIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgZnVuZGFtZW50YWwuIExldCdzIG5vdCBnZXQgYWhlYWQgb2Ygb3Vyc2VsdmVzLiBJIHNob3VsZCBwcm9iYWJseSByZS1leGFtaW5lIGB2ZmIuY2AgZmlyc3QuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgYGZiX29wc2AgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZHJpdmVyIGFuZCB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUuIEFyZSB3ZSB1c2luZyB0aGUgc3RhbmRhcmQgY2FsbHMsIG92ZXJyaWRpbmcgYW55LCBvciBkZWZpbmluZyBuZXcgb3BlcmF0aW9ucz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgY29uZmlndXJhdGlvbj8gSSBuZWVkIHRvIGJ1aWxkIGEgY2xlYXIgbWVudGFsIG1vZGVsIG9mIGhvdyB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGNvbnRleHQgYmVmb3JlIEkgbWFrZSBhbnkgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGJyb2FkZXIgc3lzdGVtIGludGVyYWN0aW9uLiBHb3R0YSBiZSByaWdvcm91cyBoZXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGZyYW1lYnVmZmVyIG9wZXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTMxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6MzkuODExNDcxNDI5WiIsIlNlcSI6NzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDE0MTA1MjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmJfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz03OD1zdGF0aWMgaW50IHZmYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy04MC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3ZmYi5jOjgxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmJfb3BzIHZmYl9vcHMgPSB7XFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy04Mi1cXHQub3duZXJcXHRcXHQ9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYz00MjY9c3RhdGljIGludCB2ZmJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDMtXFx0aW5mby1cXHUwMDNlc2NyZWVuX2J1ZmZlciA9IHZpZGVvbWVtb3J5O1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmM6NDQ0OlxcdGluZm8tXFx1MDAzZWZib3BzID0gXFx1MDAyNnZmYl9vcHM7XFxuZHJpdmVycy92aWRlby9mYmRldi92ZmIuYy00NDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjM5LjkxMjg4Nzg1M1oiLCJTZXEiOjcxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1NjAyMTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkncmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgYHZmYl9vcHNgIFN0cnVjdHVyZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gaXQuIFRoZSBpbW1lZGlhdGUgZ29hbCBpcyBjbGVhcjogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIGB2ZmJfb3BzYCBzdHJ1Y3R1cmUuIFRoaXMgbGlrZWx5IGNvbnRhaW5zIHRoZSBjb3JlIGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBkYXRhIG5lZWRlZCB0byBtYW5hZ2UgdGhlIHZpcnR1YWwgZnJhbWVidWZmZXIgZGV2aWNlLiBUaGUgbmFtZSBpdHNlbGYgaXMgcHJldHR5IHRlbGxpbmcuIFwiT3BlcmF0aW9uc1wiIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgd2UncmUgdGFsa2luZyBhYm91dCBhIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb24gcG9pbnRlcnMg4oCTIHRoZSBob29rcyB0aGF0IHRoZSB1cHBlciBsYXllcnMgd2lsbCB1c2UgdG8gaW50ZXJhY3Qgd2l0aCB0aGlzIHBhcnRpY3VsYXIgdmlydHVhbCBmcmFtZWJ1ZmZlci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBhbmQgaG93IHRoZXnigJlyZSBpbnRlbmRlZCB0byBiZSB1c2VkLiBJ4oCZbSB0aGlua2luZyBpbml0aWFsaXphdGlvbiwgZnJhbWVidWZmZXIgYWNjZXNzIChyZWFkaW5nIGFuZCB3cml0aW5nIHBpeGVscyksIHBvc3NpYmx5IHNvbWUgY29udHJvbCBmdW5jdGlvbnMgZm9yIG1hbmFnaW5nIHRoZSByZXNvbHV0aW9uLCB2aXJ0dWFsIHNjcmVlbiBzaXplcyBhbmQgcGVyaGFwcyBldmVuIGNvbG9yIGRlcHRocy4gSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSB0eXBlcyBwb2ludGVkIHRvIGJ5IHRoZSBzdHJ1Y3R1cmUgbWVtYmVycy4gSXQncyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhpcyB2aXJ0dWFsIGZyYW1lYnVmZmVyJ3Mgb3ZlcmFsbCBmdW5jdGlvbiBhbmQgaW50ZWdyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF04oCZcyBpbnNpZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDQuMDM4NDkzOTI1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0NzQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvdmZiLmNcIixcbiAgXCJGaXJzdExpbmVcIjogODEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODE6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgdmZiX29wcyA9IHtcXG4gIDgyOlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuICA4MzpcXHRcXHRfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19SRFdSLFxcbiAgODQ6XFx0XFx0LmZiX2NoZWNrX3ZhclxcdD0gdmZiX2NoZWNrX3ZhcixcXG4gIDg1OlxcdFxcdC5mYl9zZXRfcGFyXFx0PSB2ZmJfc2V0X3BhcixcXG4gIDg2OlxcdFxcdC5mYl9zZXRjb2xyZWdcXHQ9IHZmYl9zZXRjb2xyZWcsXFxuICA4NzpcXHRcXHQuZmJfcGFuX2Rpc3BsYXlcXHQ9IHZmYl9wYW5fZGlzcGxheSxcXG4gIDg4OlxcdFxcdF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcsXFxuICA4OTpcXHRcXHQuZmJfbW1hcFxcdD0gdmZiX21tYXAsXFxuICA5MDpcXHR9O1xcbiAgOTE6XFx0XFxuICA5MjpcXHQgICAgLypcXG4gIDkzOlxcdCAgICAgKiAgSW50ZXJuYWwgcm91dGluZXNcXG4gIDk0OlxcdCAgICAgKi9cXG4gIDk1OlxcdFxcbiAgOTY6XFx0c3RhdGljIHVfbG9uZyBnZXRfbGluZV9sZW5ndGgoaW50IHhyZXNfdmlydHVhbCwgaW50IGJwcClcXG4gIDk3OlxcdHtcXG4gIDk4OlxcdFxcdHVfbG9uZyBsZW5ndGg7XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdGxlbmd0aCA9IHhyZXNfdmlydHVhbCAqIGJwcDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDQuMDM4NTc5ODg1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzQwMjEwODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBHcmFwaGljcyBPcGVyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBgX19GQl9ERUZBVUxUX1NZU01FTV9PUFNfRFJBV2AgaW4gcGxheS4gVGhhdCdzIGEgZmFtaWxpYXIgcGF0dGVybiwgdXN1YWxseSBwb2ludGluZyB0b3dhcmRzIGEgZGVmYXVsdCBkcmF3aW5nIGltcGxlbWVudGF0aW9uIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIgc3lzdGVtLiBJdCdzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgYXMgdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3MgYXJjaGl0ZWN0dXJlIGxpa2VseSBoYXMgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGltbWVkaWF0ZWx5IGRyaWxsIGRvd24gb24gdGhhdCBtYWNyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IHRoYXQgZXhwYW5kcyB0by4gV2hhdCBhcmUgdGhlIHNwZWNpZmljIG1lbW9yeSBvcGVyYXRpb25zIGFuZCBhbGdvcml0aG1zIGludm9sdmVkPyBLbm93aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoaXMgbWFjcm8gd2lsbCBiZSBjcml0aWNhbCB0byBhc3Nlc3NpbmcgaG93IHRoaXMgc3lzdGVtIGFjdHVhbGx5IHJlbmRlcnMgZ3JhcGhpY3MgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGVyZSBwb3RlbnRpYWwgYm90dGxlbmVja3MgbWlnaHQgbGllLiBUaGlzIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQgdG8gb3B0aW1pemUgZm9yIGEgc3BlY2lmaWMgZ3JhcGhpY3Mgd29ya2xvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTUyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NDo0OC4yMTI2MDc1MjVaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzk0MTUwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX0ZCX0RFRkFVTFRfU1lTTUVNX09QU19EUkFXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvZmIuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ZiLmg9NTc3PWV4dGVybiBzc2l6ZV90IGZiX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmluY2x1ZGUvbGludXgvZmIuaC01ODMtXFxuaW5jbHVkZS9saW51eC9mYi5oOjU4NDojZGVmaW5lIF9fRkJfREVGQVVMVF9TWVNNRU1fT1BTX0RSQVcgXFxcXFxcbmluY2x1ZGUvbGludXgvZmIuaC01ODUtXFx0LmZiX2ZpbGxyZWN0XFx0PSBzeXNfZmlsbHJlY3QsIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NDguMzM2NTU0NzI3WiIsIlNlcSI6NzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2Mzc3OTM5MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHRoaW5rIGFib3V0IHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbjpcblxuKipUaGlua2luZyBUaHJvdWdoIHRoZSBGcmFtZWJ1ZmZlciBPcGVyYXRpb25zKipcblxuQWgsIHJpZ2h0LiBJIHNlZSBpdCBub3cuIFdoZW4gd2UncmUgY29uc2lkZXJpbmcgdGhlIGZyYW1lYnVmZmVyIGltcGxlbWVudGF0aW9ucywgdGhlIGV4cGFuc2lvbiB1bmZvbGRzIGNsZWFybHk6IHRoZSBhYnN0cmFjdCBmdW5jdGlvbiBjYWxscyByZXNvbHZlIHRvIGBzeXNfZmlsbHJlY3RgLCBgc3lzX2NvcHlhcmVhYCwgYW5kIGBzeXNfaW1hZ2VibGl0YC4gVGhpcyBjb25maXJtcyB0aGUgaW5pdGlhbCBodW5jaC4gYEZCX1ZJUlRVQUxgIGlzIHByZWNpc2VseSB3aGF0IHdlIHdhbnQgaW4gdGhpcyBzY2VuYXJpbyDigJMgaXQgaXMgcGVyZmVjdGx5IHN1aXRlZCBmb3IgdGhpcyBwdXJwb3NlIGFuZCBJIGNhbiBzZWUgaXRzIGFkdmFudGFnZXMuXG5cblRoZSBtb3JlIHByZXNzaW5nIHF1ZXN0aW9uIGlzOiBXaGF0IGFib3V0IGBGQl9TSU1QTEVgPyBXZSBoYXZlIHRvIGV2YWx1YXRlIGFsbCB0aGUgaW1wbGVtZW50YXRpb25zIGFuZCB0aGVpciByZXF1aXJlbWVudHMgYW5kIHdoZXRoZXIgd2UgbmVlZCB0aGUgbW9yZSBhZHZhbmNlZCBjYXBhYmlsaXRpZXMgb2YgYSB2aXJ0dWFsIGZyYW1lYnVmZmVyIG9yIGlmIGEgc2ltcGxlciBpbXBsZW1lbnRhdGlvbiBpcyBzdWZmaWNpZW50LiBUaGlzIGlzIHRoZSBtb3JlIGNydWNpYWwgcG9pbnQgb2YgZXZhbHVhdGlvbiwgYXMgdGhlIHVzZSBvZiBvbmUgdnMgdGhlIG90aGVyIGhhcyBzaWduaWZpY2FudCBjb25zZXF1ZW5jZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzE1LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTQ6NTYuOTc0MzUyMzg4WiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAxMjM3NTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fRkJfREVGQVVMVF9JT01FTV9PUFNfRFJBV1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU0OjU3LjIzNDQ4MjI1MVoiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkwNjc2NjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBpbnRvIGBmYl9vcHNgIGluIGBzaW1wbGVmYi5jYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgd2l0aCB0aGUgZnJhbWVidWZmZXIgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgc2ltcGxlZmIuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgb24gdGhlIGBmYl9vcHNgIHN0cnVjdHVyZS4gSSBrbm93IHRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnJhbWVidWZmZXIgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHNlZSB3aGljaCBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGhlcmUg4oCTIHRoaW5ncyBsaWtlIGBmYl9maWxscmVjdGAsIGBmYl9jb3B5YXJlYWAsIGBmYl9pbWFnZWJsaXRgIOKAkyB0aGUgc3RhbmRhcmQgZnJhbWVidWZmZXIgb3BlcmF0aW9uIGZ1bmN0aW9ucy4gV2hhdCBjdXN0b21pemF0aW9ucyBvciBzcGVjaWFsIGhhbmRsaW5nIGRvZXMgdGhpcyBwYXJ0aWN1bGFyIHNpbXBsZSBmcmFtZWJ1ZmZlciBkcml2ZXIgaW50cm9kdWNlPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgb3IgdmlydHVhbCBmcmFtZWJ1ZmZlciB0byBnZXQgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgdGhlcmUgYW55IHVudXN1YWwgb3Igbm90ZXdvcnRoeSBkZXRhaWxzIHRoYXQgZGV2aWF0ZSBmcm9tIHRoZSBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBvcGVyYXRpb25zPyBJJ2xsIGFsc28gY2hlY2sgZm9yIGFueSBjb21tZW50cyBleHBsYWluaW5nIHRoZSBkZXNpZ24gY2hvaWNlcyBoZXJlLiBUaGlzIGlzIG15IHN0YXJ0aW5nIHBvaW50IHRvIHNlZSB0aGUgZnVuY3Rpb25hbCBiYWNrYm9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY2MDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NTowMS40MjUxNjE0OVoiLCJTZXEiOjc4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyOTk5NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZiX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jPTk2PXN0YXRpYyB2b2lkIHNpbXBsZWZiX2RldGFjaF9nZW5wZHModm9pZCAqcmVzKTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy05OC0vKlxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzo5OTogKiBmYl9vcHMuZmJfZGVzdHJveSBpcyBjYWxsZWQgYnkgdGhlIGxhc3QgcHV0X2ZiX2luZm8oKSBjYWxsIGF0IHRoZSBlbmRcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTAwLSAqIG9mIHVucmVnaXN0ZXJfZnJhbWVidWZmZXIoKSBvciBmYl9yZWxlYXNlKCkuIERvIGFueSBjbGVhbnVwIGhlcmUuXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM9MTAyPXN0YXRpYyB2b2lkIHNpbXBsZWZiX2Rlc3Ryb3koc3RydWN0IGZiX2luZm8gKmluZm8pXFxuLS1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtMTE4LVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYzoxMTk6c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ltcGxlZmJfb3BzID0ge1xcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYy0xMjAtXFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4tLVxcbmRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuYz01MzI9c3RhdGljIGludCBzaW1wbGVmYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy92aWRlby9mYmRldi9zaW1wbGVmYi5jLTYwMC1cXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmM6NjAxOlxcdGluZm8tXFx1MDAzZWZib3BzID0gXFx1MDAyNnNpbXBsZWZiX29wcztcXG5kcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMtNjAyLVxcdGluZm8tXFx1MDAzZXNjcmVlbl9iYXNlID0gaW9yZW1hcF93YyhpbmZvLVxcdTAwM2VmaXguc21lbV9zdGFydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTU6MDEuNTM4MTY1NTUzWiIsIlNlcSI6NzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzk5MjQ5NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGBzaW1wbGVmYl9vcHNgKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgdG8gbWluZCBpcywgXCJMZXQncyBjcmFjayBvcGVuIGBzaW1wbGVmYl9vcHNgLlwiIE5vIGZsdWZmLCBqdXN0IGdldHRpbmcgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBtb2R1bGUsIGl0cyBwdXJwb3NlLCBhbmQgaXRzIGludGVybmFsIG1lY2hhbmlzbXMuIFRoZSBuYW1lIHN1Z2dlc3RzIHRoaXMgbWlnaHQgYmUgYSByZWxhdGl2ZWx5IGJhc2ljIG9yIGZvY3VzZWQgc2V0IG9mIG9wZXJhdGlvbnMgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZnJhbWVidWZmZXIsIHBlcmhhcHMgYSBzdHJpcHBlZC1kb3duIGltcGxlbWVudGF0aW9uIG9yIGEgdXRpbGl0eSBsYXllci4gSSdtIGFscmVhZHkgbWVudGFsbHkgcnVubmluZyB0aHJvdWdoIHBvdGVudGlhbCBhcmVhcyBvZiBpbnRlcmVzdDogY29sb3IgZGVwdGggaGFuZGxpbmcsIGFkZHJlc3NpbmcgbWVtb3J5IGRpcmVjdGx5LCBzY3JlZW4gYnVmZmVyIG1hbmlwdWxhdGlvbiwgYW55IGFzc29jaWF0ZWQgbG9ja2luZyBtZWNoYW5pc21zLi4uIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHMgd2hlbiB3b3JraW5nIGF0IHRoaXMgbGV2ZWwuIExldCdzIHNlZSBpZiB0aGUgaW1wbGVtZW50YXRpb24gcmVmbGVjdHMgbXkgaW5pdGlhbCBleHBlY3RhdGlvbnMuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MzcyMjUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMlQxNzo1NTowNS44MTgwOTQ2NzVaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmlkZW8vZmJkZXYvc2ltcGxlZmIuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTksXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTk6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmYl9vcHMgc2ltcGxlZmJfb3BzID0ge1xcbiAxMjA6XFx0XFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gMTIxOlxcdFxcdEZCX0RFRkFVTFRfSU9NRU1fT1BTLFxcbiAxMjI6XFx0XFx0LmZiX2Rlc3Ryb3lcXHQ9IHNpbXBsZWZiX2Rlc3Ryb3ksXFxuIDEyMzpcXHRcXHQuZmJfc2V0Y29scmVnXFx0PSBzaW1wbGVmYl9zZXRjb2xyZWcsXFxuIDEyNDpcXHR9O1xcbiAxMjU6XFx0XFxuIDEyNjpcXHRzdGF0aWMgc3RydWN0IHNpbXBsZWZiX2Zvcm1hdCBzaW1wbGVmYl9mb3JtYXRzW10gPSBTSU1QTEVGQl9GT1JNQVRTO1xcbiAxMjc6XFx0XFxuIDEyODpcXHRzdHJ1Y3Qgc2ltcGxlZmJfcGFyYW1zIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjJUMTc6NTU6MDUuODE4MjEyNjU1WiIsIlNlcSI6ODEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MjUzNDg4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgRnJhbWVidWZmZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIGZyYW1lYnVmZmVyLXJlbGF0ZWQgcGF0Y2ggaGVyZS4gIGBGQl9ERUZBVUxUX0lPTUVNX09QU2AgaXMga2V5LCBhbmQgaXQgZXhwYW5kcyB0byB0aGUgcmVhZC93cml0ZSBhbmQgZHJhdyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdXNpbmcgYGNmYl9maWxscmVjdGAsIGBjZmJfY29weWFyZWFgLCBhbmQgYGNmYl9pbWFnZWJsaXRgLiAgVGhhdCdzIGFsbCBzdGFuZGFyZCBmcmFtZWJ1ZmZlciBzdHVmZiwgYW5kLCBnaXZlbiB0aGF0LCBgRkJfU0lNUExFYCBzaG91bGQgYWJzb2x1dGVseSBiZSByZWxldmFudCwgdG9vLlxuXG5TbywgaGVyZSdzIG15IHN1bW1hcml6ZWQgYW5hbHlzaXMgZm9yIGZ1enppbmcgcHVycG9zZXM6XG5cbiogICAqKldvcnRoRnV6emluZzogVFJVRSoqLiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgY2xlYXIgY2FuZGlkYXRlLlxuKiAgICoqRW5hYmxlZCBDb25maWd1cmF0aW9uczoqKiBgRkJgLCBgRkJfVklSVFVBTGAsIGBGQl9TSU1QTEVgLCBhbmQgYEZSQU1FQlVGRkVSX0NPTlNPTEVgLiBUaGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb25zIHRoYXQgd291bGQgbGlrZWx5IGV4cG9zZSB0aGUgdnVsbmVyYWJsZSBjb2RlIHBhdGhzLlxuKiAgICoqRm9jdXNlZCBTeW1ib2xzOioqIGBjZmJfY29weWFyZWFgLCBgc3lzX2NvcHlhcmVhYCwgYGNmYl9maWxscmVjdGAsIGBzeXNfZmlsbHJlY3RgLCBgY2ZiX2ltYWdlYmxpdGAsIGFuZCBgc3lzX2ltYWdlYmxpdGAuIFRoZXNlIGFyZSB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgYXJlIGJlaW5nIHRhcmdldGVkIGJ5IHRoZSBwYXRjaCwgcHJlc3VtYWJseSB0aGUgb25lcyByZXNwb25zaWJsZSBmb3IgdGhlIGJvdW5kcyBjaGVja3MuXG5cblRoZSByZWFzb25pbmcgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBhYm91dCBib3VuZHMgY2hlY2tpbmcgaW4gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgaXQncyBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGdvIHBhc3QgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbiBsaW1pdHMuIFRob3NlIGBjZmJfKmAgYW5kIGBzeXNfKmAgZnVuY3Rpb25zIGFyZSwgY3JpdGljYWxseSwgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcy4gVGhleSdyZSB3aGF0IGdldCB1c2VkIHdoZW4gbW9yZSBvcHRpbWl6ZWQgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgcGF0aHMgYXJlbid0IGF2YWlsYWJsZSwgYW5kIHRoYXQgaW5jbHVkZXMgdGhvc2UgcmVhY2hhYmxlIHRocm91Z2ggY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXR5LiBJdCBpcyBjb3JyZWN0aW5nIGFuIG9idmlvdXMgc2VjdXJpdHkgcmlzay4gV2UgbmVlZCB0byBmdXp6IHRoZXNlIGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgdGhlIGZpeCBpcyBjb21wbGV0ZSBhbmQgcm9idXN0LiBUaGlzIHBhdGNoIHdhcnJhbnRzIHNlcmlvdXMgYXR0ZW50aW9uLiBJIHdpbGwgbm90ZSB0byBiZSBzdXJlIHRvIGZvY3VzIG9uIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIG9wZXJhdGlvbnMgYW5kIGlvY3RscyB3aGVuIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjE3LCJPdXRwdXRUb2tlbnMiOjE4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIyVDE3OjU1OjEyLjY0MzU2NDM0WiIsIlNlcSI6ODIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4NTc5MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGQlwiLFxuICAgIFwiRkJfVklSVFVBTFwiLFxuICAgIFwiRkJfU0lNUExFXCIsXG4gICAgXCJGUkFNRUJVRkZFUl9DT05TT0xFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2ZiX2NvcHlhcmVhXCIsXG4gICAgXCJzeXNfY29weWFyZWFcIixcbiAgICBcImNmYl9maWxscmVjdFwiLFxuICAgIFwic3lzX2ZpbGxyZWN0XCIsXG4gICAgXCJjZmJfaW1hZ2VibGl0XCIsXG4gICAgXCJzeXNfaW1hZ2VibGl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tpbmcgdG8gaW5saW5lIGZyYW1lYnVmZmVyIHJlbmRlcmluZyBmdW5jdGlvbnMgKGZiX2NvcHlhcmVhLCBmYl9maWxscmVjdCwgZmJfaW1hZ2VibGl0KSB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgbWVtb3J5IGFjY2Vzc2VzIHdoZW4gcmVuZGVyaW5nIGNvb3JkaW5hdGVzIGV4Y2VlZCB0aGUgdmlydHVhbCByZXNvbHV0aW9uLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgc29mdHdhcmUgcmVuZGVyaW5nIGZhbGxiYWNrcyAoY2ZiXyogYW5kIHN5c18qKSwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgZnJhbWVidWZmZXIgY29uc29sZSBvcGVyYXRpb25zIGFuZCBpb2N0bHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBmaXhpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gaXNzdWUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkJcIixcbiAgICBcIkZCX1ZJUlRVQUxcIixcbiAgICBcIkZCX1NJTVBMRVwiLFxuICAgIFwiRlJBTUVCVUZGRVJfQ09OU09MRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNmYl9jb3B5YXJlYVwiLFxuICAgIFwic3lzX2NvcHlhcmVhXCIsXG4gICAgXCJjZmJfZmlsbHJlY3RcIixcbiAgICBcInN5c19maWxscmVjdFwiLFxuICAgIFwiY2ZiX2ltYWdlYmxpdFwiLFxuICAgIFwic3lzX2ltYWdlYmxpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNraW5nIHRvIGlubGluZSBmcmFtZWJ1ZmZlciByZW5kZXJpbmcgZnVuY3Rpb25zIChmYl9jb3B5YXJlYSwgZmJfZmlsbHJlY3QsIGZiX2ltYWdlYmxpdCkgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIG1lbW9yeSBhY2Nlc3NlcyB3aGVuIHJlbmRlcmluZyBjb29yZGluYXRlcyBleGNlZWQgdGhlIHZpcnR1YWwgcmVzb2x1dGlvbi4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHNvZnR3YXJlIHJlbmRlcmluZyBmYWxsYmFja3MgKGNmYl8qIGFuZCBzeXNfKiksIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIGZyYW1lYnVmZmVyIGNvbnNvbGUgb3BlcmF0aW9ucyBhbmQgaW9jdGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZml4aW5nIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowtlm84[1] Phase: Succeeded StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 17:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 17:55:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2] Phase: Succeeded StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 22:19:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 22:19:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 17:55:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-22 17:55:25 +0000 UTC FinishedAt: 2026-07-22 17:55:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowtlm84/series-workflowtlm84-convert-artifact-1897135595/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-22 17:55:36 +0000 UTC FinishedAt: 2026-07-22 18:35:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-22 17:55:36 +0000 UTC FinishedAt: 2026-07-22 18:35:33 +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:*db941d32-42c9-48d7-8f3a-bff16e41776d,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-workflowtlm84/series-workflowtlm84-convert-artifact-1897135595/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": "2b7191a2-081a-46fa-a9db-ebfb3b9e2f85", "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-workflowtlm84/series-workflowtlm84-build-action-943092201/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-22 17:55:36 +0000 UTC FinishedAt: 2026-07-22 18:35:23 +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:*db941d32-42c9-48d7-8f3a-bff16e41776d,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-workflowtlm84/series-workflowtlm84-convert-artifact-1897135595/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": "2b7191a2-081a-46fa-a9db-ebfb3b9e2f85", "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-workflowtlm84/series-workflowtlm84-build-action-943092201/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-22 18:35:33 +0000 UTC FinishedAt: 2026-07-22 18:35:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-22 18:35:33 +0000 UTC FinishedAt: 2026-07-22 18:35:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-22 18:35:33 +0000 UTC FinishedAt: 2026-07-22 18:35:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-22 18:35:33 +0000 UTC FinishedAt: 2026-07-22 18:35:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowtlm84/series-workflowtlm84-convert-artifact-2318976194/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-22 18:35:43 +0000 UTC FinishedAt: 2026-07-22 18:37:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-22 18:35:43 +0000 UTC FinishedAt: 2026-07-22 18:37:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b7191a2-081a-46fa-a9db-ebfb3b9e2f85,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-workflowtlm84/series-workflowtlm84-build-action-943092201/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-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-22 18:37:47 +0000 UTC FinishedAt: 2026-07-22 18:37:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-22 18:37:47 +0000 UTC FinishedAt: 2026-07-22 18:37:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-22 18:37:47 +0000 UTC FinishedAt: 2026-07-22 19:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-22 18:37:47 +0000 UTC FinishedAt: 2026-07-22 19:08:23 +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:*db941d32-42c9-48d7-8f3a-bff16e41776d,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-workflowtlm84/series-workflowtlm84-convert-artifact-2318976194/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": "696ad3fc-323e-4e94-b825-6ceed11c5245", "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-workflowtlm84/series-workflowtlm84-build-action-3174528790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-22 18:37:47 +0000 UTC FinishedAt: 2026-07-22 19:08:13 +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:*db941d32-42c9-48d7-8f3a-bff16e41776d,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-workflowtlm84/series-workflowtlm84-convert-artifact-2318976194/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": "696ad3fc-323e-4e94-b825-6ceed11c5245", "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-workflowtlm84/series-workflowtlm84-build-action-3174528790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-22 19:08:23 +0000 UTC FinishedAt: 2026-07-22 19:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-22 19:08:23 +0000 UTC FinishedAt: 2026-07-22 19:08:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-22 19:08:23 +0000 UTC FinishedAt: 2026-07-22 19:10:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-22 19:08:23 +0000 UTC FinishedAt: 2026-07-22 19:10:14 +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:*696ad3fc-323e-4e94-b825-6ceed11c5245,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-workflowtlm84/series-workflowtlm84-build-action-3174528790/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-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 22:19:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 22:19: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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"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:*2b7191a2-081a-46fa-a9db-ebfb3b9e2f85,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*696ad3fc-323e-4e94-b825-6ceed11c5245,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-workflowtlm84/series-workflowtlm84-build-action-943092201/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-workflowtlm84/series-workflowtlm84-build-action-3174528790/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 19:10:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 19:10:31 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"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-workflowtlm84/series-workflowtlm84-convert-artifact-810304503/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 19:10:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-22 19:10:24 +0000 UTC FinishedAt: 2026-07-22 19:10:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-22 19:10:25 +0000 UTC FinishedAt: 2026-07-22 19:10:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-22 19:10:48 +0000 UTC FinishedAt: 2026-07-22 22:19:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtlm84[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cfb_copyarea","sys_copyarea","cfb_fillrect","sys_fillrect","cfb_imageblit","sys_imageblit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1590cf0329716306e948a8fc29f1d3ee87d3989f","config_name":"upstream-apparmor-kasan.config","enable_configs":["FB","FB_VIRTUAL","FB_SIMPLE","FRAMEBUFFER_CONSOLE"],"series_id":"21e89343-2393-43e2-b99e-d8ce5ff32663","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-22 19:10:48 +0000 UTC FinishedAt: 2026-07-22 22:19:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2b7191a2-081a-46fa-a9db-ebfb3b9e2f85,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*696ad3fc-323e-4e94-b825-6ceed11c5245,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-workflowtlm84/series-workflowtlm84-build-action-943092201/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-workflowtlm84/series-workflowtlm84-build-action-3174528790/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-workflowtlm84/series-workflowtlm84-convert-artifact-810304503/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,}