Name: series-workflowbp7s5 Phase: Succeeded StartedAt: 2026-07-11 23:40:12 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[0] Phase: Succeeded StartedAt: 2026-07-11 23:40:12 +0000 UTC FinishedAt: 2026-07-12 00:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 23:40:12 +0000 UTC FinishedAt: 2026-07-12 00:34:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_ST21NFCA_I2C" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_ST21NFCA_I2C" ], "series_id": "b463cb9f-2927-4e96-8dea-3f52ed158703" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "st21nfca_tm_recv_atr_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2NiZDhkZDQ5N2VhZmQyYTI3OGRmYmJjMmVkOWUzYTVmODJjODJhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjMzOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcbmluZGV4IDM0MjViNjhmMGRkY2ZlLi5hNWZhYjRmZDUxMjlkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xuQEAgLTIwNSw2ICYjNDM7MjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuIFx0aWYgKGF0cl9yZXEtXHUwMDNlbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKVxuIFx0XHRyZXR1cm4gLUVQUk9UTztcbiBcbiYjNDM7XHRpZiAoYXRyX3JlcS1cdTAwM2VsZW5ndGggXHUwMDNlIHNrYi1cdTAwM2VsZW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVQUk9UTztcbiYjNDM7XG4gXHRyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpO1xuIFx0aWYgKHIpXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MzM6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYyBiL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jCmluZGV4IDM0MjViNjhmMGRkY2ZlLi5hNWZhYjRmZDUxMjlkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMKQEAgLTIwNSw2ICYjNDM7MjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LAogCWlmIChhdHJfcmVxLSZndDtsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKQogCQlyZXR1cm4gLUVQUk9UTzsKIAomIzQzOwlpZiAoYXRyX3JlcS0mZ3Q7bGVuZ3RoICZndDsgc2tiLSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gLUVQUk9UTzsKJiM0MzsKIAlyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpOwogCWlmIChyKQogCQlyZXR1cm4gcjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoYXQgdGhlIGxlbmd0aCBwcm92aWRlZCBpbiB0aGUgYGF0cl9yZXFgIHN0cnVjdHVyZSBpcyAqbm90KiBncmVhdGVyIHRoYW4gdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIHJlY2VpdmVkIGJ1ZmZlciwgd2hpY2ggaXMgaW4gYHNrYi0mZ3Q7bGVuYC4gTWFrZXMgc2Vuc2UsIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIGtpbmQgb2YgZGF0YSBjb3JydXB0aW9uLiBUaGUgY29kZSBhbHJlYWR5IGRvZXMgYSBtaW5pbXVtIGxlbmd0aCBjaGVjaywgbWFraW5nIHN1cmUgdGhlIHJlcXVlc3QgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgYHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxYCwgYnV0IHRoaXMgaXMgYSAqbWF4aW11bSogY2hlY2suCgpOb3csIG15IGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgYWRkZWQuIFdhcyB0aGVyZSBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgaWRlbnRpZmllZD8gSXMgdGhpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlIHRyaWdnZXJlZCBieSBhIHNwZWNpZmljIGZ1enppbmcgcmVzdWx0PyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBTbywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgcHJvY2Vzc2VzIHRoZSBkYXRhLCB3aGF0IG90aGVyIGNoZWNrcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhlIGxlbmd0aCB2YWx1ZSBpcyBhY3R1YWxseSB1c2VkIGRvd25zdHJlYW0uIEFuZCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLCBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcmlzayBwcm9maWxlIGhlcmUuIEnigJlsbCBjaGVjayB0aGUgdXBzdHJlYW0gY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIGRpc2N1c3Npb25zLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gbG9vayBhdCBwcmV2aW91cyBjb21taXRzIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYW55IHByaW9yIHNlY3VyaXR5IGZpeGVzIG9yIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTEzOD1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg3LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MTg4OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTE4OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0OT1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYwLVx0XHRjYXNlIFNUMjFORkNBX05GQ0lQMV9BVFJfUkVROlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzYxOlx0XHRcdHIgPSBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoaGRldiwgc2tiKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2Mi1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzMzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgRGF0YSBGbG93IGluIHRoZSBTVDIxTkZDQSBNb2R1bGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBjdXJyZW50bHkgZGlnZ2luZyBpbnRvIHRoZSBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGxpbmcgY29udGV4dC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhaW4gb2YgZXZlbnRzIHJlbGF0ZWQgdG8gZGF0YSB0cmFuc21pc3Npb24sIG1vc3QgbGlrZWx5IGludm9sdmluZyBBVFIgKEFuc3dlciB0byBSZXNldCkgcmVxdWVzdHMgd2l0aGluIGFuIE5GQyBjb250ZXh0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAuIE15IGZvY3VzIHNoaWZ0cyB0byBwaW5wb2ludGluZyAqaXRzKiBjYWxsIHNpdGVzIHRvIHNlZSB3aGF0IHRoZSBwcmVjZWRpbmcgY29uZGl0aW9ucyBhcmUgdGhhdCB1bHRpbWF0ZWx5IGxlYWQgdG8gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgYmVpbmcgZXhlY3V0ZWQuIFRoaXMgd2lsbCByZXZlYWwgdGhlIGNvbXBsZXRlIHByb2Nlc3NpbmcgZmxvdyBhbmQgYW55IHBvdGVudGlhbCB0aW1pbmcgZGVwZW5kZW5jaWVzIG9yIGludGVycnVwdCBzY2VuYXJpb3Mgd2hpY2ggY29udHJpYnV0ZSB0byB0aGUgdHJpZ2dlcmluZyBvZiBBVFIgcmVxdWVzdHMuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgTkZDIGNvbW11bmljYXRpb24gc3RhY2sgYXQgdGhpcyBsYXllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzA3PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDgtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzozNDk6c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzUwLVx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zODQ9aW50IHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDAyLVx0Y2FzZSBTVDIxTkZDQV9FVlRfU0VORF9EQVRBOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDAzOlx0XHRyID0gc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKGhkZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MDQtXHRcdGlmIChyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uIGNhbGw6CgoqKlVuZGVyc3RhbmRpbmcgdGhlIE9yaWdpbnMgb2YgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIG9yaWdpbiBvZiB0aGUgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCAtIHdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBnZXQgaW52b2tlZCBmcm9tPyBJcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIE5GQyBzdGFjaywgYSBzcGVjaWZpYyBkcml2ZXIsIG9yIHNvbWUgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzcG9uc2liaWxpdHkgYW5kIGl0cyBwb3NpdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZSB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBhbSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbnMuIEl0JiMzOTtzIHJlYWxseSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBzZXJpb3VzIGludmVzdGlnYXRpb24sIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9ODg5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAwLVx0Y2FzZSBTVDIxTkZDQV9SRl9DQVJEX0ZfR0FURTpcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDE6XHRcdHJldHVybiBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoaGRldiwgZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAyLVx0Y2FzZSBTVDIxTkZDQV9DT05ORUNUSVZJVFlfR0FURTpcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4My0gKi9cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM4NDppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4NS1cdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQxMy19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzo0MTQ6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDE1LVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTcxPXZvaWQgc3QyMW5mY2FfaGNpX3JlbW92ZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNzItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTc0LVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIGBuZmNfaGNpX29wc2AgQ2FsbGJhY2sqKgoKUmlnaHQsIGBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRgLiBMZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhhdCYjMzk7cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG5mY19oY2lfb3BzYCBzdHJ1Y3R1cmUuJiMzNDsgVGhpcyB0ZWxscyBtZSBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBsb3ctbGV2ZWwgaW50ZXJmYWNlIGZvciB0aGlzIHNwZWNpZmljIE5GQyBjb250cm9sbGVyLCBwcmVzdW1hYmx5IGEgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgaW52b2tlZCB3aGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkIGZyb20gdGhlIEhDSSAoSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSkgbGF5ZXIuIFRoZSBuYW1pbmcgaGludHMgaXQmIzM5O3MgcGFydCBvZiBhbiBvcGVyYXRpb24gc3RydWN0LCBsaWtlbHkgdXNlZCB0byBpbXBsZW1lbnQgYSBnZW5lcmljIGxheWVyIG9mIGFic3RyYWN0aW9uIGZvciBpbnRlcmFjdGluZyB3aXRoIGRpZmZlcmVudCBORkMgaGFyZHdhcmUuCgpUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gZGVkdWNlIHRoYXQgdGhlIGBuZmNfaGNpX29wc2Agc3RydWN0dXJlIGxpa2VseSBjb250YWlucyBmdW5jdGlvbiBwb2ludGVycyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5GQyBjb250cm9sbGVyLiBUaGUgYHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhhbmRsZSBhbmQgcHJvY2VzcyBpbmJvdW5kIGV2ZW50cyBmcm9tIHRoZSBIQ0kgbGF5ZXIgb2YgdGhlIFNUMjFORkNBIGNoaXAuIFRoaXMgY2FsbGJhY2sgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG1hbmFnZSBpbmNvbWluZyBldmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9ODU2PXN0YXRpYyBpbnQgc3QyMW5mY2FfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODg4LSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg4OTpzdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVx0XHRcdFx0ICAgICAgIHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTI5Olx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cdC5jbWRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfY21kX3JlY2VpdmVkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODAxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBORkMgZHJpdmVyLCBhbmQgdGhlIGBldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBoYXJkd2FyZSwgc28gaXTigJlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogaXQgZWZmZWN0aXZlbHk/CgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgTkZDIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IHdpdGggaXRzIHZpcnR1YWwgZGV2aWNlIHN1cHBvcnQsIGxldmVyYWdpbmcgTkNJL0hDSS4gV2FpdCwgaXMgdGhpcyBhbiBOQ0kgb3IgYW4gSENJIGltcGxlbWVudGF0aW9uPyBJdCBsb29rcyBsaWtlIGl04oCZcyB1c2luZyBgbmZjX2hjaV9vcHNgLCBzbyBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC4KCkFscmlnaHQsIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHN0MjFuZmNhYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBpcyBpdCBhIHZpcnR1YWwgZHJpdmVyLCBvciBhbiBhY3R1YWwgaGFyZHdhcmUgZHJpdmVyPyBGcm9tIHRoZSBuYW1lLCBpdCBsb29rcyBsaWtlIGl04oCZcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBjaGlwLiBJZiBpdCYjMzk7cyByZWFsIGhhcmR3YXJlLCB0aGluZ3MgYXJlIHVzdWFsbHkgdHJpY2tpZXIuIFN5emthbGxlciBnZW5lcmFsbHkgc3RydWdnbGVzIHRvIGZ1enogaGFyZHdhcmUgZHJpdmVycyBkaXJlY3RseSB1bmxlc3MgdGhlcmUmIzM5O3MgYSB2aXJ0dWFsIGludGVyZmFjZSBvciBpdCYjMzk7cyBhdHRhY2hlZCB2aWEgYSBmdXp6ZWQgYnVzIGxpa2UgVVNCIG9yIEkyQy4KClNvLCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGtpbmQgb2YgY29ubmVjdGlvbiBpcyB1c2VkIGJ5IHRoZSBgc3QyMW5mY2FgIGRyaXZlci4gVGhhdCB3aWxsIGJlIHRoZSBkZXRlcm1pbmluZyBmYWN0b3IgaW4gd2hldGhlciBvciBub3QgdGhpcyBpcyBhIGZydWl0ZnVsIGZ1enppbmcgdGFyZ2V0LCBvciBpZiB3ZSBuZWVkIHRvIGRvIHNvbWUgbW9yZSB3b3JrIHRvIG1ha2UgaXQgcmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdDIxbmZjYV9oY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19oY2lfb3BzIHN0MjFuZmNhX2hjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzNi1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5Mzc6aW50IHN0MjFuZmNhX2hjaV9wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MzgtXHRcdCAgICAgICBjaGFyICpsbGNfbmFtZSwgaW50IHBoeV9oZWFkcm9vbSwgaW50IHBoeV90YWlscm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMS19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6MTAyMjpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2hjaV9wcm9iZSk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMy1cbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYz00ODk9c3RhdGljIGludCBzdDIxbmZjYV9oY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTQ2LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM6NTQ3Olx0ciA9IHN0MjFuZmNhX2hjaV9wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBMTENfU0hETENfTkFNRSxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTU0OC1cdFx0XHQgICAgICAgU1QyMU5GQ0FfRlJBTUVfSEVBRFJPT00sXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaD0xNDc9c3RydWN0IHN0MjFuZmNhX2hjaV9pbmZvIHtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE2Ni1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTY3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE2OC1cdFx0ICAgICAgIGNoYXIgKmxsY19uYW1lLCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTI5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUMjFORkNBIEkyQyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHN0MjFuZmNhX2hjaV9pMmNfcHJvYmVgIGZ1bmN0aW9uLiBJdCYjMzk7cyBhbiBJMkMgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBmdXp6aW5nIGl0IHdpdGggU3l6a2FsbGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHRocm91Z2ggYC9kZXYvaTJjLSpgLCBob3BpbmcgdG8gc2ltcGx5IHRhcmdldCB0aGUgaW5zdGFudGlhdGVkIGRldmljZS4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IEkyQyBkcml2ZXJzIGFyZW4mIzM5O3QgKmFsd2F5cyogdHJpdmlhbCB0byBoaXQgd2l0aCBTeXprYWxsZXIsIHdoaWNoIGRlcGVuZHMgb24gaW5zdGFudGlhdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBTeXprYWxsZXIgKm1pZ2h0KiBoYXZlIHNvbWUgYHN5el9pMmNfc2V0dXBgIG9yIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwgb3IgcmVseSBvbiB2aXJ0dWFsIEkyQyBhZGFwdGVycywgb3Igc29tZXRoaW5nIHRocm91Z2ggYGkyYy1kZXZgLCB3aGljaCBJIHNob3VsZCBsb29rIGludG8uIE5vLCB0aGF0IGRvZXMgbm90IHNlZW0gdG8gYmUgdGhlIGNhc2UuIEkgbmVlZCB0byBnZXQgdGhpcyBkZXZpY2UgaW5zdGFudGlhdGVkLgoKVGhlbiwgSSYjMzk7bSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmLiBEb2VzIFN5emthbGxlciB1c2UgYHZoY2lgIGZvciBJMkM/IE5vLCB0aGF0JiMzOTtzIEJsdWV0b290aCwgYWN0dWFsbHkuIFRoaXMgaXMgTkZDIEhDSSBzcGVjaWZpY2FsbHkuIEFoLCB3YWl0IGEgbWludXRlLCBORkMgaGFzIGBuZmNzaW1gIGZvciB2aXJ0dWFsIGRldmljZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCBgc3QyMW5mY2FgLgoKU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggYHN0MjFuZmNhYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiBpdCYjMzk7cyBhbiBJMkMgZHJpdmVyLCB0aGVuIGl0ICpzaG91bGQqIGJlIHByb2JlLWFibGUsIHJpZ2h0PyBMZXQmIzM5O3MgYXNzdW1lIHRoYXQgSSBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGNoZWNrIGlmIEkgY2FuIGluc3RhbnRpYXRlIGBzdDIxbmZjYWAgdXNpbmcgdGhhdCBtZXRob2QuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBnZXR0aW5nIHRoaXMgZHJpdmVyIHVuZGVyIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2hjaV9pMmNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jPTU5MT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdDIxbmZjYV9pMmNfbWF0Y2gpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTkyLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM6NTkzOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdDIxbmZjYV9oY2lfaTJjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTU5NC1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNjAyLX07XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYzo2MDM6bW9kdWxlX2kyY19kcml2ZXIoc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNjA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSTJDIERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIEZpbmRpbmdzKioKCk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGRlZmluZXMgYW4gSTJDIGRyaXZlciwgYHN0MjFuZmNhX2hjaV9pMmNfZHJpdmVyYCwgd2hpY2ggaXMgZ29vZC4gSSBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBuYW1lLCBPRi9BQ1BJIG1hdGNoaW5nIHRhYmxlcywgcHJvYmUsIHJlbW92ZSwgYW5kIGFuIElEIHRhYmxlLiBTdGFuZGFyZCBzdHVmZi4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGFzIGFuIEkyQyBkcml2ZXIgaXMgaW1wb3J0YW50LiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoZXNlIEkyQyBkZXZpY2VzLCB3cml0aW5nIHRvIHRoZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgcGF0aC4KCkhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2ggaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gQmluZ28hIFRoaXMgY29uZmlybXMgdGhhdCBTeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyLiBJZiBTeXprYWxsZXIgZm91bmQgaXQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiBpdHMgdGVzdCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyBrZXkuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEFoLCBoZXJlJiMzOTtzIHRoZSBmaXg6IHRoZXkmIzM5O3JlIGFkZGluZyBhIGxlbmd0aCBjaGVjay4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBub3cgY2hlY2tpbmcgaWYgYGF0cl9yZXEtJmd0O2xlbmd0aGAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpYCBhbmQgdGhlbiBjaGVja2luZyBpZiBgYXRyX3JlcS0mZ3Q7bGVuZ3RoYCBpcyBncmVhdGVyIHRoYW4gYHNrYi0mZ3Q7bGVuYC4gVGhpcyBpcyBhIGNsYXNzaWMgcHJvdGVjdGlvbiBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24uCgpHaXZlbiB0aGF0IFN5emthbGxlciBmb3VuZCBpdCwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlcmUmIzM5O3MgYSBjbGVhciBmaXggZm9yIGFuIGlzc3VlIChsaWtlbHkgYW4gT09CIHJlYWQpLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBmbGFnIGFzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0Oy4gSXQmIzM5O3MgYSBidWcgdGhhdCBTeXprYWxsZXIgY291bGQgdHJpZ2dlciBhbmQgaXQmIzM5O3MgYmVlbiBhZGRyZXNzZWQsIGluZGljYXRpbmcgaXQgaXMgZnVuY3Rpb25hbCBhbmQgZXhwbG9pdGFibGUuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGRyaXZlciBhbmQgbWFrZSBzdXJlIHRoZSBidWcgaXMgcmVwcm9kdWNpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX1NUMjFORkNBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6Mjpjb25maWcgTkZDX1NUMjFORkNBXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdgIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVDIxTkZDQSBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBjb250cm9sbGVyIGRyaXZlci4gVGhlIHN0cnVjdHVyZSBsb29rcyBwcmV0dHkgc3RhbmRhcmQsIHNvIEkgZXhwZWN0IGEgd2VsbC1kZWZpbmVkIGhpZXJhcmNoeSBvZiBvcHRpb25zIHJlbGF0ZWQgdG8gZW5hYmxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJJiMzOTttIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYGNvbmZpZ2Agc3RhdGVtZW50cyDigJMgdGhvc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIFNUMjFORkNBIGRyaXZlciBnZXRzIGNvbXBpbGVkIGluIGF0IGFsbC4gSXQgd2lsbCBsaWtlbHkgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgYW5kIGRlcGVuZCBvbiBvdGhlciBzZXR0aW5ncywgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBORkMgc3Vic3lzdGVtIG9yIGV2ZW4gc3BlY2lmaWMgcGxhdGZvcm0gc3VwcG9ydC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGBkZXBlbmRzIG9uYCBjbGF1c2VzLiBUaGVzZSB3aWxsIHRlbGwgbWUgdGhlIHByZS1yZXF1aXNpdGVzIOKAkyB3aGljaCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGJlZm9yZSB0aGlzIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkLiBUaGlzIHdpbGwgaW5mb3JtIG1lIGFib3V0IGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgZWNvc3lzdGVtLgoKSSBhbHNvIGV4cGVjdCB0byBzZWUgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgcGVyaGFwcyBldmVuIGBpbnRgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3VyLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgY2hvaWNlcyBmb3IgZGlmZmVyZW50IG1vZGVzIG9mIG9wZXJhdGlvbiwgc3VjaCBhcyB2YXJpb3VzIHBvd2VyLXNhdmluZyBzY2hlbWVzLCBvciBkZWJ1ZyBmZWF0dXJlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMg4oCTIGhvcGVmdWxseSwgdGhleSYjMzk7cmUgaW5mb3JtYXRpdmUgYW5kIGNsZWFybHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiBlYWNoIG9wdGlvbi4gR29vZCBkb2N1bWVudGF0aW9uIGlzIGNydWNpYWwsIGVzcGVjaWFsbHkgaW4gYSBkcml2ZXIuCgpGdXJ0aGVybW9yZSwgSSBhbSBsb29raW5nIGZvciBhbnkgZGVmYXVsdCB2YWx1ZXMgdGhlIGNvbmZpZyBvcHRpb25zIG1pZ2h0IGhhdmUsIHRoZXNlIHZhbHVlcyBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIHNldHVwLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25mbGljdHMgd2l0aCBvdGhlciBzeXN0ZW0gY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEkgd2lsbCBiZSBleHBlY3RpbmcgdG8gc2VlIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZSBhcyBhIHdob2xlLCB3aGF0IHRoaXMgbW9kdWxlIGlzIGZvciwgYW5kIHdoZW4gaXQgaXMgbmVlZGVkLgoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyBvdmVyIHRoaXMgc3BlY2lmaWMgTkZDIGNvbnRyb2xsZXIsIGFuZCBob3cgZWFzaWx5IGFuZCBzYWZlbHkgaXQgY2FuIGJlIGludGVncmF0ZWQgaW50byBhIHN5c3RlbS4gSSBhbSBob3BpbmcgdGhlIGZpbGUgaXMgd3JpdHRlbiBjbGVhcmx5IGFuZCBsb2dpY2FsbHk7IGEgd2VsbC1zdHJ1Y3R1cmVkIGBLY29uZmlnYCBmaWxlIGlzIGEgcGxlYXN1cmUgdG8gcmVhZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5GQ19TVDIxTkZDQVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XG4gICA3Olx0XHQgIEhDSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxuICAgODpcdFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBORkNfSENJIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IE5GQ19TSERMQ1xuICAxMzpcdFx0c2VsZWN0IE5GQ19TVDIxTkZDQVxuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3Mgc3QyMW5mY2EgaTJjIGludGVyZmFjZS5cbiAgMTY6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdDIxbmZjYV9pMmMuXG4gIDE5Olx0XHQgIFNheSBOIGlmIHVuc3VyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgTkZDIGRyaXZlciBzZXR1cC4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoaW5ncy4gSW1wbGljaXRseSwgdGhhdCBhbHNvIG1lYW5zIEkmIzM5O20gYWN0aXZhdGluZyBgTkZDX1NUMjFORkNBYCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBJIHNlZSB0aGF0IGBORkNfSENJYCBhbmQgYE5GQ19TSERMQ2AgYXJlIGFsc28gZGVwZW5kZW5jaWVzIOKAkyBtYWtlcyBzZW5zZTsgdGhvc2UgYXJlIHByZXR0eSBzdGFuZGFyZCBORkMgcHJvdG9jb2wgbGF5ZXJzLgoKSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5IG9yIGludGVyYWN0IHdpdGggdGhlc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCkFoLCB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgbW9kaWZpZXMgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jYC4gSW50ZXJlc3RpbmcuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBjb21waWxhdGlvbiBvZiB0aGF0IGBkZXAuY2AgZmlsZSBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBhbnkgb3RoZXIgY29uZmlnIHNldHRpbmdzLiBUaGF0IHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgdGllcyB0b2dldGhlciBhbmQgd2hldGhlciB0aGUgZGVwZW5kZW5jeSBpbXBsaWNhdGlvbnMgZXh0ZW5kIHRvIHRoZSBjb21waWxlZCBtb2R1bGVzIGFuZCBub3QganVzdCB0aGUgZGVmaW5pdGlvbnMuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciBTVDIxTkZDQSBIQ0kgYmFzZWQgTkZDIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzdDIxbmZjYV9oY2ktb2JqcyA9IGNvcmUubyBkZXAubyBzZS5vIHZlbmRvcl9jbWRzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgICAgJiM0Mzs9IHN0MjFuZmNhX2hjaS5vXG4gICA4Olx0XG4gICA5Olx0c3QyMW5mY2FfaTJjLW9ianMgID0gaTJjLm9cbiAgMTA6XHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBX0kyQykgJiM0Mzs9IHN0MjFuZmNhX2kyYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKgoKT2theSwgc28gYGRlcC5vYCBpcyBjbGVhcmx5IHBhcnQgb2YgdGhlIGBzdDIxbmZjYV9oY2kub2AgbW9kdWxlLiBJIHJlbWVtYmVyLCBpZiBgQ09ORklHX05GQ19TVDIxTkZDQWAgaXMgZW5hYmxlZCwgdGhlbiB0aGlzIG1vZHVsZSBnZXRzIGJ1aWx0LiBSaWdodCwgYW5kIGBDT05GSUdfTkZDX1NUMjFORkNBYCBpcyBzZWxlY3RlZCBieSBgQ09ORklHX05GQ19TVDIxTkZDQV9JMkNgLiBUaGVyZWZvcmUsIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgZW5hYmxpbmcgdGhpcyB3aG9sZSB0aGluZy4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgaXQgY2xlYW4gYW5kIHRhcmdldGVkLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGFjdHVhbCBjb2RlIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIEhtbSwgdHJhY2luZyBiYWNrd2FyZHMsIHRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbGVkIGJ5IGBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGFgLCBhbmQgKnRoYXQqIG9uZSBpcyBjYWxsZWQgYnkgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAuIEV4Y2VsbGVudC4gU28gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgYSB2ZXJ5IGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24sIGFzIGl0JiMzOTtzIGRpcmVjdGx5IGltcGFjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAgYW5kIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIHRvbyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZ1bGx5LiBJIHRoaW5rIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFRoYXQmIzM5O3MgdGhlIGJlc3QgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0xMzg9c3RhdGljIGludCBzdDIxbmZjYV90bV9zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTE4Ny1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjE4ODpzdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2MC1cdFx0Y2FzZSBTVDIxTkZDQV9ORkNJUDFfQVRSX1JFUTpcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM2MTpcdFx0XHRyID0gc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKGhkZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNjItXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjc2CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1QyMU5GQ0EgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbi4gQW5kIHRoZSBvdGhlciBmdW5jdGlvbiBpbiBwbGF5LCBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgaXMgYWxzbyBzdGF0aWMuIEhvd2V2ZXIsIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzIGFub3RoZXIgcG9pbnQgb2YgaW50ZXJlc3QsIGJ1dCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZmlyc3QgZnVuY3Rpb24uIEkgY2FuIGFkZCBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCB0byBGb2N1c1N5bWJvbHMgdG8gaGlnaGxpZ2h0IGl0IGZvciBmdXp6aW5nLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gSSBzZWUgYE5GQ19TVDIxTkZDQV9JMkNgIGFuZCBgTkZDX1NUMjFORkNBYC4gVGhlIGxhdHRlciBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LCBidXQgaXQgZG9lc24mIzM5O3QgaHVydCB0byBiZSBleHBsaWNpdCBhbmQgaW5jbHVkZSBpdC4KCldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdgIGZpbGUgYWdhaW4uLi4gWWVzLCBoZXJlIGl0IGlzLCBgTkZDX1NUMjFORkNBX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX0hDSSAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IE5GQ19TSERMQ2AuIEdpdmVuIHRoYXQgdGhpcyBpcyBhbiBJMkMgaW1wbGVtZW50YXRpb24gYW5kIGludm9sdmVzIEhDSSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBgTkZDX1NUMjFORkNBX0kyQ2AuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgY292ZXJzIHRoZSBhcHByb3ByaWF0ZSBpbnN0YW50aWF0aW9uIG1ldGhvZC4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIG15IHJlc3BvbnNlLiBJdCYjMzk7cyBsb29raW5nIGxpa2UgYSBzb2xpZCBmdXp6aW5nIHRhcmdldCwgc28gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBjbGVhcmx5IGluY2x1ZGUgYCYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDtgIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9uLiBBbmQsIHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBJMkMgY29uZmlndXJhdGlvbiBhbmQgSENJIHRvIGJlIHNldHVwLCB0aGUgcGF0Y2ggd2lsbCByZXF1aXJlIG1lIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYFsmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0O11gLiBUaGUga2V5IHJlYXNvbmluZywgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIEFUUiByZXF1ZXN0IGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB1c2VkIHZpYSBJMkMsIGFuZCBpdHMgSENJIGV2ZW50cyBhcmUgYSBjbGVhciBhdmVudWUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkNfU1QyMU5GQ0FfSTJDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gZml4IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgU1QyMU5GQ0EgTkZDIGRyaXZlciYjMzk7cyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjE1LjM0ODU5NzIzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzM4ODM0ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ19TVDIxTkZDQV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGZpeCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIncyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MTUuMzQ4NjAyOTA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI3MDg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjMzOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcXG5pbmRleCAzNDI1YjY4ZjBkZGNmZS4uYTVmYWI0ZmQ1MTI5ZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xcbkBAIC0yMDUsNiArMjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbiBcXHRpZiAoYXRyX3JlcS1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxKSlcXG4gXFx0XFx0cmV0dXJuIC1FUFJPVE87XFxuIFxcbitcXHRpZiAoYXRyX3JlcS1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pXFxuK1xcdFxcdHJldHVybiAtRVBST1RPO1xcbitcXG4gXFx0ciA9IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhoZGV2LCBhdHJfcmVxKTtcXG4gXFx0aWYgKHIpXFxuIFxcdFxcdHJldHVybiByO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoxNS44MTIwNzQwNjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODc1MzQ3OTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ19TVDIxTkZDQV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGZpeCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIncyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDA6MzM6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYyBiL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jXG5pbmRleCAzNDI1YjY4ZjBkZGNmZS4uYTVmYWI0ZmQ1MTI5ZGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcbkBAIC0yMDUsNiArMjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuIFx0aWYgKGF0cl9yZXEtXHUwMDNlbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKVxuIFx0XHRyZXR1cm4gLUVQUk9UTztcbiBcbitcdGlmIChhdHJfcmVxLVx1MDAzZWxlbmd0aCBcdTAwM2Ugc2tiLVx1MDAzZWxlbilcbitcdFx0cmV0dXJuIC1FUFJPVE87XG4rXG4gXHRyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpO1xuIFx0aWYgKHIpXG4gXHRcdHJldHVybiByO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MTUuODEyMDc1MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MjQzMzIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFNwZWNpZmljYWxseSwgdGhleSdyZSB2ZXJpZnlpbmcgdGhhdCB0aGUgbGVuZ3RoIHByb3ZpZGVkIGluIHRoZSBgYXRyX3JlcWAgc3RydWN0dXJlIGlzICpub3QqIGdyZWF0ZXIgdGhhbiB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUgcmVjZWl2ZWQgYnVmZmVyLCB3aGljaCBpcyBpbiBgc2tiLVx1MDAzZWxlbmAuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIGtpbmQgb2YgZGF0YSBjb3JydXB0aW9uLiBUaGUgY29kZSBhbHJlYWR5IGRvZXMgYSBtaW5pbXVtIGxlbmd0aCBjaGVjaywgbWFraW5nIHN1cmUgdGhlIHJlcXVlc3QgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgYHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxYCwgYnV0IHRoaXMgaXMgYSAqbWF4aW11bSogY2hlY2suXG5cbk5vdywgbXkgaW5zdGluY3QgaXMgdG8gZGlnIGRlZXBlci4gSSB3YW50IHRvIHNlZSAqd2h5KiB0aGlzIHdhcyBhZGRlZC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdnVsbmVyYWJpbGl0eSBpZGVudGlmaWVkPyBJcyB0aGlzIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgZnV6emluZyByZXN1bHQ/IFdoYXQncyB0aGUgY29udGV4dD8gU28sIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgcHJvY2Vzc2VzIHRoZSBkYXRhLCB3aGF0IG90aGVyIGNoZWNrcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhlIGxlbmd0aCB2YWx1ZSBpcyBhY3R1YWxseSB1c2VkIGRvd25zdHJlYW0uIEFuZCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLCBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcmlzayBwcm9maWxlIGhlcmUuIEnigJlsbCBjaGVjayB0aGUgdXBzdHJlYW0gY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIGRpc2N1c3Npb25zLiBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IHByZXZpb3VzIGNvbW1pdHMgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhbnkgcHJpb3Igc2VjdXJpdHkgZml4ZXMgb3IgcG90ZW50aWFsIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjIwLjIwNDUxMDM2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDg5MDMwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0xMzg9c3RhdGljIGludCBzdDIxbmZjYV90bV9zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg3LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjE4ODpzdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzQ5PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2MC1cXHRcXHRjYXNlIFNUMjFORkNBX05GQ0lQMV9BVFJfUkVROlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM2MTpcXHRcXHRcXHRyID0gc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKGhkZXYsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYyLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyMS4xNTM0MTg1MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTYzMTk2NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEYXRhIEZsb3cgaW4gdGhlIFNUMjFORkNBIE1vZHVsZSoqXG5cbkFscmlnaHQsIHNvIEknbSBjdXJyZW50bHkgZGlnZ2luZyBpbnRvIHRoZSBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGxpbmcgY29udGV4dC4gSXQncyBjYWxsZWQgZnJvbSBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBjaGFpbiBvZiBldmVudHMgcmVsYXRlZCB0byBkYXRhIHRyYW5zbWlzc2lvbiwgbW9zdCBsaWtlbHkgaW52b2x2aW5nIEFUUiAoQW5zd2VyIHRvIFJlc2V0KSByZXF1ZXN0cyB3aXRoaW4gYW4gTkZDIGNvbnRleHQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYC4gTXkgZm9jdXMgc2hpZnRzIHRvIHBpbnBvaW50aW5nICppdHMqIGNhbGwgc2l0ZXMgdG8gc2VlIHdoYXQgdGhlIHByZWNlZGluZyBjb25kaXRpb25zIGFyZSB0aGF0IHVsdGltYXRlbHkgbGVhZCB0byBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBiZWluZyBleGVjdXRlZC4gVGhpcyB3aWxsIHJldmVhbCB0aGUgY29tcGxldGUgcHJvY2Vzc2luZyBmbG93IGFuZCBhbnkgcG90ZW50aWFsIHRpbWluZyBkZXBlbmRlbmNpZXMgb3IgaW50ZXJydXB0IHNjZW5hcmlvcyB3aGljaCBjb250cmlidXRlIHRvIHRoZSB0cmlnZ2VyaW5nIG9mIEFUUiByZXF1ZXN0cy4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yIG9mIHRoZSBORkMgY29tbXVuaWNhdGlvbiBzdGFjayBhdCB0aGlzIGxheWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MjQuMzE2NjE3MTgzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODI4ODE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTMwNz1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDgtXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzQ5OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNTAtXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM4ND1pbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQwMi1cXHRjYXNlIFNUMjFORkNBX0VWVF9TRU5EX0RBVEE6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDAzOlxcdFxcdHIgPSBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoaGRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MDQtXFx0XFx0aWYgKHIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyNC40MjQ5MTQ4NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQ5MzQ1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmdW5jdGlvbiBjYWxsOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIE9yaWdpbnMgb2YgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBvcmlnaW4gb2YgdGhlIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQgLSB3aGVyZSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGludm9rZWQgZnJvbT8gSXMgaXQgcGFydCBvZiB0aGUgY29yZSBORkMgc3RhY2ssIGEgc3BlY2lmaWMgZHJpdmVyLCBvciBzb21lIGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHkgYW5kIGl0cyBwb3NpdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZSB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBhbSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbnMuIEl0J3MgcmVhbGx5IHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IHNlcmlvdXMgaW52ZXN0aWdhdGlvbiwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyNy4xNzQyNjIxOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0MDU5MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jPTg4OT1zdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAwLVxcdGNhc2UgU1QyMU5GQ0FfUkZfQ0FSRF9GX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwMTpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MDItXFx0Y2FzZSBTVDIxTkZDQV9DT05ORUNUSVZJVFlfR0FURTpcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0OT1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zODMtICovXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6Mzg0OmludCBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4NS1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQxMy19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDE0OkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTUtXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE3MT12b2lkIHN0MjFuZmNhX2hjaV9yZW1vdmUoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3Mi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3NC1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjI3LjM5ODMyNTE4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODE0MzYwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBgbmZjX2hjaV9vcHNgIENhbGxiYWNrKipcblxuUmlnaHQsIGBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRgLiBMZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhhdCdzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmZjX2hjaV9vcHNgIHN0cnVjdHVyZS5cIiBUaGlzIHRlbGxzIG1lIGl0J3MgcGFydCBvZiB0aGUgbG93LWxldmVsIGludGVyZmFjZSBmb3IgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciwgcHJlc3VtYWJseSBhIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQS4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgZGVzaWduZWQgdG8gYmUgaW52b2tlZCB3aGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkIGZyb20gdGhlIEhDSSAoSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSkgbGF5ZXIuIFRoZSBuYW1pbmcgaGludHMgaXQncyBwYXJ0IG9mIGFuIG9wZXJhdGlvbiBzdHJ1Y3QsIGxpa2VseSB1c2VkIHRvIGltcGxlbWVudCBhIGdlbmVyaWMgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggZGlmZmVyZW50IE5GQyBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gZGVkdWNlIHRoYXQgdGhlIGBuZmNfaGNpX29wc2Agc3RydWN0dXJlIGxpa2VseSBjb250YWlucyBmdW5jdGlvbiBwb2ludGVycyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5GQyBjb250cm9sbGVyLiBUaGUgYHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhhbmRsZSBhbmQgcHJvY2VzcyBpbmJvdW5kIGV2ZW50cyBmcm9tIHRoZSBIQ0kgbGF5ZXIgb2YgdGhlIFNUMjFORkNBIGNoaXAuIFRoaXMgY2FsbGJhY2sgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG1hbmFnZSBpbmNvbWluZyBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzozMC42Nzk3NjI5OTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzE4NzYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04NTY9c3RhdGljIGludCBzdDIxbmZjYV9hZG1pbl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg4OC0gKi9cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVxcdFxcdFxcdFxcdCAgICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkyOC1cXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkyOTpcXHQuZXZlbnRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWQsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cXHQuY21kX3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MzAuNzkyOTU2MDk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjU0MTI0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5GQyBkcml2ZXIsIGFuZCB0aGUgYGV2ZW50X3JlY2VpdmVkYCBjYWxsYmFjayBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl04oCZcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGl0IGVmZmVjdGl2ZWx5P1xuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgTkZDIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IHdpdGggaXRzIHZpcnR1YWwgZGV2aWNlIHN1cHBvcnQsIGxldmVyYWdpbmcgTkNJL0hDSS4gV2FpdCwgaXMgdGhpcyBhbiBOQ0kgb3IgYW4gSENJIGltcGxlbWVudGF0aW9uPyBJdCBsb29rcyBsaWtlIGl04oCZcyB1c2luZyBgbmZjX2hjaV9vcHNgLCBzbyBsZXQncyB2ZXJpZnkgdGhhdCBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LlxuXG5BbHJpZ2h0LCB0aGUgc3BlY2lmaWMgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBzdDIxbmZjYWAuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgaXMgaXQgYSB2aXJ0dWFsIGRyaXZlciwgb3IgYW4gYWN0dWFsIGhhcmR3YXJlIGRyaXZlcj8gRnJvbSB0aGUgbmFtZSwgaXQgbG9va3MgbGlrZSBpdOKAmXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlciBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQSBORkMgY2hpcC4gSWYgaXQncyByZWFsIGhhcmR3YXJlLCB0aGluZ3MgYXJlIHVzdWFsbHkgdHJpY2tpZXIuIFN5emthbGxlciBnZW5lcmFsbHkgc3RydWdnbGVzIHRvIGZ1enogaGFyZHdhcmUgZHJpdmVycyBkaXJlY3RseSB1bmxlc3MgdGhlcmUncyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIGl0J3MgYXR0YWNoZWQgdmlhIGEgZnV6emVkIGJ1cyBsaWtlIFVTQiBvciBJMkMuXG5cblNvLCBsZXQncyBzZWUsIHdoYXQga2luZCBvZiBjb25uZWN0aW9uIGlzIHVzZWQgYnkgdGhlIGBzdDIxbmZjYWAgZHJpdmVyLiBUaGF0IHdpbGwgYmUgdGhlIGRldGVybWluaW5nIGZhY3RvciBpbiB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgZnJ1aXRmdWwgZnV6emluZyB0YXJnZXQsIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBtb3JlIHdvcmsgdG8gbWFrZSBpdCByZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MzUuNjU4MzcwNzI5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkxNTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzNi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTM3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzOC1cXHRcXHQgICAgICAgY2hhciAqbGxjX25hbWUsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMS19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjEwMjI6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9oY2lfcHJvYmUpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy0xMDIzLVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM9NDg5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTQ2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jOjU0NzpcXHRyID0gc3QyMW5mY2FfaGNpX3Byb2JlKHBoeSwgXFx1MDAyNmkyY19waHlfb3BzLCBMTENfU0hETENfTkFNRSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYy01NDgtXFx0XFx0XFx0ICAgICAgIFNUMjFORkNBX0ZSQU1FX0hFQURST09NLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaD0xNDc9c3RydWN0IHN0MjFuZmNhX2hjaV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTY2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTY3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNjgtXFx0XFx0ICAgICAgIGNoYXIgKmxsY19uYW1lLCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzozNS43MTkyOTM5MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2ODcwODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVDIxTkZDQSBJMkMgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdDIxbmZjYV9oY2lfaTJjX3Byb2JlYCBmdW5jdGlvbi4gSXQncyBhbiBJMkMgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBmdXp6aW5nIGl0IHdpdGggU3l6a2FsbGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHRocm91Z2ggYC9kZXYvaTJjLSpgLCBob3BpbmcgdG8gc2ltcGx5IHRhcmdldCB0aGUgaW5zdGFudGlhdGVkIGRldmljZS4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IEkyQyBkcml2ZXJzIGFyZW4ndCAqYWx3YXlzKiB0cml2aWFsIHRvIGhpdCB3aXRoIFN5emthbGxlciwgd2hpY2ggZGVwZW5kcyBvbiBpbnN0YW50aWF0aW9uLiBJJ20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyICptaWdodCogaGF2ZSBzb21lIGBzeXpfaTJjX3NldHVwYCBvciBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksIG9yIHJlbHkgb24gdmlydHVhbCBJMkMgYWRhcHRlcnMsIG9yIHNvbWV0aGluZyB0aHJvdWdoIGBpMmMtZGV2YCwgd2hpY2ggSSBzaG91bGQgbG9vayBpbnRvLiBObywgdGhhdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHRoZSBjYXNlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgZGV2aWNlIGluc3RhbnRpYXRlZC5cblxuVGhlbiwgSSdtIHNlY29uZC1ndWVzc2luZyBteXNlbGYuIERvZXMgU3l6a2FsbGVyIHVzZSBgdmhjaWAgZm9yIEkyQz8gTm8sIHRoYXQncyBCbHVldG9vdGgsIGFjdHVhbGx5LiBUaGlzIGlzIE5GQyBIQ0kgc3BlY2lmaWNhbGx5LiBBaCwgd2FpdCBhIG1pbnV0ZSwgTkZDIGhhcyBgbmZjc2ltYCBmb3IgdmlydHVhbCBkZXZpY2VzLCBidXQgdGhhdCdzIG5vdCByZWxldmFudCBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCBgc3QyMW5mY2FgLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBgc3QyMW5mY2FgIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElmIGl0J3MgYW4gSTJDIGRyaXZlciwgdGhlbiBpdCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlLCByaWdodD8gTGV0J3MgYXNzdW1lIHRoYXQgSSBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGNoZWNrIGlmIEkgY2FuIGluc3RhbnRpYXRlIGBzdDIxbmZjYWAgdXNpbmcgdGhhdCBtZXRob2QuIFRoYXQncyB0aGUga2V5IHRvIGdldHRpbmcgdGhpcyBkcml2ZXIgdW5kZXIgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkyOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo0MS45ODgwMDQxMjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY3NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfaTJjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM9NTkxPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0MjFuZmNhX2kyY19tYXRjaCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTkyLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jOjU5MzpzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTk0LVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYy02MDItfTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYzo2MDM6bW9kdWxlX2kyY19kcml2ZXIoc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTYwNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NDIuMTkwNjg0NzE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDY2MTI5MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIGFuZCBTeXprYWxsZXIncyBGaW5kaW5ncyoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGRlZmluZXMgYW4gSTJDIGRyaXZlciwgYHN0MjFuZmNhX2hjaV9pMmNfZHJpdmVyYCwgd2hpY2ggaXMgZ29vZC4gSSBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBuYW1lLCBPRi9BQ1BJIG1hdGNoaW5nIHRhYmxlcywgcHJvYmUsIHJlbW92ZSwgYW5kIGFuIElEIHRhYmxlLiBTdGFuZGFyZCBzdHVmZi4gVGhlIGZhY3QgdGhhdCBpdCdzIHJlZ2lzdGVyZWQgYXMgYW4gSTJDIGRyaXZlciBpcyBpbXBvcnRhbnQuIE5vdywgSSByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgdGhlc2UgSTJDIGRldmljZXMsIHdyaXRpbmcgdG8gdGhlIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYCBwYXRoLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBCaW5nbyEgVGhpcyBjb25maXJtcyB0aGF0IFN5emthbGxlciAqZGlkKiBmaW5kIGEgYnVnIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIElmIFN5emthbGxlciBmb3VuZCBpdCwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gaXRzIHRlc3QgZW52aXJvbm1lbnQuIFRoYXQncyBrZXkuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgaGVyZSdzIHRoZSBmaXg6IHRoZXkncmUgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGNoZWNraW5nIGlmIGBhdHJfcmVxLVx1MDAzZWxlbmd0aGAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpYCBhbmQgdGhlbiBjaGVja2luZyBpZiBgYXRyX3JlcS1cdTAwM2VsZW5ndGhgIGlzIGdyZWF0ZXIgdGhhbiBgc2tiLVx1MDAzZWxlbmAuIFRoaXMgaXMgYSBjbGFzc2ljIHByb3RlY3Rpb24gYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5HaXZlbiB0aGF0IFN5emthbGxlciBmb3VuZCBpdCwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlcmUncyBhIGNsZWFyIGZpeCBmb3IgYW4gaXNzdWUgKGxpa2VseSBhbiBPT0IgcmVhZCksIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZsYWcgYXMgXCJXb3J0aEZ1enppbmc9dHJ1ZVwiLiBJdCdzIGEgYnVnIHRoYXQgU3l6a2FsbGVyIGNvdWxkIHRyaWdnZXIgYW5kIGl0J3MgYmVlbiBhZGRyZXNzZWQsIGluZGljYXRpbmcgaXQgaXMgZnVuY3Rpb25hbCBhbmQgZXhwbG9pdGFibGUuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBkcml2ZXIgYW5kIG1ha2Ugc3VyZSB0aGUgYnVnIGlzIHJlcHJvZHVjaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo0OC4yMzcyOTkzMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDM4MDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX1NUMjFORkNBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1QyMU5GQ0FcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjQ4LjM0NzY4MzEwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3NTQzNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ2AgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1QyMU5GQ0EgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGNvbnRyb2xsZXIgZHJpdmVyLiBUaGUgc3RydWN0dXJlIGxvb2tzIHByZXR0eSBzdGFuZGFyZCwgc28gSSBleHBlY3QgYSB3ZWxsLWRlZmluZWQgaGllcmFyY2h5IG9mIG9wdGlvbnMgcmVsYXRlZCB0byBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEknbSBpbW1lZGlhdGVseSBzY2FubmluZyBmb3IgdGhlIGBjb25maWdgIHN0YXRlbWVudHMg4oCTIHRob3NlIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlci4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIFNUMjFORkNBIGRyaXZlciBnZXRzIGNvbXBpbGVkIGluIGF0IGFsbC4gSXQgd2lsbCBsaWtlbHkgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgYW5kIGRlcGVuZCBvbiBvdGhlciBzZXR0aW5ncywgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBORkMgc3Vic3lzdGVtIG9yIGV2ZW4gc3BlY2lmaWMgcGxhdGZvcm0gc3VwcG9ydC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBgZGVwZW5kcyBvbmAgY2xhdXNlcy4gVGhlc2Ugd2lsbCB0ZWxsIG1lIHRoZSBwcmUtcmVxdWlzaXRlcyDigJMgd2hpY2ggb3RoZXIga2VybmVsIGZlYXR1cmVzIG11c3QgYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyB3aWxsIGluZm9ybSBtZSBhYm91dCBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIGVjb3N5c3RlbS5cblxuSSBhbHNvIGV4cGVjdCB0byBzZWUgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgcGVyaGFwcyBldmVuIGBpbnRgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXIncyBiZWhhdmlvdXIuIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGNob2ljZXMgZm9yIGRpZmZlcmVudCBtb2RlcyBvZiBvcGVyYXRpb24sIHN1Y2ggYXMgdmFyaW91cyBwb3dlci1zYXZpbmcgc2NoZW1lcywgb3IgZGVidWcgZmVhdHVyZXMuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMg4oCTIGhvcGVmdWxseSwgdGhleSdyZSBpbmZvcm1hdGl2ZSBhbmQgY2xlYXJseSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGRvY3VtZW50YXRpb24gaXMgY3J1Y2lhbCwgZXNwZWNpYWxseSBpbiBhIGRyaXZlci5cblxuRnVydGhlcm1vcmUsIEkgYW0gbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIHRoZSBjb25maWcgb3B0aW9ucyBtaWdodCBoYXZlLCB0aGVzZSB2YWx1ZXMgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBzZXR1cCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZmxpY3RzIHdpdGggb3RoZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBGaW5hbGx5LCBJIHdpbGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGUgYXMgYSB3aG9sZSwgd2hhdCB0aGlzIG1vZHVsZSBpcyBmb3IsIGFuZCB3aGVuIGl0IGlzIG5lZWRlZC5cblxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgY29udHJvbCB0aGUga2VybmVsIHByb3ZpZGVzIG92ZXIgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciwgYW5kIGhvdyBlYXNpbHkgYW5kIHNhZmVseSBpdCBjYW4gYmUgaW50ZWdyYXRlZCBpbnRvIGEgc3lzdGVtLiBJIGFtIGhvcGluZyB0aGUgZmlsZSBpcyB3cml0dGVuIGNsZWFybHkgYW5kIGxvZ2ljYWxseTsgYSB3ZWxsLXN0cnVjdHVyZWQgYEtjb25maWdgIGZpbGUgaXMgYSBwbGVhc3VyZSB0byByZWFkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTk1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTIuNTg1MjI4NTYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBORkNfU1QyMU5GQ0FcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQSBjb3JlIGRyaXZlci4gSXQgaW1wbGVtZW50cyB0aGUgY2hpcHNldFxcbiAgIDc6XFx0XFx0ICBIQ0kgbG9naWMgYW5kIGhvb2tzIGludG8gdGhlIE5GQyBrZXJuZWwgQVBJcy4gUGh5c2ljYWwgbGF5ZXJzIHdpbGxcXG4gICA4OlxcdFxcdCAgcmVnaXN0ZXIgYWdhaW5zdCBpdC5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gTkZDX0hDSSBcXHUwMDI2XFx1MDAyNiBJMkMgXFx1MDAyNlxcdTAwMjYgTkZDX1NIRExDXFxuICAxMzpcXHRcXHRzZWxlY3QgTkZDX1NUMjFORkNBXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBzdDIxbmZjYSBpMmMgaW50ZXJmYWNlLlxcbiAgMTY6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBpMmMgYnVzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBzdDIxbmZjYV9pMmMuXFxuICAxOTpcXHRcXHQgIFNheSBOIGlmIHVuc3VyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTIuNTg1Mjg3MDEzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTY2ODE5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTkZDIGRyaXZlciBzZXR1cC4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoaW5ncy4gSW1wbGljaXRseSwgdGhhdCBhbHNvIG1lYW5zIEknbSBhY3RpdmF0aW5nIGBORkNfU1QyMU5GQ0FgLCB3aGljaCBpcyBnb29kIHRvIGtub3cgZm9yIGNvbnRleHQuIEkgc2VlIHRoYXQgYE5GQ19IQ0lgIGFuZCBgTkZDX1NIRExDYCBhcmUgYWxzbyBkZXBlbmRlbmNpZXMg4oCTIG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IHN0YW5kYXJkIE5GQyBwcm90b2NvbCBsYXllcnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBtaWdodCBjb21lIGludG8gcGxheSBvciBpbnRlcmFjdCB3aXRoIHRoZXNlIHNldHRpbmdzLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkFoLCB0aGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBtb2RpZmllcyBgZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNgLiBJbnRlcmVzdGluZy4gVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNvbXBpbGF0aW9uIG9mIHRoYXQgYGRlcC5jYCBmaWxlIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgc2V0dGluZ3MuIFRoYXQgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCB0aWVzIHRvZ2V0aGVyIGFuZCB3aGV0aGVyIHRoZSBkZXBlbmRlbmN5IGltcGxpY2F0aW9ucyBleHRlbmQgdG8gdGhlIGNvbXBpbGVkIG1vZHVsZXMgYW5kIG5vdCBqdXN0IHRoZSBkZWZpbml0aW9ucy4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo1Ni4zMDE5NzEyNjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIFNUMjFORkNBIEhDSSBiYXNlZCBORkMgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHN0MjFuZmNhX2hjaS1vYmpzID0gY29yZS5vIGRlcC5vIHNlLm8gdmVuZG9yX2NtZHMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgICAgICs9IHN0MjFuZmNhX2hjaS5vXFxuICAgODpcXHRcXG4gICA5OlxcdHN0MjFuZmNhX2kyYy1vYmpzICA9IGkyYy5vXFxuICAxMDpcXHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBX0kyQykgKz0gc3QyMW5mY2FfaTJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTYuMzAyMDM3MTMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTM0NTkxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBgZGVwLm9gIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgYHN0MjFuZmNhX2hjaS5vYCBtb2R1bGUuIEkgcmVtZW1iZXIsIGlmIGBDT05GSUdfTkZDX1NUMjFORkNBYCBpcyBlbmFibGVkLCB0aGVuIHRoaXMgbW9kdWxlIGdldHMgYnVpbHQuIFJpZ2h0LCBhbmQgYENPTkZJR19ORkNfU1QyMU5GQ0FgIGlzIHNlbGVjdGVkIGJ5IGBDT05GSUdfTkZDX1NUMjFORkNBX0kyQ2AuIFRoZXJlZm9yZSwgYE5GQ19TVDIxTkZDQV9JMkNgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBlbmFibGluZyB0aGlzIHdob2xlIHRoaW5nLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyBpdCBjbGVhbiBhbmQgdGFyZ2V0ZWQuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIGFjdHVhbCBjb2RlIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIEhtbSwgdHJhY2luZyBiYWNrd2FyZHMsIHRoYXQgZnVuY3Rpb24ncyBjYWxsZWQgYnkgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAsIGFuZCAqdGhhdCogb25lIGlzIGNhbGxlZCBieSBgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkYC4gRXhjZWxsZW50LiBTbyBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBpcyBhIHZlcnkgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbiwgYXMgaXQncyBkaXJlY3RseSBpbXBhY3RlZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAgYW5kIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIHRvbyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZ1bGx5LiBJIHRoaW5rIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYC4gVGhhdCdzIHRoZSBiZXN0IGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzUzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzQ6MDEuMDU1NDk4NTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgwODk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTEzOD1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODctXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MTg4OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYwLVxcdFxcdGNhc2UgU1QyMU5GQ0FfTkZDSVAxX0FUUl9SRVE6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzYxOlxcdFxcdFxcdHIgPSBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoaGRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNjItXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjM0OjAxLjExMzMxMzY0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDg2MzczMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTVDIxTkZDQSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbi4gQW5kIHRoZSBvdGhlciBmdW5jdGlvbiBpbiBwbGF5LCBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgaXMgYWxzbyBzdGF0aWMuIEhvd2V2ZXIsIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzIGFub3RoZXIgcG9pbnQgb2YgaW50ZXJlc3QsIGJ1dCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCBJJ2xsIGZvY3VzIG9uIHRoZSBmaXJzdCBmdW5jdGlvbi4gSSBjYW4gYWRkIGBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFgIHRvIEZvY3VzU3ltYm9scyB0byBoaWdobGlnaHQgaXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0IG1lIHJldmlldyB0aGUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgc2VlIGBORkNfU1QyMU5GQ0FfSTJDYCBhbmQgYE5GQ19TVDIxTkZDQWAuIFRoZSBsYXR0ZXIgaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseSwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdCBhbmQgaW5jbHVkZSBpdC5cblxuV2FpdCwgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4uLiBZZXMsIGhlcmUgaXQgaXMsIGBORkNfU1QyMU5GQ0FfSTJDYCBkZXBlbmRzIG9uIGBORkNfSENJIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IE5GQ19TSERMQ2AuIEdpdmVuIHRoYXQgdGhpcyBpcyBhbiBJMkMgaW1wbGVtZW50YXRpb24gYW5kIGludm9sdmVzIEhDSSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBgTkZDX1NUMjFORkNBX0kyQ2AuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgY292ZXJzIHRoZSBhcHByb3ByaWF0ZSBpbnN0YW50aWF0aW9uIG1ldGhvZC5cblxuQWxyaWdodCwgdGltZSB0byBmb3JtdWxhdGUgbXkgcmVzcG9uc2UuIEl0J3MgbG9va2luZyBsaWtlIGEgc29saWQgZnV6emluZyB0YXJnZXQsIHNvIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBjbGVhcmx5IGluY2x1ZGUgYFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCJgIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9uLiBBbmQsIHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBJMkMgY29uZmlndXJhdGlvbiBhbmQgSENJIHRvIGJlIHNldHVwLCB0aGUgcGF0Y2ggd2lsbCByZXF1aXJlIG1lIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYFtcIk5GQ19TVDIxTkZDQV9JMkNcIl1gLiBUaGUga2V5IHJlYXNvbmluZywgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIEFUUiByZXF1ZXN0IGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB1c2VkIHZpYSBJMkMsIGFuZCBpdHMgSENJIGV2ZW50cyBhcmUgYSBjbGVhciBhdmVudWUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzYsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjM0OjA3LjU5OTY4OTA0NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzI4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfU1QyMU5GQ0FfSTJDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJ3MgQVRSIHJlcXVlc3QgaGFuZGxpbmcgKHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcSkuIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB2aWEgSTJDIGFuZCBpdHMgSENJIGV2ZW50cyBjYW4gYmUgZnV6emVkLCBtYWtpbmcgdGhpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX1NUMjFORkNBX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gZml4IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgU1QyMU5GQ0EgTkZDIGRyaXZlcidzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowbp7s5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 23:40:12 +0000 UTC FinishedAt: 2026-07-12 00:34:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_ST21NFCA_I2C" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC_ST21NFCA_I2C" ], "series_id": "b463cb9f-2927-4e96-8dea-3f52ed158703" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "st21nfca_tm_recv_atr_req" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgN2NiZDhkZDQ5N2VhZmQyYTI3OGRmYmJjMmVkOWUzYTVmODJjODJhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjMzOjE0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcbmluZGV4IDM0MjViNjhmMGRkY2ZlLi5hNWZhYjRmZDUxMjlkYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xuQEAgLTIwNSw2ICYjNDM7MjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuIFx0aWYgKGF0cl9yZXEtXHUwMDNlbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKVxuIFx0XHRyZXR1cm4gLUVQUk9UTztcbiBcbiYjNDM7XHRpZiAoYXRyX3JlcS1cdTAwM2VsZW5ndGggXHUwMDNlIHNrYi1cdTAwM2VsZW4pXG4mIzQzO1x0XHRyZXR1cm4gLUVQUk9UTztcbiYjNDM7XG4gXHRyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpO1xuIFx0aWYgKHIpXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdWwgMTIgMDA6MzM6MTQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYyBiL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jCmluZGV4IDM0MjViNjhmMGRkY2ZlLi5hNWZhYjRmZDUxMjlkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMKQEAgLTIwNSw2ICYjNDM7MjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LAogCWlmIChhdHJfcmVxLSZndDtsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKQogCQlyZXR1cm4gLUVQUk9UTzsKIAomIzQzOwlpZiAoYXRyX3JlcS0mZ3Q7bGVuZ3RoICZndDsgc2tiLSZndDtsZW4pCiYjNDM7CQlyZXR1cm4gLUVQUk9UTzsKJiM0MzsKIAlyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpOwogCWlmIChyKQogCQlyZXR1cm4gcjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGRlZCBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgdmVyaWZ5aW5nIHRoYXQgdGhlIGxlbmd0aCBwcm92aWRlZCBpbiB0aGUgYGF0cl9yZXFgIHN0cnVjdHVyZSBpcyAqbm90KiBncmVhdGVyIHRoYW4gdGhlIGFjdHVhbCBsZW5ndGggb2YgdGhlIHJlY2VpdmVkIGJ1ZmZlciwgd2hpY2ggaXMgaW4gYHNrYi0mZ3Q7bGVuYC4gTWFrZXMgc2Vuc2UsIHRoZXkmIzM5O3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIGtpbmQgb2YgZGF0YSBjb3JydXB0aW9uLiBUaGUgY29kZSBhbHJlYWR5IGRvZXMgYSBtaW5pbXVtIGxlbmd0aCBjaGVjaywgbWFraW5nIHN1cmUgdGhlIHJlcXVlc3QgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgYHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxYCwgYnV0IHRoaXMgaXMgYSAqbWF4aW11bSogY2hlY2suCgpOb3csIG15IGluc3RpbmN0IGlzIHRvIGRpZyBkZWVwZXIuIEkgd2FudCB0byBzZWUgKndoeSogdGhpcyB3YXMgYWRkZWQuIFdhcyB0aGVyZSBhIHNwZWNpZmljIHZ1bG5lcmFiaWxpdHkgaWRlbnRpZmllZD8gSXMgdGhpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlIHRyaWdnZXJlZCBieSBhIHNwZWNpZmljIGZ1enppbmcgcmVzdWx0PyBXaGF0JiMzOTtzIHRoZSBjb250ZXh0PyBTbywgbGV0JiMzOTtzIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgcHJvY2Vzc2VzIHRoZSBkYXRhLCB3aGF0IG90aGVyIGNoZWNrcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhlIGxlbmd0aCB2YWx1ZSBpcyBhY3R1YWxseSB1c2VkIGRvd25zdHJlYW0uIEFuZCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLCBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcmlzayBwcm9maWxlIGhlcmUuIEnigJlsbCBjaGVjayB0aGUgdXBzdHJlYW0gY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIGRpc2N1c3Npb25zLiBJJiMzOTtsbCBhbHNvIHdhbnQgdG8gbG9vayBhdCBwcmV2aW91cyBjb21taXRzIHRvIHNlZSBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gYW55IHByaW9yIHNlY3VyaXR5IGZpeGVzIG9yIHBvdGVudGlhbCBpc3N1ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTEzOD1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg3LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MTg4OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTE4OS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0OT1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYwLVx0XHRjYXNlIFNUMjFORkNBX05GQ0lQMV9BVFJfUkVROlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzYxOlx0XHRcdHIgPSBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoaGRldiwgc2tiKTtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2Mi1cdFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzMzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKlRyYWNpbmcgRGF0YSBGbG93IGluIHRoZSBTVDIxTkZDQSBNb2R1bGUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBjdXJyZW50bHkgZGlnZ2luZyBpbnRvIHRoZSBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGxpbmcgY29udGV4dC4gSXQmIzM5O3MgY2FsbGVkIGZyb20gYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAsIHdoaWNoIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGEgY2hhaW4gb2YgZXZlbnRzIHJlbGF0ZWQgdG8gZGF0YSB0cmFuc21pc3Npb24sIG1vc3QgbGlrZWx5IGludm9sdmluZyBBVFIgKEFuc3dlciB0byBSZXNldCkgcmVxdWVzdHMgd2l0aGluIGFuIE5GQyBjb250ZXh0LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdHJpZ2dlcnMgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAuIE15IGZvY3VzIHNoaWZ0cyB0byBwaW5wb2ludGluZyAqaXRzKiBjYWxsIHNpdGVzIHRvIHNlZSB3aGF0IHRoZSBwcmVjZWRpbmcgY29uZGl0aW9ucyBhcmUgdGhhdCB1bHRpbWF0ZWx5IGxlYWQgdG8gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgYmVpbmcgZXhlY3V0ZWQuIFRoaXMgd2lsbCByZXZlYWwgdGhlIGNvbXBsZXRlIHByb2Nlc3NpbmcgZmxvdyBhbmQgYW55IHBvdGVudGlhbCB0aW1pbmcgZGVwZW5kZW5jaWVzIG9yIGludGVycnVwdCBzY2VuYXJpb3Mgd2hpY2ggY29udHJpYnV0ZSB0byB0aGUgdHJpZ2dlcmluZyBvZiBBVFIgcmVxdWVzdHMuIEtub3dpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBiZWhhdmlvciBvZiB0aGUgTkZDIGNvbW11bmljYXRpb24gc3RhY2sgYXQgdGhpcyBsYXllci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzA3PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDgtXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzozNDk6c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzUwLVx0XHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zODQ9aW50IHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDAyLVx0Y2FzZSBTVDIxTkZDQV9FVlRfU0VORF9EQVRBOlxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDAzOlx0XHRyID0gc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKGhkZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MDQtXHRcdGlmIChyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGZ1bmN0aW9uIGNhbGw6CgoqKlVuZGVyc3RhbmRpbmcgdGhlIE9yaWdpbnMgb2YgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIG9yaWdpbiBvZiB0aGUgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAgZnVuY3Rpb24gY2FsbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgY29udGV4dCAtIHdoZXJlIGRvZXMgdGhpcyBmdW5jdGlvbiBnZXQgaW52b2tlZCBmcm9tPyBJcyBpdCBwYXJ0IG9mIHRoZSBjb3JlIE5GQyBzdGFjaywgYSBzcGVjaWZpYyBkcml2ZXIsIG9yIHNvbWUgaGlnaGVyLWxldmVsIGFic3RyYWN0aW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24mIzM5O3MgcmVzcG9uc2liaWxpdHkgYW5kIGl0cyBwb3NpdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZSB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBhbSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbnMuIEl0JiMzOTtzIHJlYWxseSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBzZXJpb3VzIGludmVzdGlnYXRpb24sIHJpZ2h0PwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9ODg5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAwLVx0Y2FzZSBTVDIxTkZDQV9SRl9DQVJEX0ZfR0FURTpcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5MDE6XHRcdHJldHVybiBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoaGRldiwgZXZlbnQsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAyLVx0Y2FzZSBTVDIxTkZDQV9DT05ORUNUSVZJVFlfR0FURTpcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4My0gKi9cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM4NDppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4NS1cdFx0XHRcdHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQxMy19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYzo0MTQ6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtNDE1LVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg9MTcxPXZvaWQgc3QyMW5mY2FfaGNpX3JlbW92ZShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNzItXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTc0LVx0XHRcdFx0dTggZXZlbnQsIHN0cnVjdCBza19idWZmICpza2IpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNTMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZCwgcmVuZGVyZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIGBuZmNfaGNpX29wc2AgQ2FsbGJhY2sqKgoKUmlnaHQsIGBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRgLiBMZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhhdCYjMzk7cyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGhpbiB0aGUgYG5mY19oY2lfb3BzYCBzdHJ1Y3R1cmUuJiMzNDsgVGhpcyB0ZWxscyBtZSBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBsb3ctbGV2ZWwgaW50ZXJmYWNlIGZvciB0aGlzIHNwZWNpZmljIE5GQyBjb250cm9sbGVyLCBwcmVzdW1hYmx5IGEgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gc3Ryb25nbHkgc3VnZ2VzdHMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgaW52b2tlZCB3aGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkIGZyb20gdGhlIEhDSSAoSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSkgbGF5ZXIuIFRoZSBuYW1pbmcgaGludHMgaXQmIzM5O3MgcGFydCBvZiBhbiBvcGVyYXRpb24gc3RydWN0LCBsaWtlbHkgdXNlZCB0byBpbXBsZW1lbnQgYSBnZW5lcmljIGxheWVyIG9mIGFic3RyYWN0aW9uIGZvciBpbnRlcmFjdGluZyB3aXRoIGRpZmZlcmVudCBORkMgaGFyZHdhcmUuCgpUaGVyZWZvcmUsIGl0JiMzOTtzIHNhZmUgdG8gZGVkdWNlIHRoYXQgdGhlIGBuZmNfaGNpX29wc2Agc3RydWN0dXJlIGxpa2VseSBjb250YWlucyBmdW5jdGlvbiBwb2ludGVycyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5GQyBjb250cm9sbGVyLiBUaGUgYHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhhbmRsZSBhbmQgcHJvY2VzcyBpbmJvdW5kIGV2ZW50cyBmcm9tIHRoZSBIQ0kgbGF5ZXIgb2YgdGhlIFNUMjFORkNBIGNoaXAuIFRoaXMgY2FsbGJhY2sgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG1hbmFnZSBpbmNvbWluZyBldmVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM9ODU2PXN0YXRpYyBpbnQgc3QyMW5mY2FfYWRtaW5fZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LCB1OCBldmVudCxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODg4LSAqL1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjg4OTpzdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVx0XHRcdFx0ICAgICAgIHU4IGV2ZW50LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MjgtXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTI5Olx0LmV2ZW50X3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkLFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cdC5jbWRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfY21kX3JlY2VpdmVkLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODAxCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBORkMgZHJpdmVyLCBhbmQgdGhlIGBldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaW1tZWRpYXRlbHkgZ3JhYnMgbXkgYXR0ZW50aW9uLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBoYXJkd2FyZSwgc28gaXTigJlzIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBOb3csIHRoZSBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IGZ1enogaXQgZWZmZWN0aXZlbHk/CgpUaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgTkZDIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IHdpdGggaXRzIHZpcnR1YWwgZGV2aWNlIHN1cHBvcnQsIGxldmVyYWdpbmcgTkNJL0hDSS4gV2FpdCwgaXMgdGhpcyBhbiBOQ0kgb3IgYW4gSENJIGltcGxlbWVudGF0aW9uPyBJdCBsb29rcyBsaWtlIGl04oCZcyB1c2luZyBgbmZjX2hjaV9vcHNgLCBzbyBsZXQmIzM5O3MgdmVyaWZ5IHRoYXQgc3l6a2FsbGVyIGNhbiByZWFjaCBpdC4KCkFscmlnaHQsIHRoZSBzcGVjaWZpYyBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYHN0MjFuZmNhYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLCBpcyBpdCBhIHZpcnR1YWwgZHJpdmVyLCBvciBhbiBhY3R1YWwgaGFyZHdhcmUgZHJpdmVyPyBGcm9tIHRoZSBuYW1lLCBpdCBsb29rcyBsaWtlIGl04oCZcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBjaGlwLiBJZiBpdCYjMzk7cyByZWFsIGhhcmR3YXJlLCB0aGluZ3MgYXJlIHVzdWFsbHkgdHJpY2tpZXIuIFN5emthbGxlciBnZW5lcmFsbHkgc3RydWdnbGVzIHRvIGZ1enogaGFyZHdhcmUgZHJpdmVycyBkaXJlY3RseSB1bmxlc3MgdGhlcmUmIzM5O3MgYSB2aXJ0dWFsIGludGVyZmFjZSBvciBpdCYjMzk7cyBhdHRhY2hlZCB2aWEgYSBmdXp6ZWQgYnVzIGxpa2UgVVNCIG9yIEkyQy4KClNvLCBsZXQmIzM5O3Mgc2VlLCB3aGF0IGtpbmQgb2YgY29ubmVjdGlvbiBpcyB1c2VkIGJ5IHRoZSBgc3QyMW5mY2FgIGRyaXZlci4gVGhhdCB3aWxsIGJlIHRoZSBkZXRlcm1pbmluZyBmYWN0b3IgaW4gd2hldGhlciBvciBub3QgdGhpcyBpcyBhIGZydWl0ZnVsIGZ1enppbmcgdGFyZ2V0LCBvciBpZiB3ZSBuZWVkIHRvIGRvIHNvbWUgbW9yZSB3b3JrIHRvIG1ha2UgaXQgcmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdDIxbmZjYV9oY2lfcHJvYmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jPTkxND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19oY2lfb3BzIHN0MjFuZmNhX2hjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzNi1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYzo5Mzc6aW50IHN0MjFuZmNhX2hjaV9wcm9iZSh2b2lkICpwaHlfaWQsIGNvbnN0IHN0cnVjdCBuZmNfcGh5X29wcyAqcGh5X29wcyxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MzgtXHRcdCAgICAgICBjaGFyICpsbGNfbmFtZSwgaW50IHBoeV9oZWFkcm9vbSwgaW50IHBoeV90YWlscm9vbSxcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMS19XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6MTAyMjpFWFBPUlRfU1lNQk9MKHN0MjFuZmNhX2hjaV9wcm9iZSk7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMy1cbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYz00ODk9c3RhdGljIGludCBzdDIxbmZjYV9oY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTQ2LVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM6NTQ3Olx0ciA9IHN0MjFuZmNhX2hjaV9wcm9iZShwaHksIFx1MDAyNmkyY19waHlfb3BzLCBMTENfU0hETENfTkFNRSxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTU0OC1cdFx0XHQgICAgICAgU1QyMU5GQ0FfRlJBTUVfSEVBRFJPT00sXG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaD0xNDc9c3RydWN0IHN0MjFuZmNhX2hjaV9pbmZvIHtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE2Ni1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTY3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE2OC1cdFx0ICAgICAgIGNoYXIgKmxsY19uYW1lLCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTI5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUMjFORkNBIEkyQyBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHN0MjFuZmNhX2hjaV9pMmNfcHJvYmVgIGZ1bmN0aW9uLiBJdCYjMzk7cyBhbiBJMkMgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBmdXp6aW5nIGl0IHdpdGggU3l6a2FsbGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHRocm91Z2ggYC9kZXYvaTJjLSpgLCBob3BpbmcgdG8gc2ltcGx5IHRhcmdldCB0aGUgaW5zdGFudGlhdGVkIGRldmljZS4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IEkyQyBkcml2ZXJzIGFyZW4mIzM5O3QgKmFsd2F5cyogdHJpdmlhbCB0byBoaXQgd2l0aCBTeXprYWxsZXIsIHdoaWNoIGRlcGVuZHMgb24gaW5zdGFudGlhdGlvbi4gSSYjMzk7bSByZWNhbGxpbmcgdGhhdCBTeXprYWxsZXIgKm1pZ2h0KiBoYXZlIHNvbWUgYHN5el9pMmNfc2V0dXBgIG9yIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSwgb3IgcmVseSBvbiB2aXJ0dWFsIEkyQyBhZGFwdGVycywgb3Igc29tZXRoaW5nIHRocm91Z2ggYGkyYy1kZXZgLCB3aGljaCBJIHNob3VsZCBsb29rIGludG8uIE5vLCB0aGF0IGRvZXMgbm90IHNlZW0gdG8gYmUgdGhlIGNhc2UuIEkgbmVlZCB0byBnZXQgdGhpcyBkZXZpY2UgaW5zdGFudGlhdGVkLgoKVGhlbiwgSSYjMzk7bSBzZWNvbmQtZ3Vlc3NpbmcgbXlzZWxmLiBEb2VzIFN5emthbGxlciB1c2UgYHZoY2lgIGZvciBJMkM/IE5vLCB0aGF0JiMzOTtzIEJsdWV0b290aCwgYWN0dWFsbHkuIFRoaXMgaXMgTkZDIEhDSSBzcGVjaWZpY2FsbHkuIEFoLCB3YWl0IGEgbWludXRlLCBORkMgaGFzIGBuZmNzaW1gIGZvciB2aXJ0dWFsIGRldmljZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCBgc3QyMW5mY2FgLgoKU28sIHRoZSBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggYHN0MjFuZmNhYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJZiBpdCYjMzk7cyBhbiBJMkMgZHJpdmVyLCB0aGVuIGl0ICpzaG91bGQqIGJlIHByb2JlLWFibGUsIHJpZ2h0PyBMZXQmIzM5O3MgYXNzdW1lIHRoYXQgSSBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGNoZWNrIGlmIEkgY2FuIGluc3RhbnRpYXRlIGBzdDIxbmZjYWAgdXNpbmcgdGhhdCBtZXRob2QuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBnZXR0aW5nIHRoaXMgZHJpdmVyIHVuZGVyIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX2hjaV9pMmNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvc3QyMW5mY2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jPTU5MT1NT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdDIxbmZjYV9pMmNfbWF0Y2gpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTkyLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM6NTkzOnN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdDIxbmZjYV9oY2lfaTJjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTU5NC1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNjAyLX07XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYzo2MDM6bW9kdWxlX2kyY19kcml2ZXIoc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIpO1xuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNjA0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2OTUwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSTJDIERyaXZlciBhbmQgU3l6a2FsbGVyJiMzOTtzIEZpbmRpbmdzKioKCk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGRlZmluZXMgYW4gSTJDIGRyaXZlciwgYHN0MjFuZmNhX2hjaV9pMmNfZHJpdmVyYCwgd2hpY2ggaXMgZ29vZC4gSSBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBuYW1lLCBPRi9BQ1BJIG1hdGNoaW5nIHRhYmxlcywgcHJvYmUsIHJlbW92ZSwgYW5kIGFuIElEIHRhYmxlLiBTdGFuZGFyZCBzdHVmZi4gVGhlIGZhY3QgdGhhdCBpdCYjMzk7cyByZWdpc3RlcmVkIGFzIGFuIEkyQyBkcml2ZXIgaXMgaW1wb3J0YW50LiBOb3csIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIHRoZXNlIEkyQyBkZXZpY2VzLCB3cml0aW5nIHRvIHRoZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLSovbmV3X2RldmljZWAgcGF0aC4KCkhvbGQgb24gYSBzZWNvbmQuLi4gdGhlIGF1dGhvciBvZiB0aGUgcGF0Y2ggaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gQmluZ28hIFRoaXMgY29uZmlybXMgdGhhdCBTeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyByZWxhdGVkIHRvIHRoaXMgZHJpdmVyLiBJZiBTeXprYWxsZXIgZm91bmQgaXQsIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIHdpdGhpbiBpdHMgdGVzdCBlbnZpcm9ubWVudC4gVGhhdCYjMzk7cyBrZXkuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEFoLCBoZXJlJiMzOTtzIHRoZSBmaXg6IHRoZXkmIzM5O3JlIGFkZGluZyBhIGxlbmd0aCBjaGVjay4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBub3cgY2hlY2tpbmcgaWYgYGF0cl9yZXEtJmd0O2xlbmd0aGAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpYCBhbmQgdGhlbiBjaGVja2luZyBpZiBgYXRyX3JlcS0mZ3Q7bGVuZ3RoYCBpcyBncmVhdGVyIHRoYW4gYHNrYi0mZ3Q7bGVuYC4gVGhpcyBpcyBhIGNsYXNzaWMgcHJvdGVjdGlvbiBhZ2FpbnN0IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24uCgpHaXZlbiB0aGF0IFN5emthbGxlciBmb3VuZCBpdCwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlcmUmIzM5O3MgYSBjbGVhciBmaXggZm9yIGFuIGlzc3VlIChsaWtlbHkgYW4gT09CIHJlYWQpLCB0aGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBmbGFnIGFzICYjMzQ7V29ydGhGdXp6aW5nPXRydWUmIzM0Oy4gSXQmIzM5O3MgYSBidWcgdGhhdCBTeXprYWxsZXIgY291bGQgdHJpZ2dlciBhbmQgaXQmIzM5O3MgYmVlbiBhZGRyZXNzZWQsIGluZGljYXRpbmcgaXQgaXMgZnVuY3Rpb25hbCBhbmQgZXhwbG9pdGFibGUuCgpOb3csIGxldCYjMzk7cyBmaWd1cmUgb3V0IHdoYXQgQ09ORklHIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGRyaXZlciBhbmQgbWFrZSBzdXJlIHRoZSBidWcgaXMgcmVwcm9kdWNpYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX1NUMjFORkNBJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6Mjpjb25maWcgTkZDX1NUMjFORkNBXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMiAwMDozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTk1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgcHJvY2Vzc2luZyB0aGUgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdgIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBTVDIxTkZDQSBLY29uZmlnKioKCkFscmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBLY29uZmlnYCBmaWxlIGZvciB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBjb250cm9sbGVyIGRyaXZlci4gVGhlIHN0cnVjdHVyZSBsb29rcyBwcmV0dHkgc3RhbmRhcmQsIHNvIEkgZXhwZWN0IGEgd2VsbC1kZWZpbmVkIGhpZXJhcmNoeSBvZiBvcHRpb25zIHJlbGF0ZWQgdG8gZW5hYmxpbmcgYW5kIGNvbmZpZ3VyaW5nIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJJiMzOTttIGltbWVkaWF0ZWx5IHNjYW5uaW5nIGZvciB0aGUgYGNvbmZpZ2Agc3RhdGVtZW50cyDigJMgdGhvc2UgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIFNUMjFORkNBIGRyaXZlciBnZXRzIGNvbXBpbGVkIGluIGF0IGFsbC4gSXQgd2lsbCBsaWtlbHkgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgYW5kIGRlcGVuZCBvbiBvdGhlciBzZXR0aW5ncywgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBORkMgc3Vic3lzdGVtIG9yIGV2ZW4gc3BlY2lmaWMgcGxhdGZvcm0gc3VwcG9ydC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGBkZXBlbmRzIG9uYCBjbGF1c2VzLiBUaGVzZSB3aWxsIHRlbGwgbWUgdGhlIHByZS1yZXF1aXNpdGVzIOKAkyB3aGljaCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbXVzdCBiZSBlbmFibGVkIGJlZm9yZSB0aGlzIGRyaXZlciBjYW4gZXZlbiBiZSBjb25zaWRlcmVkLiBUaGlzIHdpbGwgaW5mb3JtIG1lIGFib3V0IGhvdyB0aGlzIGRyaXZlciBpbnRlZ3JhdGVzIGludG8gdGhlIGxhcmdlciBrZXJuZWwgZWNvc3lzdGVtLgoKSSBhbHNvIGV4cGVjdCB0byBzZWUgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgcGVyaGFwcyBldmVuIGBpbnRgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3VyLiBJJiMzOTttIGtlZW4gdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgY2hvaWNlcyBmb3IgZGlmZmVyZW50IG1vZGVzIG9mIG9wZXJhdGlvbiwgc3VjaCBhcyB2YXJpb3VzIHBvd2VyLXNhdmluZyBzY2hlbWVzLCBvciBkZWJ1ZyBmZWF0dXJlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMg4oCTIGhvcGVmdWxseSwgdGhleSYjMzk7cmUgaW5mb3JtYXRpdmUgYW5kIGNsZWFybHkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiBlYWNoIG9wdGlvbi4gR29vZCBkb2N1bWVudGF0aW9uIGlzIGNydWNpYWwsIGVzcGVjaWFsbHkgaW4gYSBkcml2ZXIuCgpGdXJ0aGVybW9yZSwgSSBhbSBsb29raW5nIGZvciBhbnkgZGVmYXVsdCB2YWx1ZXMgdGhlIGNvbmZpZyBvcHRpb25zIG1pZ2h0IGhhdmUsIHRoZXNlIHZhbHVlcyBoZWxwIG1lIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZHJpdmVyIGlzIHNldHVwLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25mbGljdHMgd2l0aCBvdGhlciBzeXN0ZW0gY29uZmlndXJhdGlvbnMuIEZpbmFsbHksIEkgd2lsbCBiZSBleHBlY3RpbmcgdG8gc2VlIGEgZGVzY3JpcHRpb24gb2YgdGhlIG1vZHVsZSBhcyBhIHdob2xlLCB3aGF0IHRoaXMgbW9kdWxlIGlzIGZvciwgYW5kIHdoZW4gaXQgaXMgbmVlZGVkLgoKRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNvbnRyb2wgdGhlIGtlcm5lbCBwcm92aWRlcyBvdmVyIHRoaXMgc3BlY2lmaWMgTkZDIGNvbnRyb2xsZXIsIGFuZCBob3cgZWFzaWx5IGFuZCBzYWZlbHkgaXQgY2FuIGJlIGludGVncmF0ZWQgaW50byBhIHN5c3RlbS4gSSBhbSBob3BpbmcgdGhlIGZpbGUgaXMgd3JpdHRlbiBjbGVhcmx5IGFuZCBsb2dpY2FsbHk7IGEgd2VsbC1zdHJ1Y3R1cmVkIGBLY29uZmlnYCBmaWxlIGlzIGEgcGxlYXN1cmUgdG8gcmVhZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5GQ19TVDIxTkZDQVxuICAgMzpcdFx0dHJpc3RhdGVcbiAgIDQ6XHRcdHNlbGVjdCBDUkNfQ0NJVFRcbiAgIDU6XHRcdGhlbHBcbiAgIDY6XHRcdCAgU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIGNvcmUgZHJpdmVyLiBJdCBpbXBsZW1lbnRzIHRoZSBjaGlwc2V0XG4gICA3Olx0XHQgIEhDSSBsb2dpYyBhbmQgaG9va3MgaW50byB0aGUgTkZDIGtlcm5lbCBBUElzLiBQaHlzaWNhbCBsYXllcnMgd2lsbFxuICAgODpcdFx0ICByZWdpc3RlciBhZ2FpbnN0IGl0LlxuICAgOTpcdFxuICAxMDpcdGNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXG4gIDExOlx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVwmIzM0O1xuICAxMjpcdFx0ZGVwZW5kcyBvbiBORkNfSENJIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IE5GQ19TSERMQ1xuICAxMzpcdFx0c2VsZWN0IE5GQ19TVDIxTkZDQVxuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3Mgc3QyMW5mY2EgaTJjIGludGVyZmFjZS5cbiAgMTY6XHRcdCAgU2VsZWN0IHRoaXMgaWYgeW91ciBwbGF0Zm9ybSBpcyB1c2luZyB0aGUgaTJjIGJ1cy5cbiAgMTc6XHRcbiAgMTg6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBzdDIxbmZjYV9pMmMuXG4gIDE5Olx0XHQgIFNheSBOIGlmIHVuc3VyZS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgwMwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgTkZDIGRyaXZlciBzZXR1cC4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoaW5ncy4gSW1wbGljaXRseSwgdGhhdCBhbHNvIG1lYW5zIEkmIzM5O20gYWN0aXZhdGluZyBgTkZDX1NUMjFORkNBYCwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LiBJIHNlZSB0aGF0IGBORkNfSENJYCBhbmQgYE5GQ19TSERMQ2AgYXJlIGFsc28gZGVwZW5kZW5jaWVzIOKAkyBtYWtlcyBzZW5zZTsgdGhvc2UgYXJlIHByZXR0eSBzdGFuZGFyZCBORkMgcHJvdG9jb2wgbGF5ZXJzLgoKSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyB0aGF0IG1pZ2h0IGNvbWUgaW50byBwbGF5IG9yIGludGVyYWN0IHdpdGggdGhlc2Ugc2V0dGluZ3MuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4KCkFoLCB0aGUgcGF0Y2ggSSYjMzk7bSBleGFtaW5pbmcgbW9kaWZpZXMgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jYC4gSW50ZXJlc3RpbmcuIFRoZSByZWFsIHF1ZXN0aW9uIG5vdyBpcyB3aGV0aGVyIHRoZSBjb21waWxhdGlvbiBvZiB0aGF0IGBkZXAuY2AgZmlsZSBpcyBjb25kaXRpb25hbCBiYXNlZCBvbiBhbnkgb3RoZXIgY29uZmlnIHNldHRpbmdzLiBUaGF0IHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgdGllcyB0b2dldGhlciBhbmQgd2hldGhlciB0aGUgZGVwZW5kZW5jeSBpbXBsaWNhdGlvbnMgZXh0ZW5kIHRvIHRoZSBjb21waWxlZCBtb2R1bGVzIGFuZCBub3QganVzdCB0aGUgZGVmaW5pdGlvbnMuIFRoaXMgaXMgdGhlIGNydXggb2YgdGhlIG1hdHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIE1ha2VmaWxlIGZvciBTVDIxTkZDQSBIQ0kgYmFzZWQgTkZDIGRyaXZlclxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRzdDIxbmZjYV9oY2ktb2JqcyA9IGNvcmUubyBkZXAubyBzZS5vIHZlbmRvcl9jbWRzLm9cbiAgIDc6XHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgICAgJiM0Mzs9IHN0MjFuZmNhX2hjaS5vXG4gICA4Olx0XG4gICA5Olx0c3QyMW5mY2FfaTJjLW9ianMgID0gaTJjLm9cbiAgMTA6XHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBX0kyQykgJiM0Mzs9IHN0MjFuZmNhX2kyYy5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNTMKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAyMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKgoKT2theSwgc28gYGRlcC5vYCBpcyBjbGVhcmx5IHBhcnQgb2YgdGhlIGBzdDIxbmZjYV9oY2kub2AgbW9kdWxlLiBJIHJlbWVtYmVyLCBpZiBgQ09ORklHX05GQ19TVDIxTkZDQWAgaXMgZW5hYmxlZCwgdGhlbiB0aGlzIG1vZHVsZSBnZXRzIGJ1aWx0LiBSaWdodCwgYW5kIGBDT05GSUdfTkZDX1NUMjFORkNBYCBpcyBzZWxlY3RlZCBieSBgQ09ORklHX05GQ19TVDIxTkZDQV9JMkNgLiBUaGVyZWZvcmUsIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgZW5hYmxpbmcgdGhpcyB3aG9sZSB0aGluZy4gVGhhdCBtYWtlcyBzZW5zZSwga2VlcHMgaXQgY2xlYW4gYW5kIHRhcmdldGVkLgoKTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gdGhlIGFjdHVhbCBjb2RlIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIEhtbSwgdHJhY2luZyBiYWNrd2FyZHMsIHRoYXQgZnVuY3Rpb24mIzM5O3MgY2FsbGVkIGJ5IGBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGFgLCBhbmQgKnRoYXQqIG9uZSBpcyBjYWxsZWQgYnkgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAuIEV4Y2VsbGVudC4gU28gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgYSB2ZXJ5IGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGludmVzdGlnYXRpb24sIGFzIGl0JiMzOTtzIGRpcmVjdGx5IGltcGFjdGVkLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAgYW5kIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIHRvbyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZ1bGx5LiBJIHRoaW5rIEkmIzM5O2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFRoYXQmIzM5O3MgdGhlIGJlc3QgYXBwcm9hY2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0MjFuZmNhLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0xMzg9c3RhdGljIGludCBzdDIxbmZjYV90bV9zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTE4Ny1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjE4ODpzdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuLS1cbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2MC1cdFx0Y2FzZSBTVDIxTkZDQV9ORkNJUDFfQVRSX1JFUTpcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM2MTpcdFx0XHRyID0gc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKGhkZXYsIHNrYik7XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNjItXHRcdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEyIDAwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjc2CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDMwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1QyMU5GQ0EgTkZDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbi4gQW5kIHRoZSBvdGhlciBmdW5jdGlvbiBpbiBwbGF5LCBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgaXMgYWxzbyBzdGF0aWMuIEhvd2V2ZXIsIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzIGFub3RoZXIgcG9pbnQgb2YgaW50ZXJlc3QsIGJ1dCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCBJJiMzOTtsbCBmb2N1cyBvbiB0aGUgZmlyc3QgZnVuY3Rpb24uIEkgY2FuIGFkZCBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCB0byBGb2N1c1N5bWJvbHMgdG8gaGlnaGxpZ2h0IGl0IGZvciBmdXp6aW5nLgoKTm93LCBsZXQgbWUgcmV2aWV3IHRoZSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZC4gSSBzZWUgYE5GQ19TVDIxTkZDQV9JMkNgIGFuZCBgTkZDX1NUMjFORkNBYC4gVGhlIGxhdHRlciBpcyBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5LCBidXQgaXQgZG9lc24mIzM5O3QgaHVydCB0byBiZSBleHBsaWNpdCBhbmQgaW5jbHVkZSBpdC4KCldhaXQsIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlncz8gT2theSwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdgIGZpbGUgYWdhaW4uLi4gWWVzLCBoZXJlIGl0IGlzLCBgTkZDX1NUMjFORkNBX0kyQ2AgZGVwZW5kcyBvbiBgTkZDX0hDSSAmYW1wOyZhbXA7IEkyQyAmYW1wOyZhbXA7IE5GQ19TSERMQ2AuIEdpdmVuIHRoYXQgdGhpcyBpcyBhbiBJMkMgaW1wbGVtZW50YXRpb24gYW5kIGludm9sdmVzIEhDSSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBgTkZDX1NUMjFORkNBX0kyQ2AuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgY292ZXJzIHRoZSBhcHByb3ByaWF0ZSBpbnN0YW50aWF0aW9uIG1ldGhvZC4KCkFscmlnaHQsIHRpbWUgdG8gZm9ybXVsYXRlIG15IHJlc3BvbnNlLiBJdCYjMzk7cyBsb29raW5nIGxpa2UgYSBzb2xpZCBmdXp6aW5nIHRhcmdldCwgc28gSSYjMzk7bGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBjbGVhcmx5IGluY2x1ZGUgYCYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDtgIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9uLiBBbmQsIHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBJMkMgY29uZmlndXJhdGlvbiBhbmQgSENJIHRvIGJlIHNldHVwLCB0aGUgcGF0Y2ggd2lsbCByZXF1aXJlIG1lIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYFsmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0O11gLiBUaGUga2V5IHJlYXNvbmluZywgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIEFUUiByZXF1ZXN0IGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB1c2VkIHZpYSBJMkMsIGFuZCBpdHMgSENJIGV2ZW50cyBhcmUgYSBjbGVhciBhdmVudWUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTIgMDA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQ19TVDIxTkZDQV9JMkMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJiMzOTtzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkNfU1QyMU5GQ0FfSTJDJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gZml4IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgU1QyMU5GQ0EgTkZDIGRyaXZlciYjMzk7cyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjE1LjM0ODU5NzIzOFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzM4ODM0ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ19TVDIxTkZDQV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGZpeCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIncyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MTUuMzQ4NjAyOTA5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI3MDg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDEyIDAwOjMzOjE0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcXG5pbmRleCAzNDI1YjY4ZjBkZGNmZS4uYTVmYWI0ZmQ1MTI5ZGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xcbkBAIC0yMDUsNiArMjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbiBcXHRpZiAoYXRyX3JlcS1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxKSlcXG4gXFx0XFx0cmV0dXJuIC1FUFJPVE87XFxuIFxcbitcXHRpZiAoYXRyX3JlcS1cXHUwMDNlbGVuZ3RoIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4pXFxuK1xcdFxcdHJldHVybiAtRVBST1RPO1xcbitcXG4gXFx0ciA9IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhoZGV2LCBhdHJfcmVxKTtcXG4gXFx0aWYgKHIpXFxuIFxcdFxcdHJldHVybiByO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoxNS44MTIwNzQwNjlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODc1MzQ3OTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ19TVDIxTkZDQV9JMkNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbGVuZ3RoIGNoZWNrIHRvIGZpeCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIncyBBVFIgcmVxdWVzdCBoYW5kbGluZyAoc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKS4gVGhlIGRyaXZlciBjYW4gYmUgaW5zdGFudGlhdGVkIHZpYSBJMkMgYW5kIGl0cyBIQ0kgZXZlbnRzIGNhbiBiZSBmdXp6ZWQsIG1ha2luZyB0aGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3Y2JkOGRkNDk3ZWFmZDJhMjc4ZGZiYmMyZWQ5ZTNhNWY4MmM4MmE1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTIgMDA6MzM6MTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYyBiL2RyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jXG5pbmRleCAzNDI1YjY4ZjBkZGNmZS4uYTVmYWI0ZmQ1MTI5ZGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNcbkBAIC0yMDUsNiArMjA1LDkgQEAgc3RhdGljIGludCBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxuIFx0aWYgKGF0cl9yZXEtXHUwMDNlbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpKVxuIFx0XHRyZXR1cm4gLUVQUk9UTztcbiBcbitcdGlmIChhdHJfcmVxLVx1MDAzZWxlbmd0aCBcdTAwM2Ugc2tiLVx1MDAzZWxlbilcbitcdFx0cmV0dXJuIC1FUFJPVE87XG4rXG4gXHRyID0gc3QyMW5mY2FfdG1fc2VuZF9hdHJfcmVzKGhkZXYsIGF0cl9yZXEpO1xuIFx0aWYgKHIpXG4gXHRcdHJldHVybiByO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MTUuODEyMDc1MTI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MjQzMzIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jYC4gSXQgc2VlbXMgdGhleSd2ZSBhZGRlZCBhIGxlbmd0aCBjaGVjayB3aXRoaW4gYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIFNwZWNpZmljYWxseSwgdGhleSdyZSB2ZXJpZnlpbmcgdGhhdCB0aGUgbGVuZ3RoIHByb3ZpZGVkIGluIHRoZSBgYXRyX3JlcWAgc3RydWN0dXJlIGlzICpub3QqIGdyZWF0ZXIgdGhhbiB0aGUgYWN0dWFsIGxlbmd0aCBvZiB0aGUgcmVjZWl2ZWQgYnVmZmVyLCB3aGljaCBpcyBpbiBgc2tiLVx1MDAzZWxlbmAuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIHRyeWluZyB0byBwcmV2ZW50IGEgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBvciBzb21lIGtpbmQgb2YgZGF0YSBjb3JydXB0aW9uLiBUaGUgY29kZSBhbHJlYWR5IGRvZXMgYSBtaW5pbXVtIGxlbmd0aCBjaGVjaywgbWFraW5nIHN1cmUgdGhlIHJlcXVlc3QgaXMgYXQgbGVhc3QgdGhlIHNpemUgb2YgYHN0cnVjdCBzdDIxbmZjYV9hdHJfcmVxYCwgYnV0IHRoaXMgaXMgYSAqbWF4aW11bSogY2hlY2suXG5cbk5vdywgbXkgaW5zdGluY3QgaXMgdG8gZGlnIGRlZXBlci4gSSB3YW50IHRvIHNlZSAqd2h5KiB0aGlzIHdhcyBhZGRlZC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdnVsbmVyYWJpbGl0eSBpZGVudGlmaWVkPyBJcyB0aGlzIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUgdHJpZ2dlcmVkIGJ5IGEgc3BlY2lmaWMgZnV6emluZyByZXN1bHQ/IFdoYXQncyB0aGUgY29udGV4dD8gU28sIGxldCdzIGdvIGJhY2sgYW5kIGV4YW1pbmUgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgcHJvY2Vzc2VzIHRoZSBkYXRhLCB3aGF0IG90aGVyIGNoZWNrcyBhcmUgaW4gcGxhY2UsIGFuZCBob3cgdGhlIGxlbmd0aCB2YWx1ZSBpcyBhY3R1YWxseSB1c2VkIGRvd25zdHJlYW0uIEFuZCBvZiBjb3Vyc2UsIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLCBhbmQgaG93IHRoZXkgaGFuZGxlIHRoZSBkYXRhLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIGdyYXBoIHdpbGwgcmVhbGx5IGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgcmlzayBwcm9maWxlIGhlcmUuIEnigJlsbCBjaGVjayB0aGUgdXBzdHJlYW0gY29kZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgaXNzdWVzIG9yIGRpc2N1c3Npb25zLiBJJ2xsIGFsc28gd2FudCB0byBsb29rIGF0IHByZXZpb3VzIGNvbW1pdHMgdG8gc2VlIGlmIHRoaXMgaXMgcmVsYXRlZCB0byBhbnkgcHJpb3Igc2VjdXJpdHkgZml4ZXMgb3IgcG90ZW50aWFsIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjIwLjIwNDUxMDM2MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDg5MDMwMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0xMzg9c3RhdGljIGludCBzdDIxbmZjYV90bV9zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg3LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjE4ODpzdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMTg5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM9MzQ5PXN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM2MC1cXHRcXHRjYXNlIFNUMjFORkNBX05GQ0lQMV9BVFJfUkVROlxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jOjM2MTpcXHRcXHRcXHRyID0gc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKGhkZXYsIHNrYik7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYyLVxcdFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyMS4xNTM0MTg1MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTYzMTk2NzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBEYXRhIEZsb3cgaW4gdGhlIFNUMjFORkNBIE1vZHVsZSoqXG5cbkFscmlnaHQsIHNvIEknbSBjdXJyZW50bHkgZGlnZ2luZyBpbnRvIHRoZSBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgaXRzIGNhbGxpbmcgY29udGV4dC4gSXQncyBjYWxsZWQgZnJvbSBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgd2hpY2ggaW1tZWRpYXRlbHkgc3VnZ2VzdHMgYSBjaGFpbiBvZiBldmVudHMgcmVsYXRlZCB0byBkYXRhIHRyYW5zbWlzc2lvbiwgbW9zdCBsaWtlbHkgaW52b2x2aW5nIEFUUiAoQW5zd2VyIHRvIFJlc2V0KSByZXF1ZXN0cyB3aXRoaW4gYW4gTkZDIGNvbnRleHQuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYC4gTXkgZm9jdXMgc2hpZnRzIHRvIHBpbnBvaW50aW5nICppdHMqIGNhbGwgc2l0ZXMgdG8gc2VlIHdoYXQgdGhlIHByZWNlZGluZyBjb25kaXRpb25zIGFyZSB0aGF0IHVsdGltYXRlbHkgbGVhZCB0byBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBiZWluZyBleGVjdXRlZC4gVGhpcyB3aWxsIHJldmVhbCB0aGUgY29tcGxldGUgcHJvY2Vzc2luZyBmbG93IGFuZCBhbnkgcG90ZW50aWFsIHRpbWluZyBkZXBlbmRlbmNpZXMgb3IgaW50ZXJydXB0IHNjZW5hcmlvcyB3aGljaCBjb250cmlidXRlIHRvIHRoZSB0cmlnZ2VyaW5nIG9mIEFUUiByZXF1ZXN0cy4gS25vd2luZyB0aGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGJlaGF2aW9yIG9mIHRoZSBORkMgY29tbXVuaWNhdGlvbiBzdGFjayBhdCB0aGlzIGxheWVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MjQuMzE2NjE3MTgzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODI4ODE1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTMwNz1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNDgtXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzQ5OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNTAtXFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM4ND1pbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQwMi1cXHRjYXNlIFNUMjFORkNBX0VWVF9TRU5EX0RBVEE6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDAzOlxcdFxcdHIgPSBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoaGRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MDQtXFx0XFx0aWYgKHIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyNC40MjQ5MTQ4NzVaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzQ5MzQ1NTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBmdW5jdGlvbiBjYWxsOlxuXG4qKlVuZGVyc3RhbmRpbmcgdGhlIE9yaWdpbnMgb2YgYHN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZGAqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIHRoZSBvcmlnaW4gb2YgdGhlIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGZ1bmN0aW9uIGNhbGwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGNvbnRleHQgLSB3aGVyZSBkb2VzIHRoaXMgZnVuY3Rpb24gZ2V0IGludm9rZWQgZnJvbT8gSXMgaXQgcGFydCBvZiB0aGUgY29yZSBORkMgc3RhY2ssIGEgc3BlY2lmaWMgZHJpdmVyLCBvciBzb21lIGhpZ2hlci1sZXZlbCBhYnN0cmFjdGlvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uJ3MgcmVzcG9uc2liaWxpdHkgYW5kIGl0cyBwb3NpdGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZSB0byBmdWxseSBncmFzcCB0aGUgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBhbSBsb29raW5nIGZvciB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBpcyB2aXRhbCBmb3IgZGVidWdnaW5nIG9yIG1vZGlmaWNhdGlvbnMuIEl0J3MgcmVhbGx5IHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IHNlcmlvdXMgaW52ZXN0aWdhdGlvbiwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNzMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzoyNy4xNzQyNjIxOTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0MDU5MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0MjFuZmNhX2RlcF9ldmVudF9yZWNlaXZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jPTg4OT1zdGF0aWMgaW50IHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IHBpcGUsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtOTAwLVxcdGNhc2UgU1QyMU5GQ0FfUkZfQ0FSRF9GX0dBVEU6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkwMTpcXHRcXHRyZXR1cm4gc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKGhkZXYsIGV2ZW50LCBza2IpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy05MDItXFx0Y2FzZSBTVDIxTkZDQV9DT05ORUNUSVZJVFlfR0FURTpcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTM0OT1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YShzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zODMtICovXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6Mzg0OmludCBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWQoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTM4NS1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jLTQxMy19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6NDE0OkVYUE9SVF9TWU1CT0woc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy00MTUtXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oPTE3MT12b2lkIHN0MjFuZmNhX2hjaV9yZW1vdmUoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2KTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3Mi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oOjE3MzppbnQgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9zdDIxbmZjYS5oLTE3NC1cXHRcXHRcXHRcXHR1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjI3LjM5ODMyNTE4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyODE0MzYwNDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLCByZW5kZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBgbmZjX2hjaV9vcHNgIENhbGxiYWNrKipcblxuUmlnaHQsIGBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRgLiBMZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJBaCwgdGhhdCdzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgbmZjX2hjaV9vcHNgIHN0cnVjdHVyZS5cIiBUaGlzIHRlbGxzIG1lIGl0J3MgcGFydCBvZiB0aGUgbG93LWxldmVsIGludGVyZmFjZSBmb3IgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciwgcHJlc3VtYWJseSBhIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQS4gVGhlIG5hbWluZyBjb252ZW50aW9uIHN0cm9uZ2x5IHN1Z2dlc3RzIGl0J3MgZGVzaWduZWQgdG8gYmUgaW52b2tlZCB3aGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkIGZyb20gdGhlIEhDSSAoSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSkgbGF5ZXIuIFRoZSBuYW1pbmcgaGludHMgaXQncyBwYXJ0IG9mIGFuIG9wZXJhdGlvbiBzdHJ1Y3QsIGxpa2VseSB1c2VkIHRvIGltcGxlbWVudCBhIGdlbmVyaWMgbGF5ZXIgb2YgYWJzdHJhY3Rpb24gZm9yIGludGVyYWN0aW5nIHdpdGggZGlmZmVyZW50IE5GQyBoYXJkd2FyZS5cblxuVGhlcmVmb3JlLCBpdCdzIHNhZmUgdG8gZGVkdWNlIHRoYXQgdGhlIGBuZmNfaGNpX29wc2Agc3RydWN0dXJlIGxpa2VseSBjb250YWlucyBmdW5jdGlvbiBwb2ludGVycyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gdGhlIE5GQyBjb250cm9sbGVyLiBUaGUgYHN0MjFuZmNhX2hjaV9ldmVudF9yZWNlaXZlZGAgY2FsbGJhY2sgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGhhbmRsZSBhbmQgcHJvY2VzcyBpbmJvdW5kIGV2ZW50cyBmcm9tIHRoZSBIQ0kgbGF5ZXIgb2YgdGhlIFNUMjFORkNBIGNoaXAuIFRoaXMgY2FsbGJhY2sgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHRvIG1hbmFnZSBpbmNvbWluZyBldmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNTMsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzozMC42Nzk3NjI5OTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzE4NzYxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz04NTY9c3RhdGljIGludCBzdDIxbmZjYV9hZG1pbl9ldmVudF9yZWNlaXZlZChzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsIHU4IGV2ZW50LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTg4OC0gKi9cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6ODg5OnN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2V2ZW50X3JlY2VpdmVkKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldiwgdTggcGlwZSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtODkwLVxcdFxcdFxcdFxcdCAgICAgICB1OCBldmVudCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkyOC1cXHQuY2hlY2tfcHJlc2VuY2UgPSBzdDIxbmZjYV9oY2lfY2hlY2tfcHJlc2VuY2UsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjkyOTpcXHQuZXZlbnRfcmVjZWl2ZWQgPSBzdDIxbmZjYV9oY2lfZXZlbnRfcmVjZWl2ZWQsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzMC1cXHQuY21kX3JlY2VpdmVkID0gc3QyMW5mY2FfaGNpX2NtZF9yZWNlaXZlZCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MzAuNzkyOTU2MDk4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjU0MTI0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5GQyBkcml2ZXIsIGFuZCB0aGUgYGV2ZW50X3JlY2VpdmVkYCBjYWxsYmFjayBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgZm9yIGhhbmRsaW5nIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgaGFyZHdhcmUsIHNvIGl04oCZcyBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBhY3R1YWxseSBmdXp6IGl0IGVmZmVjdGl2ZWx5P1xuXG5UaGUgZ29vZCBuZXdzIGlzIHRoYXQgc3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgTkZDIGZ1enppbmcgY2FwYWJpbGl0aWVzLCBlc3BlY2lhbGx5IHdpdGggaXRzIHZpcnR1YWwgZGV2aWNlIHN1cHBvcnQsIGxldmVyYWdpbmcgTkNJL0hDSS4gV2FpdCwgaXMgdGhpcyBhbiBOQ0kgb3IgYW4gSENJIGltcGxlbWVudGF0aW9uPyBJdCBsb29rcyBsaWtlIGl04oCZcyB1c2luZyBgbmZjX2hjaV9vcHNgLCBzbyBsZXQncyB2ZXJpZnkgdGhhdCBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LlxuXG5BbHJpZ2h0LCB0aGUgc3BlY2lmaWMgZHJpdmVyIGluIHF1ZXN0aW9uIGlzIGBzdDIxbmZjYWAuIFRoaXMgaXMgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZywgaXMgaXQgYSB2aXJ0dWFsIGRyaXZlciwgb3IgYW4gYWN0dWFsIGhhcmR3YXJlIGRyaXZlcj8gRnJvbSB0aGUgbmFtZSwgaXQgbG9va3MgbGlrZSBpdOKAmXMgYSByZWFsIGhhcmR3YXJlIGRyaXZlciBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQSBORkMgY2hpcC4gSWYgaXQncyByZWFsIGhhcmR3YXJlLCB0aGluZ3MgYXJlIHVzdWFsbHkgdHJpY2tpZXIuIFN5emthbGxlciBnZW5lcmFsbHkgc3RydWdnbGVzIHRvIGZ1enogaGFyZHdhcmUgZHJpdmVycyBkaXJlY3RseSB1bmxlc3MgdGhlcmUncyBhIHZpcnR1YWwgaW50ZXJmYWNlIG9yIGl0J3MgYXR0YWNoZWQgdmlhIGEgZnV6emVkIGJ1cyBsaWtlIFVTQiBvciBJMkMuXG5cblNvLCBsZXQncyBzZWUsIHdoYXQga2luZCBvZiBjb25uZWN0aW9uIGlzIHVzZWQgYnkgdGhlIGBzdDIxbmZjYWAgZHJpdmVyLiBUaGF0IHdpbGwgYmUgdGhlIGRldGVybWluaW5nIGZhY3RvciBpbiB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgZnJ1aXRmdWwgZnV6emluZyB0YXJnZXQsIG9yIGlmIHdlIG5lZWQgdG8gZG8gc29tZSBtb3JlIHdvcmsgdG8gbWFrZSBpdCByZWFjaGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MDEsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6MzUuNjU4MzcwNzI5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDkxNTQ3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYz05MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfaGNpX29wcyBzdDIxbmZjYV9oY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzNi1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmM6OTM3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jLTkzOC1cXHRcXHQgICAgICAgY2hhciAqbGxjX25hbWUsIGludCBwaHlfaGVhZHJvb20sIGludCBwaHlfdGFpbHJvb20sXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9jb3JlLmMtMTAyMS19XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvY29yZS5jOjEwMjI6RVhQT1JUX1NZTUJPTChzdDIxbmZjYV9oY2lfcHJvYmUpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2NvcmUuYy0xMDIzLVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM9NDg5PXN0YXRpYyBpbnQgc3QyMW5mY2FfaGNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTQ2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jOjU0NzpcXHRyID0gc3QyMW5mY2FfaGNpX3Byb2JlKHBoeSwgXFx1MDAyNmkyY19waHlfb3BzLCBMTENfU0hETENfTkFNRSxcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYy01NDgtXFx0XFx0XFx0ICAgICAgIFNUMjFORkNBX0ZSQU1FX0hFQURST09NLFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaD0xNDc9c3RydWN0IHN0MjFuZmNhX2hjaV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmgtMTY2LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL3N0MjFuZmNhLmg6MTY3OmludCBzdDIxbmZjYV9oY2lfcHJvYmUodm9pZCAqcGh5X2lkLCBjb25zdCBzdHJ1Y3QgbmZjX3BoeV9vcHMgKnBoeV9vcHMsXFxuZHJpdmVycy9uZmMvc3QyMW5mY2Evc3QyMW5mY2EuaC0xNjgtXFx0XFx0ICAgICAgIGNoYXIgKmxsY19uYW1lLCBpbnQgcGh5X2hlYWRyb29tLCBpbnQgcGh5X3RhaWxyb29tLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzozNS43MTkyOTM5MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjI2ODcwODMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVDIxTkZDQSBJMkMgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBzdDIxbmZjYV9oY2lfaTJjX3Byb2JlYCBmdW5jdGlvbi4gSXQncyBhbiBJMkMgZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBmdXp6aW5nIGl0IHdpdGggU3l6a2FsbGVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHRocm91Z2ggYC9kZXYvaTJjLSpgLCBob3BpbmcgdG8gc2ltcGx5IHRhcmdldCB0aGUgaW5zdGFudGlhdGVkIGRldmljZS4gSG93ZXZlciwgSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IEkyQyBkcml2ZXJzIGFyZW4ndCAqYWx3YXlzKiB0cml2aWFsIHRvIGhpdCB3aXRoIFN5emthbGxlciwgd2hpY2ggZGVwZW5kcyBvbiBpbnN0YW50aWF0aW9uLiBJJ20gcmVjYWxsaW5nIHRoYXQgU3l6a2FsbGVyICptaWdodCogaGF2ZSBzb21lIGBzeXpfaTJjX3NldHVwYCBvciBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksIG9yIHJlbHkgb24gdmlydHVhbCBJMkMgYWRhcHRlcnMsIG9yIHNvbWV0aGluZyB0aHJvdWdoIGBpMmMtZGV2YCwgd2hpY2ggSSBzaG91bGQgbG9vayBpbnRvLiBObywgdGhhdCBkb2VzIG5vdCBzZWVtIHRvIGJlIHRoZSBjYXNlLiBJIG5lZWQgdG8gZ2V0IHRoaXMgZGV2aWNlIGluc3RhbnRpYXRlZC5cblxuVGhlbiwgSSdtIHNlY29uZC1ndWVzc2luZyBteXNlbGYuIERvZXMgU3l6a2FsbGVyIHVzZSBgdmhjaWAgZm9yIEkyQz8gTm8sIHRoYXQncyBCbHVldG9vdGgsIGFjdHVhbGx5LiBUaGlzIGlzIE5GQyBIQ0kgc3BlY2lmaWNhbGx5LiBBaCwgd2FpdCBhIG1pbnV0ZSwgTkZDIGhhcyBgbmZjc2ltYCBmb3IgdmlydHVhbCBkZXZpY2VzLCBidXQgdGhhdCdzIG5vdCByZWxldmFudCBoZXJlIGJlY2F1c2UgdGhpcyBpcyBhICpzcGVjaWZpYyogaGFyZHdhcmUgZHJpdmVyLCBgc3QyMW5mY2FgLlxuXG5TbywgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCBgc3QyMW5mY2FgIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IElmIGl0J3MgYW4gSTJDIGRyaXZlciwgdGhlbiBpdCAqc2hvdWxkKiBiZSBwcm9iZS1hYmxlLCByaWdodD8gTGV0J3MgYXNzdW1lIHRoYXQgSSBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UgdmlhIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYC4gVGhlIG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIGNoZWNrIGlmIEkgY2FuIGluc3RhbnRpYXRlIGBzdDIxbmZjYWAgdXNpbmcgdGhhdCBtZXRob2QuIFRoYXQncyB0aGUga2V5IHRvIGdldHRpbmcgdGhpcyBkcml2ZXIgdW5kZXIgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkyOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo0MS45ODgwMDQxMjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjY3NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV9oY2lfaTJjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmM9NTkxPU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0MjFuZmNhX2kyY19tYXRjaCk7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTkyLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jOjU5MzpzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvaTJjLmMtNTk0LVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYy02MDItfTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9pMmMuYzo2MDM6bW9kdWxlX2kyY19kcml2ZXIoc3QyMW5mY2FfaGNpX2kyY19kcml2ZXIpO1xcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL2kyYy5jLTYwNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NDIuMTkwNjg0NzE0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDY2MTI5MjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIGFuZCBTeXprYWxsZXIncyBGaW5kaW5ncyoqXG5cbk9rYXksIHNvIHRoaXMgY29kZSBzbmlwcGV0IGRlZmluZXMgYW4gSTJDIGRyaXZlciwgYHN0MjFuZmNhX2hjaV9pMmNfZHJpdmVyYCwgd2hpY2ggaXMgZ29vZC4gSSBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBuYW1lLCBPRi9BQ1BJIG1hdGNoaW5nIHRhYmxlcywgcHJvYmUsIHJlbW92ZSwgYW5kIGFuIElEIHRhYmxlLiBTdGFuZGFyZCBzdHVmZi4gVGhlIGZhY3QgdGhhdCBpdCdzIHJlZ2lzdGVyZWQgYXMgYW4gSTJDIGRyaXZlciBpcyBpbXBvcnRhbnQuIE5vdywgSSByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgdGhlc2UgSTJDIGRldmljZXMsIHdyaXRpbmcgdG8gdGhlIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtKi9uZXdfZGV2aWNlYCBwYXRoLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIHRoZSBhdXRob3Igb2YgdGhlIHBhdGNoIGlzIGxpc3RlZCBhcyBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgLiBCaW5nbyEgVGhpcyBjb25maXJtcyB0aGF0IFN5emthbGxlciAqZGlkKiBmaW5kIGEgYnVnIHJlbGF0ZWQgdG8gdGhpcyBkcml2ZXIuIElmIFN5emthbGxlciBmb3VuZCBpdCwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB3aXRoaW4gaXRzIHRlc3QgZW52aXJvbm1lbnQuIFRoYXQncyBrZXkuXG5cbkxldCdzIGRpdmUgaW50byB0aGUgcGF0Y2ggaXRzZWxmLiBBaCwgaGVyZSdzIHRoZSBmaXg6IHRoZXkncmUgYWRkaW5nIGEgbGVuZ3RoIGNoZWNrLiBTcGVjaWZpY2FsbHksIHRoZXkncmUgbm93IGNoZWNraW5nIGlmIGBhdHJfcmVxLVx1MDAzZWxlbmd0aGAgaXMgbGVzcyB0aGFuIGBzaXplb2Yoc3RydWN0IHN0MjFuZmNhX2F0cl9yZXEpYCBhbmQgdGhlbiBjaGVja2luZyBpZiBgYXRyX3JlcS1cdTAwM2VsZW5ndGhgIGlzIGdyZWF0ZXIgdGhhbiBgc2tiLVx1MDAzZWxlbmAuIFRoaXMgaXMgYSBjbGFzc2ljIHByb3RlY3Rpb24gYWdhaW5zdCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uLlxuXG5HaXZlbiB0aGF0IFN5emthbGxlciBmb3VuZCBpdCwgdGhlIGNvZGUgaXMgcmVhY2hhYmxlLCBhbmQgdGhlcmUncyBhIGNsZWFyIGZpeCBmb3IgYW4gaXNzdWUgKGxpa2VseSBhbiBPT0IgcmVhZCksIHRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIGZsYWcgYXMgXCJXb3J0aEZ1enppbmc9dHJ1ZVwiLiBJdCdzIGEgYnVnIHRoYXQgU3l6a2FsbGVyIGNvdWxkIHRyaWdnZXIgYW5kIGl0J3MgYmVlbiBhZGRyZXNzZWQsIGluZGljYXRpbmcgaXQgaXMgZnVuY3Rpb25hbCBhbmQgZXhwbG9pdGFibGUuXG5cbk5vdywgbGV0J3MgZmlndXJlIG91dCB3aGF0IENPTkZJRyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBkcml2ZXIgYW5kIG1ha2Ugc3VyZSB0aGUgYnVnIGlzIHJlcHJvZHVjaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Njk1MCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo0OC4yMzcyOTkzMjJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDM4MDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX1NUMjFORkNBXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1QyMU5GQ0FcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjMzOjQ4LjM0NzY4MzEwM1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM3NTQzNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCBwcm9jZXNzaW5nIHRoZSBgZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ2AgZmlsZTpcblxuKipEaXZpbmcgaW50byB0aGUgU1QyMU5GQ0EgS2NvbmZpZyoqXG5cbkFscmlnaHQsIGxldCdzIHRha2UgYSBsb29rIGF0IHRoaXMgYEtjb25maWdgIGZpbGUgZm9yIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGNvbnRyb2xsZXIgZHJpdmVyLiBUaGUgc3RydWN0dXJlIGxvb2tzIHByZXR0eSBzdGFuZGFyZCwgc28gSSBleHBlY3QgYSB3ZWxsLWRlZmluZWQgaGllcmFyY2h5IG9mIG9wdGlvbnMgcmVsYXRlZCB0byBlbmFibGluZyBhbmQgY29uZmlndXJpbmcgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIEknbSBpbW1lZGlhdGVseSBzY2FubmluZyBmb3IgdGhlIGBjb25maWdgIHN0YXRlbWVudHMg4oCTIHRob3NlIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlci4gSSdtIGxvb2tpbmcgZm9yIHRoZSBjb3JlIG9wdGlvbiB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgdGhlIFNUMjFORkNBIGRyaXZlciBnZXRzIGNvbXBpbGVkIGluIGF0IGFsbC4gSXQgd2lsbCBsaWtlbHkgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgYW5kIGRlcGVuZCBvbiBvdGhlciBzZXR0aW5ncywgcG90ZW50aWFsbHkgcmVsYXRlZCB0byB0aGUgb3ZlcmFsbCBORkMgc3Vic3lzdGVtIG9yIGV2ZW4gc3BlY2lmaWMgcGxhdGZvcm0gc3VwcG9ydC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBgZGVwZW5kcyBvbmAgY2xhdXNlcy4gVGhlc2Ugd2lsbCB0ZWxsIG1lIHRoZSBwcmUtcmVxdWlzaXRlcyDigJMgd2hpY2ggb3RoZXIga2VybmVsIGZlYXR1cmVzIG11c3QgYmUgZW5hYmxlZCBiZWZvcmUgdGhpcyBkcml2ZXIgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyB3aWxsIGluZm9ybSBtZSBhYm91dCBob3cgdGhpcyBkcml2ZXIgaW50ZWdyYXRlcyBpbnRvIHRoZSBsYXJnZXIga2VybmVsIGVjb3N5c3RlbS5cblxuSSBhbHNvIGV4cGVjdCB0byBzZWUgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgcGVyaGFwcyBldmVuIGBpbnRgIG9wdGlvbnMgZm9yIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXIncyBiZWhhdmlvdXIuIEknbSBrZWVuIHRvIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGNob2ljZXMgZm9yIGRpZmZlcmVudCBtb2RlcyBvZiBvcGVyYXRpb24sIHN1Y2ggYXMgdmFyaW91cyBwb3dlci1zYXZpbmcgc2NoZW1lcywgb3IgZGVidWcgZmVhdHVyZXMuIEknbGwgYmUgbG9va2luZyBmb3IgY29tbWVudHMg4oCTIGhvcGVmdWxseSwgdGhleSdyZSBpbmZvcm1hdGl2ZSBhbmQgY2xlYXJseSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLiBHb29kIGRvY3VtZW50YXRpb24gaXMgY3J1Y2lhbCwgZXNwZWNpYWxseSBpbiBhIGRyaXZlci5cblxuRnVydGhlcm1vcmUsIEkgYW0gbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIHRoZSBjb25maWcgb3B0aW9ucyBtaWdodCBoYXZlLCB0aGVzZSB2YWx1ZXMgaGVscCBtZSB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyBzZXR1cCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgY29uZmxpY3RzIHdpdGggb3RoZXIgc3lzdGVtIGNvbmZpZ3VyYXRpb25zLiBGaW5hbGx5LCBJIHdpbGwgYmUgZXhwZWN0aW5nIHRvIHNlZSBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtb2R1bGUgYXMgYSB3aG9sZSwgd2hhdCB0aGlzIG1vZHVsZSBpcyBmb3IsIGFuZCB3aGVuIGl0IGlzIG5lZWRlZC5cblxuRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZ2V0IGEgZ29vZCB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgY29udHJvbCB0aGUga2VybmVsIHByb3ZpZGVzIG92ZXIgdGhpcyBzcGVjaWZpYyBORkMgY29udHJvbGxlciwgYW5kIGhvdyBlYXNpbHkgYW5kIHNhZmVseSBpdCBjYW4gYmUgaW50ZWdyYXRlZCBpbnRvIGEgc3lzdGVtLiBJIGFtIGhvcGluZyB0aGUgZmlsZSBpcyB3cml0dGVuIGNsZWFybHkgYW5kIGxvZ2ljYWxseTsgYSB3ZWxsLXN0cnVjdHVyZWQgYEtjb25maWdgIGZpbGUgaXMgYSBwbGVhc3VyZSB0byByZWFkIVxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTk1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTIuNTg1MjI4NTYzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBORkNfU1QyMU5GQ0FcXG4gICAzOlxcdFxcdHRyaXN0YXRlXFxuICAgNDpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFNUTWljcm9lbGVjdHJvbmljcyBTVDIxTkZDQSBjb3JlIGRyaXZlci4gSXQgaW1wbGVtZW50cyB0aGUgY2hpcHNldFxcbiAgIDc6XFx0XFx0ICBIQ0kgbG9naWMgYW5kIGhvb2tzIGludG8gdGhlIE5GQyBrZXJuZWwgQVBJcy4gUGh5c2ljYWwgbGF5ZXJzIHdpbGxcXG4gICA4OlxcdFxcdCAgcmVnaXN0ZXIgYWdhaW5zdCBpdC5cXG4gICA5OlxcdFxcbiAgMTA6XFx0Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcXG4gIDExOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4gIDEyOlxcdFxcdGRlcGVuZHMgb24gTkZDX0hDSSBcXHUwMDI2XFx1MDAyNiBJMkMgXFx1MDAyNlxcdTAwMjYgTkZDX1NIRExDXFxuICAxMzpcXHRcXHRzZWxlY3QgTkZDX1NUMjFORkNBXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBzdDIxbmZjYSBpMmMgaW50ZXJmYWNlLlxcbiAgMTY6XFx0XFx0ICBTZWxlY3QgdGhpcyBpZiB5b3VyIHBsYXRmb3JtIGlzIHVzaW5nIHRoZSBpMmMgYnVzLlxcbiAgMTc6XFx0XFxuICAxODpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBzdDIxbmZjYV9pMmMuXFxuICAxOTpcXHRcXHQgIFNheSBOIGlmIHVuc3VyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTIuNTg1Mjg3MDEzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTY2ODE5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgTkZDIGRyaXZlciBzZXR1cC4gSXQgbG9va3MgbGlrZSBzZXR0aW5nIGBORkNfU1QyMU5GQ0FfSTJDYCBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoaW5ncy4gSW1wbGljaXRseSwgdGhhdCBhbHNvIG1lYW5zIEknbSBhY3RpdmF0aW5nIGBORkNfU1QyMU5GQ0FgLCB3aGljaCBpcyBnb29kIHRvIGtub3cgZm9yIGNvbnRleHQuIEkgc2VlIHRoYXQgYE5GQ19IQ0lgIGFuZCBgTkZDX1NIRExDYCBhcmUgYWxzbyBkZXBlbmRlbmNpZXMg4oCTIG1ha2VzIHNlbnNlOyB0aG9zZSBhcmUgcHJldHR5IHN0YW5kYXJkIE5GQyBwcm90b2NvbCBsYXllcnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgdGhhdCBtaWdodCBjb21lIGludG8gcGxheSBvciBpbnRlcmFjdCB3aXRoIHRoZXNlIHNldHRpbmdzLiBJIG5lZWQgdG8gYmUgdGhvcm91Z2guXG5cbkFoLCB0aGUgcGF0Y2ggSSdtIGV4YW1pbmluZyBtb2RpZmllcyBgZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmNgLiBJbnRlcmVzdGluZy4gVGhlIHJlYWwgcXVlc3Rpb24gbm93IGlzIHdoZXRoZXIgdGhlIGNvbXBpbGF0aW9uIG9mIHRoYXQgYGRlcC5jYCBmaWxlIGlzIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgc2V0dGluZ3MuIFRoYXQgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCB0aWVzIHRvZ2V0aGVyIGFuZCB3aGV0aGVyIHRoZSBkZXBlbmRlbmN5IGltcGxpY2F0aW9ucyBleHRlbmQgdG8gdGhlIGNvbXBpbGVkIG1vZHVsZXMgYW5kIG5vdCBqdXN0IHRoZSBkZWZpbml0aW9ucy4gVGhpcyBpcyB0aGUgY3J1eCBvZiB0aGUgbWF0dGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMlQwMDozMzo1Ni4zMDE5NzEyNjNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ2NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTWFrZWZpbGUgZm9yIFNUMjFORkNBIEhDSSBiYXNlZCBORkMgZHJpdmVyXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdHN0MjFuZmNhX2hjaS1vYmpzID0gY29yZS5vIGRlcC5vIHNlLm8gdmVuZG9yX2NtZHMub1xcbiAgIDc6XFx0b2JqLSQoQ09ORklHX05GQ19TVDIxTkZDQSkgICAgICs9IHN0MjFuZmNhX2hjaS5vXFxuICAgODpcXHRcXG4gICA5OlxcdHN0MjFuZmNhX2kyYy1vYmpzICA9IGkyYy5vXFxuICAxMDpcXHRvYmotJChDT05GSUdfTkZDX1NUMjFORkNBX0kyQykgKz0gc3QyMW5mY2FfaTJjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzM6NTYuMzAyMDM3MTMzWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTM0NTkxNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBORkMgRHJpdmVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKlxuXG5Pa2F5LCBzbyBgZGVwLm9gIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgYHN0MjFuZmNhX2hjaS5vYCBtb2R1bGUuIEkgcmVtZW1iZXIsIGlmIGBDT05GSUdfTkZDX1NUMjFORkNBYCBpcyBlbmFibGVkLCB0aGVuIHRoaXMgbW9kdWxlIGdldHMgYnVpbHQuIFJpZ2h0LCBhbmQgYENPTkZJR19ORkNfU1QyMU5GQ0FgIGlzIHNlbGVjdGVkIGJ5IGBDT05GSUdfTkZDX1NUMjFORkNBX0kyQ2AuIFRoZXJlZm9yZSwgYE5GQ19TVDIxTkZDQV9JMkNgIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBlbmFibGluZyB0aGlzIHdob2xlIHRoaW5nLiBUaGF0IG1ha2VzIHNlbnNlLCBrZWVwcyBpdCBjbGVhbiBhbmQgdGFyZ2V0ZWQuXG5cbk5vdywgbGV0J3MgZ2V0IGRvd24gdG8gdGhlIGFjdHVhbCBjb2RlIG1vZGlmaWNhdGlvbi4gSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjcml0aWNhbCBzeW1ib2xzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAuIEhtbSwgdHJhY2luZyBiYWNrd2FyZHMsIHRoYXQgZnVuY3Rpb24ncyBjYWxsZWQgYnkgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAsIGFuZCAqdGhhdCogb25lIGlzIGNhbGxlZCBieSBgc3QyMW5mY2FfZGVwX2V2ZW50X3JlY2VpdmVkYC4gRXhjZWxsZW50LiBTbyBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYCBpcyBhIHZlcnkgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgaW52ZXN0aWdhdGlvbiwgYXMgaXQncyBkaXJlY3RseSBpbXBhY3RlZC4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgYHN0MjFuZmNhX3RtX2V2ZW50X3NlbmRfZGF0YWAgYW5kIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIHRvbyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGZ1bGx5LiBJIHRoaW5rIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiBgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxYC4gVGhhdCdzIHRoZSBiZXN0IGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzUzLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTJUMDA6MzQ6MDEuMDU1NDk4NTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzgwODk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZmMvc3QyMW5mY2EvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0MjFuZmNhL2RlcC5jPTEzOD1zdGF0aWMgaW50IHN0MjFuZmNhX3RtX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2hjaV9kZXYgKmhkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODctXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MTg4OnN0YXRpYyBpbnQgc3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfaGNpX2RldiAqaGRldixcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0xODktXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYz0zNDk9c3RhdGljIGludCBzdDIxbmZjYV90bV9ldmVudF9zZW5kX2RhdGEoc3RydWN0IG5mY19oY2lfZGV2ICpoZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmMtMzYwLVxcdFxcdGNhc2UgU1QyMU5GQ0FfTkZDSVAxX0FUUl9SRVE6XFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvZGVwLmM6MzYxOlxcdFxcdFxcdHIgPSBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEoaGRldiwgc2tiKTtcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9kZXAuYy0zNjItXFx0XFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjM0OjAxLjExMzMxMzY0NFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDg2MzczMjQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTVDIxTkZDQSBORkMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgYHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcWAgaXMgZGVmaW5pdGVseSBhIHN0YXRpYyBmdW5jdGlvbi4gQW5kIHRoZSBvdGhlciBmdW5jdGlvbiBpbiBwbGF5LCBgc3QyMW5mY2FfdG1fZXZlbnRfc2VuZF9kYXRhYCwgaXMgYWxzbyBzdGF0aWMuIEhvd2V2ZXIsIGBzdDIxbmZjYV9kZXBfZXZlbnRfcmVjZWl2ZWRgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzIGFub3RoZXIgcG9pbnQgb2YgaW50ZXJlc3QsIGJ1dCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCBJJ2xsIGZvY3VzIG9uIHRoZSBmaXJzdCBmdW5jdGlvbi4gSSBjYW4gYWRkIGBzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXFgIHRvIEZvY3VzU3ltYm9scyB0byBoaWdobGlnaHQgaXQgZm9yIGZ1enppbmcuXG5cbk5vdywgbGV0IG1lIHJldmlldyB0aGUgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEkgc2VlIGBORkNfU1QyMU5GQ0FfSTJDYCBhbmQgYE5GQ19TVDIxTkZDQWAuIFRoZSBsYXR0ZXIgaXMgc2VsZWN0ZWQgYXV0b21hdGljYWxseSwgYnV0IGl0IGRvZXNuJ3QgaHVydCB0byBiZSBleHBsaWNpdCBhbmQgaW5jbHVkZSBpdC5cblxuV2FpdCwgYXJlIHRoZXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzPyBPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBgZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZ2AgZmlsZSBhZ2Fpbi4uLiBZZXMsIGhlcmUgaXQgaXMsIGBORkNfU1QyMU5GQ0FfSTJDYCBkZXBlbmRzIG9uIGBORkNfSENJIFx1MDAyNlx1MDAyNiBJMkMgXHUwMDI2XHUwMDI2IE5GQ19TSERMQ2AuIEdpdmVuIHRoYXQgdGhpcyBpcyBhbiBJMkMgaW1wbGVtZW50YXRpb24gYW5kIGludm9sdmVzIEhDSSBldmVudHMsIGl0IG1ha2VzIHNlbnNlIHRvIGVuYWJsZSBgTkZDX1NUMjFORkNBX0kyQ2AuIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmdXp6aW5nIGhhcm5lc3MgY292ZXJzIHRoZSBhcHByb3ByaWF0ZSBpbnN0YW50aWF0aW9uIG1ldGhvZC5cblxuQWxyaWdodCwgdGltZSB0byBmb3JtdWxhdGUgbXkgcmVzcG9uc2UuIEl0J3MgbG9va2luZyBsaWtlIGEgc29saWQgZnV6emluZyB0YXJnZXQsIHNvIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBjbGVhcmx5IGluY2x1ZGUgYFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCJgIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGZ1bmN0aW9uLiBBbmQsIHNpbmNlIGl0IHJlcXVpcmVzIHRoZSBJMkMgY29uZmlndXJhdGlvbiBhbmQgSENJIHRvIGJlIHNldHVwLCB0aGUgcGF0Y2ggd2lsbCByZXF1aXJlIG1lIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYFtcIk5GQ19TVDIxTkZDQV9JMkNcIl1gLiBUaGUga2V5IHJlYXNvbmluZywgYXMgSSBzZWUgaXQsIGlzIHRoYXQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIFNUMjFORkNBIE5GQyBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gaXRzIEFUUiByZXF1ZXN0IGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB1c2VkIHZpYSBJMkMsIGFuZCBpdHMgSENJIGV2ZW50cyBhcmUgYSBjbGVhciBhdmVudWUgZm9yIGZ1enppbmcsIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGZpeC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyNzYsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEyVDAwOjM0OjA3LjU5OTY4OTA0NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NzI4MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNfU1QyMU5GQ0FfSTJDXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3QyMW5mY2FfdG1fcmVjdl9hdHJfcmVxXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGxlbmd0aCBjaGVjayB0byBmaXggYW4gb3V0LW9mLWJvdW5kcyByZWFkIGluIHRoZSBTVDIxTkZDQSBORkMgZHJpdmVyJ3MgQVRSIHJlcXVlc3QgaGFuZGxpbmcgKHN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcSkuIFRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB2aWEgSTJDIGFuZCBpdHMgSENJIGV2ZW50cyBjYW4gYmUgZnV6emVkLCBtYWtpbmcgdGhpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDX1NUMjFORkNBX0kyQ1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0MjFuZmNhX3RtX3JlY3ZfYXRyX3JlcVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBsZW5ndGggY2hlY2sgdG8gZml4IGFuIG91dC1vZi1ib3VuZHMgcmVhZCBpbiB0aGUgU1QyMU5GQ0EgTkZDIGRyaXZlcidzIEFUUiByZXF1ZXN0IGhhbmRsaW5nIChzdDIxbmZjYV90bV9yZWN2X2F0cl9yZXEpLiBUaGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdmlhIEkyQyBhbmQgaXRzIEhDSSBldmVudHMgY2FuIGJlIGZ1enplZCwgbWFraW5nIHRoaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowbp7s5[1] Phase: Succeeded StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 00:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 00:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2] Phase: Succeeded StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 00:35:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-12 00:34:19 +0000 UTC FinishedAt: 2026-07-12 00:34:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbp7s5/series-workflowbp7s5-convert-artifact-4081026858/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-12 00:35:04 +0000 UTC FinishedAt: 2026-07-12 01:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-12 00:35:04 +0000 UTC FinishedAt: 2026-07-12 01:17:47 +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:*754c110c-eb6b-4079-b7c2-3600c2d9f376,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-workflowbp7s5/series-workflowbp7s5-convert-artifact-4081026858/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": "d4c00b22-8f8c-4a7b-a26c-d81eae29435c", "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-workflowbp7s5/series-workflowbp7s5-build-action-1468334232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-12 00:35:04 +0000 UTC FinishedAt: 2026-07-12 01:17:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*754c110c-eb6b-4079-b7c2-3600c2d9f376,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-workflowbp7s5/series-workflowbp7s5-convert-artifact-4081026858/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": "d4c00b22-8f8c-4a7b-a26c-d81eae29435c", "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-workflowbp7s5/series-workflowbp7s5-build-action-1468334232/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-12 01:17:47 +0000 UTC FinishedAt: 2026-07-12 01:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-12 01:17:47 +0000 UTC FinishedAt: 2026-07-12 01:17:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-12 01:17:47 +0000 UTC FinishedAt: 2026-07-12 01:18:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-12 01:17:47 +0000 UTC FinishedAt: 2026-07-12 01:17:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbp7s5/series-workflowbp7s5-convert-artifact-132444997/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-12 01:18:22 +0000 UTC FinishedAt: 2026-07-12 01:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-12 01:18:22 +0000 UTC FinishedAt: 2026-07-12 01:20:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d4c00b22-8f8c-4a7b-a26c-d81eae29435c,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-workflowbp7s5/series-workflowbp7s5-build-action-1468334232/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-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-12 01:20:56 +0000 UTC FinishedAt: 2026-07-12 01:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-12 01:20:56 +0000 UTC FinishedAt: 2026-07-12 01:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-12 01:20:56 +0000 UTC FinishedAt: 2026-07-12 02:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-12 01:20:56 +0000 UTC FinishedAt: 2026-07-12 02:22:40 +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:*754c110c-eb6b-4079-b7c2-3600c2d9f376,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-workflowbp7s5/series-workflowbp7s5-convert-artifact-132444997/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": "2307b8ed-6101-4003-b081-c8f583a41375", "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-workflowbp7s5/series-workflowbp7s5-build-action-1974491025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-12 01:20:56 +0000 UTC FinishedAt: 2026-07-12 02:22:30 +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:*754c110c-eb6b-4079-b7c2-3600c2d9f376,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-workflowbp7s5/series-workflowbp7s5-convert-artifact-132444997/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": "2307b8ed-6101-4003-b081-c8f583a41375", "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-workflowbp7s5/series-workflowbp7s5-build-action-1974491025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-12 02:22:40 +0000 UTC FinishedAt: 2026-07-12 02:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-12 02:22:40 +0000 UTC FinishedAt: 2026-07-12 02:22:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-12 02:22:40 +0000 UTC FinishedAt: 2026-07-12 02:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-12 02:22:40 +0000 UTC FinishedAt: 2026-07-12 02:24:43 +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:*2307b8ed-6101-4003-b081-c8f583a41375,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-workflowbp7s5/series-workflowbp7s5-build-action-1974491025/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-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"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:*d4c00b22-8f8c-4a7b-a26c-d81eae29435c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2307b8ed-6101-4003-b081-c8f583a41375,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-workflowbp7s5/series-workflowbp7s5-build-action-1468334232/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-workflowbp7s5/series-workflowbp7s5-build-action-1974491025/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 02:25:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 02:24:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"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-workflowbp7s5/series-workflowbp7s5-convert-artifact-2826294218/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 02:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 02:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-12 02:24:53 +0000 UTC FinishedAt: 2026-07-12 02:24:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-12 02:25:03 +0000 UTC FinishedAt: 2026-07-12 03:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbp7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["st21nfca_tm_recv_atr_req"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC_ST21NFCA_I2C"],"series_id":"b463cb9f-2927-4e96-8dea-3f52ed158703","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-12 02:25:03 +0000 UTC FinishedAt: 2026-07-12 03:16:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d4c00b22-8f8c-4a7b-a26c-d81eae29435c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2307b8ed-6101-4003-b081-c8f583a41375,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-workflowbp7s5/series-workflowbp7s5-build-action-1468334232/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-workflowbp7s5/series-workflowbp7s5-build-action-1974491025/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-workflowbp7s5/series-workflowbp7s5-convert-artifact-2826294218/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,}