Name: series-workflowhwpdr Phase: Succeeded StartedAt: 2026-07-02 01:07:58 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[0] Phase: Succeeded StartedAt: 2026-07-02 01:07:58 +0000 UTC FinishedAt: 2026-07-02 01:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[0].run-triage Phase: Succeeded StartedAt: 2026-07-02 01:07:58 +0000 UTC FinishedAt: 2026-07-02 01:18:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MICROSOFT_MANA", "PCI_IOV", "PCI_HYPERV", "HYPERV_VMBUS", "HYPERV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MICROSOFT_MANA", "PCI_IOV", "PCI_HYPERV", "HYPERV_VMBUS", "HYPERV" ], "series_id": "832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mana_sriov_configure" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDssCiAgICAmIzM0O1BDSV9JT1YmIzM0OywKICAgICYjMzQ7UENJX0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9zcmlvdl9jb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI4YTZmMjE3NDJlYjkyODA0NzgyY2Q4NzlkOGNiM2MyNzBmZGYzNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDAxOjE2OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi4wYjczODBmZDFkYTgyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTI0NDYsNiAmIzQzOzI0NDYsMjAgQEAgc3RhdGljIHZvaWQgbWFuYV9nZF9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1JlcXVlc3RlZCBudW0gVkZzOiAlZFxcblwmIzM0OywgbnVtdmZzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG51bXZmcyBcdTAwM2UgMClcbiYjNDM7XHRcdGVyciA9IHBjaV9lbmFibGVfc3Jpb3YocGRldiwgbnVtdmZzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwY2lfZGlzYWJsZV9zcmlvdihwZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xuIFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcbiBcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01JQ1JPU09GVCwgTUFOQV9QRjJfREVWSUNFX0lEKSB9LFxuQEAgLTI0NjEsNiAmIzQzOzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7XG4gXHQuc3VzcGVuZFx0PSBtYW5hX2dkX3N1c3BlbmQsXG4gXHQucmVzdW1lXHRcdD0gbWFuYV9nZF9yZXN1bWUsXG4gXHQuc2h1dGRvd25cdD0gbWFuYV9nZF9zaHV0ZG93bixcbiYjNDM7XHQuc3Jpb3ZfY29uZmlndXJlID0gbWFuYV9zcmlvdl9jb25maWd1cmUsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OywKICAgICYjMzQ7UENJX0lPViYjMzQ7LAogICAgJiMzNDtQQ0lfSFlQRVJWJiMzNDssCiAgICAmIzM0O0hZUEVSVl9WTUJVUyYjMzQ7LAogICAgJiMzNDtIWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOGE2ZjIxNzQyZWI5MjgwNDc4MmNkODc5ZDhjYjNjMjcwZmRmMzU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMKaW5kZXggYTBmZGQwNTJkN2YxNjMuLjBiNzM4MGZkMWRhODIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwpAQCAtMjQ0Niw2ICYjNDM7MjQ0NiwyMCBAQCBzdGF0aWMgdm9pZCBtYW5hX2dkX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpCiYjNDM7ewomIzQzOwlpbnQgZXJyID0gMDsKJiM0MzsKJiM0MzsJZGV2X2luZm8oJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7UmVxdWVzdGVkIG51bSBWRnM6ICVkXG4mIzM0OywgbnVtdmZzKTsKJiM0MzsKJiM0MzsJaWYgKG51bXZmcyAmZ3Q7IDApCiYjNDM7CQllcnIgPSBwY2lfZW5hYmxlX3NyaW92KHBkZXYsIG51bXZmcyk7CiYjNDM7CWVsc2UKJiM0MzsJCXBjaV9kaXNhYmxlX3NyaW92KHBkZXYpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyID8gZXJyIDogbnVtdmZzOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7CiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSwKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEYyX0RFVklDRV9JRCkgfSwKQEAgLTI0NjEsNiAmIzQzOzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7CiAJLnN1c3BlbmQJPSBtYW5hX2dkX3N1c3BlbmQsCiAJLnJlc3VtZQkJPSBtYW5hX2dkX3Jlc3VtZSwKIAkuc2h1dGRvd24JPSBtYW5hX2dkX3NodXRkb3duLAomIzQzOwkuc3Jpb3ZfY29uZmlndXJlID0gbWFuYV9zcmlvdl9jb25maWd1cmUsCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIFNSLUlPViBDb25maWd1cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHRvIHRoZSBNQU5BIGRyaXZlciBpbiBgZ2RtYV9tYWluLmNgLiBUaGlzIGlzIGZvciBTUi1JT1YgY29uZmlndXJhdGlvbiBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgTUFOQS4gTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTUFOQSBpcyBjbG91ZC1zcGVjaWZpYyBoYXJkd2FyZS4gSSBrbm93IFFFTVUgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdmVyeSB3ZWxsLiBJdCYjMzk7cyB1c3VhbGx5IG5vdCBhIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZSBhdCBhbGwsIHNvIGVtdWxhdGlvbiBpcyB1bmxpa2VseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgpJJiMzOTtsbCBzdGFydCBzZWFyY2hpbmcgUUVNVSBvciB0aGUga2VybmVsIHNvdXJjZSBmb3IgY2x1ZXMsIG1heWJlIGxvb2sgZm9yIGBNQU5BX1BGX0RFVklDRV9JRGAgb3IgdGhlIGRyaXZlciBuYW1lIGl0c2VsZiwgYG1hbmFfZHJpdmVyYC4gV2FpdCBhIG1pbnV0ZSwgdGhvdWdoLi4uSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIHZpcnR1YWwgUENJIGNvbmZpZ3VyYXRpb25zIOKAkyB0aGluZ3MgbGlrZSB2aGNpIG9yIGRpcmVjdGx5IGluamVjdGluZyBQQ0kgZGF0YS4gSXQgY2FuIHBva2UgYW5kIHByb2QgYXQgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gU3l6a2FsbGVyLCBpbiBwcmluY2lwbGUsIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbmNsdWRlIHRoaXMgb25lLiBTbyB0aGUgZmFjdCB0aGF0IGl0ICppcyogYSBQQ0kgZGV2aWNlIHN1ZGRlbmx5IGdpdmVzIG1lIG1vcmUgb3B0aW9ucy4KCkJ1dCBpcyBmdXp6aW5nIGV2ZW4gdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmU/IFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBhZGRpbmcgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCwgd2hpY2ggbWVhbnMgdGhlIGNvZGUgY2FsbHMgYHBjaV9lbmFibGVfc3Jpb3ZgIGFuZCBgcGNpX2Rpc2FibGVfc3Jpb3ZgLiBUaGlzIGxvb2tzIGxpa2UgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY291bGQgYmUgdHJpY2t5LiBGdW5jdGlvbmFsIGNvZGUgaXMgYWx3YXlzIGhhcmRlciB0byBmdXp6IGJlY2F1c2UgeW91IG5lZWQgdG8gc2F0aXNmeSBtb3JlIHByZXJlcXVpc2l0ZXMuIEl0JiMzOTtzIG5vdCBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gU28gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmUgcHJlc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0NzA6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ3MS1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ4MTpzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5MTpcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWFuYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUwMDpzdGF0aWMgdm9pZCBfX2V4aXQgbWFuYV9kcml2ZXJfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MTc6XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWFuYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUyNDptb2R1bGVfaW5pdChtYW5hX2RyaXZlcl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MjU6bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTI2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipLY29uZmlnIENoZWNrIGZvciBNQU5BKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIG1lbnRpb24gb2YgJiMzNDtNQU5BJiMzNDsgLSB3aGV0aGVyIGl0IHJlZmVycyB0byBhIHNwZWNpZmljIGZlYXR1cmUsIGEgbW9kdWxlLCBvciBhIG1vcmUgYWJzdHJhY3QgY29uY2VwdCB3aXRoaW4gdGhlIHN5c3RlbSAtIGRlbWFuZHMgYSBLY29uZmlnIGluc3BlY3Rpb24uIFRoaXMgaXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBzeXN0ZW07IGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIHRoYXQgZGVmaW5lcyB3aGF0JiMzOTtzIGJ1aWx0LCBob3cgaXQmIzM5O3MgYnVpbHQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuCgpJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb2RlYmFzZSB3aGVyZSBLY29uZmlnIGlzIHRoZSBkb21pbmFudCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbS4gSWYgaXQmIzM5O3MgYSBuZXdlciBzeXN0ZW0gd2l0aCBhbHRlcm5hdGl2ZSBtZXRob2RzLCBzdWNoIGFzIGEgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBvciBhIGRlZGljYXRlZCBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBzeXN0ZW0gKGxpa2UgQ01ha2UmIzM5O3MpLCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydGluZyBwb2ludCwgYnV0IEtjb25maWcgaXMgdGhlIG1vc3QgbGlrZWx5IGluaXRpYWwgcGxhY2UgdG8gaW52ZXN0aWdhdGUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czoKCiogICAqKkxvY2F0aW9uOioqIFdoZXJlIHdvdWxkIE1BTkEgcmVsYXRlZCBvcHRpb25zIGJlIGxvY2F0ZWQgd2l0aGluIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlPwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBvcHRpb25zIG9yIGZlYXR1cmVzIGRvZXMgJiMzNDtNQU5BJiMzNDsgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZmxpY3Rpbmcgb3B0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD8KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJcyB0aGVyZSBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQgb3IgZG9jdW1lbnRhdGlvbiBhdHRhY2hlZCB0byB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgcHJvdmlkZXMgaW5zaWdodCBpbnRvICYjMzQ7TUFOQSYjMzk7cyYjMzQ7IHB1cnBvc2UgYW5kIHVzYWdlPwoqICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgY29uZmlndXJlZCBpbiBLY29uZmlnPyBBcmUgdGhvc2UgZGVmYXVsdCB2YWx1ZXMgc3VpdGFibGUgZm9yIG15IHVzZSBjYXNlIG9yIGRvIHRoZXkgcmVxdWlyZSBtb2RpZmljYXRpb24/CgpUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiBNQU5BLiBJcyBpdCBlbmFibGVkLCBkaXNhYmxlZCwgcGFydGlhbGx5IGVuYWJsZWQ/IFdoYXQgY29udHJvbHMgaXRzIGNvbmZpZ3VyYXRpb24/IElzIGl0IGV2ZW4gYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gY2hvaWNlcyByZWxhdGVkIHRvIE1BTkE/IEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNldHRpbmdzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgc3lzdGVtIGluIHdoaWNoIGl0IG9wZXJhdGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUNST1NPRlRfTUFOQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTg1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGEgZmlyc3QtcGVyc29uLCBleHBlcnQgcGVyc3BlY3RpdmUsIGFpbWluZyBmb3IgYSBmdWxzb21lIHJlbmRlcmluZzoKCioqSW52ZXN0aWdhdGluZyB0aGUgU1ItSU9WL1BDSV9JT1YgUmVsYXRpb25zaGlwKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFBDSV9JT1YgaXMgYWN0dWFsbHkgYSBuZWNlc3NhcnkgY29tcG9uZW50IGZvciBTUi1JT1YgZnVuY3Rpb25hbGl0eS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGJhc2ljIHF1ZXN0aW9uLCBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBsaWUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RyaWN0IGRlcGVuZGVuY3ksIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/CgpNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgc2ltcGxlICYjMzQ7eWVzJiMzNDsgb3IgJiMzNDtuby4mIzM0OyBTUi1JT1YsIGFzIGFuIGFyY2hpdGVjdHVyZSwgaXMgYWJvdXQgYWxsb3dpbmcgYSBzaW5nbGUgcGh5c2ljYWwgUENJIEV4cHJlc3MgZGV2aWNlIHRvIGFwcGVhciBhcyBtdWx0aXBsZSBsb2dpY2FsIGRldmljZXMuIEJ1dCB3aGVyZSBkb2VzIFBDSV9JT1YgZml0IGludG8gdGhhdCBwaWN0dXJlPyBJcyBpdCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoaXMgdmlydHVhbGl6YXRpb24gaXMgYWNoaWV2ZWQsIG9yIGRvZXMgU1ItSU9WIG9mZmVyIG11bHRpcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMsIHNvbWUgb2Ygd2hpY2ggKm1pZ2h0KiBsZXZlcmFnZSBQQ0lfSU9WIHdoaWxlIG90aGVycyBkb24mIzM5O3Q/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUmIzM5O3MgYSBudWFuY2VkIHJlbGF0aW9uc2hpcCBoZXJlLgoKSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQQ0kgRXhwcmVzcyBzcGVjaWZpY2F0aW9uIGFuZCBpdHMgaGFuZGxpbmcgb2YgU1ItSU9WLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdywgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgbWFwcGluZ3MsIHRoZSBpbnRlcnJ1cHQgcm91dGluZyDigJMgYWxsIG9mIHRoZSBkZXRhaWxzIHRoYXQgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgaG9zdCBzZWVzIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIG1hbmFnZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzdGFuZGFyZCBhbmQgc29tZSBpbXBsZW1lbnRhdGlvbiBleGFtcGxlcy4gSSBtYXkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBQQ0ktU0lHIHNwZWNpZmljYXRpb25zLiBUaGUga2V5IGlzIHRvIHNlZSB3aGV0aGVyIHRoZSBwcmVzZW5jZSBvZiBQQ0lfSU9WIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhIGRldmljZSB0byBhZHZlcnRpc2UgU1ItSU9WIGNhcGFiaWxpdHkuIElzIFBDSV9JT1YgYSBjb3JlIHN0YW5kYXJkIGZlYXR1cmUgb3IgYW4gb3B0aW9uYWwgb25lPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB0aGVzZSBkaXN0aW5jdGlvbnMuCgpNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IGhvdyB0aGVzZSB0d28gY29uY2VwdHMg4oCTIFNSLUlPViBhbmQgUENJX0lPViDigJMgYXJlIHJlbGF0ZWQgYW5kIGRldGVybWluZSBpZiB0aGUgZm9ybWVyIGFic29sdXRlbHkgKnJlcXVpcmVzKiB0aGUgbGF0dGVyLiBUaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgcmVsYXRpb25zaGlwLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENJX0lPViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9LY29uZmlnPTE1ND1jb25maWcgUENJX0JSSURHRV9FTVVMXG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1Nzpjb25maWcgUENJX0lPVlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O1BDSSBJT1Ygc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTWFuYSBTUklPViBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbWFuYV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyB2aWEgYHNyaW92X251bXZmc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXAsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGZ1enogdGhpcy4mIzM0OyBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHN5bWJvbCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQgdG8gbWFrZSB0aGlzIHdvcmsuCgpXYWl0IGEgc2Vjb25k4oCmIENhbiBJIGFjdHVhbGx5ICpyZWFjaCogYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCB3aXRoIHN5emthbGxlcj8gSXQgY2FuIHdyaXRlIHRvIHN5c2ZzIGZpbGVzLCB3aGljaCBtZWFucyBpdCBjYW4gbW9kaWZ5IGBzcmlvdl9udW12ZnNgLiBBbmQsIGNydWNpYWxseSwgc3l6a2FsbGVyICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgcGVyZmVjdC4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluIHRvbyBkZWVwLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIFBDSV9NU0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEFSTTY0IFx1MDAyNlx1MDAyNiAhQ1BVX0JJR19FTkRJQU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIERlcGVuZGVuY3kgQ2hhaW5zKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBNSUNST1NPRlRfTUFOQWAuIEltbWVkaWF0ZWx5LCBpdCBzdHJpa2VzIG1lIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBQQ0lfSFlQRVJWYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiBgUENJX0hZUEVSVmAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IG1vZHVsZSBpcyByZWFsbHkgZG9pbmcgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBDSV9IWVBFUlYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvS2NvbmZpZz0yMjk9Y29uZmlnIFBDSV9MQUJFTFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjMyLVxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMzM6Y29uZmlnIFBDSV9IWVBFUlZcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXItViBQQ0kgRnJvbnRlbmRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc9MjM1PWNvbmZpZyBQQ0lFX01UNzYyMVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB3ZSBuZWVkIHRoZXNlIHRocmVlIGtleSBjb21wb25lbnRzOiBgTUlDUk9TT0ZUX01BTkFgLCBgUENJX0hZUEVSVmAsIGFuZCBgUENJX0lPVmAuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIEJ1dCB3YWl0IGEgbWludXRl4oCmIHRoZSBgUENJX0hZUEVSVmAgZWxlbWVudCBpcyByaW5naW5nIGEgYmVsbC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGxpa2VseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBIWVBFUlZgLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IGJlZm9yZSB3ZSBwcm9jZWVkLiBXZSBkb24mIzM5O3Qgd2FudCB0byBnZXQgY2F1Z2h0IHVwIHdpdGggYW55IHVucmVzb2x2YWJsZSBpc3N1ZXMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgYFBDSV9IWVBFUlZgIGRlcGVuZGVuY2llcyBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlc2UgYnVpbGRpbmcgYmxvY2tzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYW5kIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKkhZUEVSViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvS2NvbmZpZz0yMzM9Y29uZmlnIFBDSV9IWVBFUlZcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXItViBQQ0kgRnJvbnRlbmRcJiMzNDtcbmRyaXZlcnMvcGNpL0tjb25maWc6MjM1Olx0ZGVwZW5kcyBvbiAoKFg4NiBcdTAwMjZcdTAwMjYgWDg2XzY0KSB8fCBBUk02NCkgXHUwMDI2XHUwMDI2IEhZUEVSVl9WTUJVUyBcdTAwMjZcdTAwMjYgUENJX01TSSBcdTAwMjZcdTAwMjYgU1lTRlNcbmRyaXZlcnMvcGNpL0tjb25maWctMjM2LVx0c2VsZWN0IFBDSV9IWVBFUlZfSU5URVJGQUNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBvbiBIWVBFUlZfVk1CVVMqKgoKT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBoaW5nZXMgb24gYEhZUEVSVl9WTUJVU2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgaG93IGl0IGluZmx1ZW5jZXMgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBkZXRlcm1pbmUgaXRzIHJvbGUuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYEhZUEVSVl9WTUJVU2AgZGlyZWN0bHkuIFVuZGVyc3RhbmRpbmcgKml0cyogYmVoYXZpb3IgaXMgcGFyYW1vdW50IHRvIHVuZGVyc3RhbmQgdGhpcyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIWVBFUlZfVk1CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2h2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnPTUzPWNvbmZpZyBIWVBFUlZfQkFMTE9PTlxuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01OS1cbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBhIFNwZWNpZmljIEtlcm5lbCBGZWF0dXJlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGVuYWJsaW5nIGBNSUNST1NPRlRfTUFOQWAgYW5kIGBQQ0lfSU9WYC4gV2FpdCBhIHNlY29uZCwgaWYgd2UganVzdCBnbyB3aXRoIGBNSUNST1NPRlRfTUFOQWAsIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSBpcyBnb2luZyB0byBoYW5kbGUgaXRzIGRlcGVuZGVuY2llcywgbmFtZWx5LCBgUENJX0hZUEVSVmAgYW5kIGBIWVBFUlZfVk1CVVNgLiBTeXpib3Qgd2lsbCB0YWtlIGNhcmUgb2YgZW5hYmxpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlmIHRoZXkgYXJlIG5vdCBleHBsaWNpdGx5IGVuYWJsZWQuIEJ1dCwgZm9yIGNsYXJpdHkgYW5kIHBvdGVudGlhbGx5IGZvciBiZXR0ZXIgY29udHJvbCwgaXQmIzM5O3MgZ2VuZXJhbGx5IGJlc3QgcHJhY3RpY2UgdG8gYmUgZXhwbGljaXQgd2hlbiBsaXN0aW5nIG9wdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBsaXN0aW5nIGV2ZXJ5dGhpbmcgb3V0LiBMZXQgbWUgYWRkIGJvdGggYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgLCBiZWNhdXNlIHRoYXQgaXMgd2hhdCB3ZSBhcmUgYWltaW5nIGZvci4gSSYjMzk7bGwgYWRkIGBQQ0lfSFlQRVJWYCBhbmQgYEhZUEVSVl9WTUJVU2AgdG8gdGhlIGxpc3QganVzdCB0byBiZSBjb21wbGV0ZWx5IHNhZmUsIGFuZCBlbnN1cmUgbm8gcHJvYmxlbXMgYXJpc2UuIE9oLCBhbmQgb2YgY291cnNlLCBgSFlQRVJWYCBpcyB0aGUgb3ZlcmFyY2hpbmcsIGNvcmUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFlQRVJWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZz0zPW1lbnUgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9odi9LY29uZmlnLTQtXG5kcml2ZXJzL2h2L0tjb25maWc6NTpjb25maWcgSFlQRVJWXG5kcml2ZXJzL2h2L0tjb25maWctNi1cdGJvb2wgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgY29yZSBoeXBlcnZpc29yIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2h2L0tjb25maWctMTYtXG5kcml2ZXJzL2h2L0tjb25maWc6MTc6Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxuZHJpdmVycy9odi9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaHYvS2NvbmZpZzo0Mzpjb25maWcgSFlQRVJWX1RJTUVSXG5kcml2ZXJzL2h2L0tjb25maWctNDQtXHRkZWZfYm9vbCBIWVBFUlYgXHUwMDI2XHUwMDI2IFg4NlxuZHJpdmVycy9odi9LY29uZmlnLTQ1LVxuZHJpdmVycy9odi9LY29uZmlnOjQ2OmNvbmZpZyBIWVBFUlZfVVRJTFNcbmRyaXZlcnMvaHYvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFV0aWxpdGllcyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2h2L0tjb25maWctNTItXG5kcml2ZXJzL2h2L0tjb25maWc6NTM6Y29uZmlnIEhZUEVSVl9CQUxMT09OXG5kcml2ZXJzL2h2L0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBCYWxsb29uIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01OS1cbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFJlYWNoaW5nIHRoZSBDb2RlIHZpYSBRRU1VIGFuZCBTeXprYWxsZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSBwYXRoIHRvIGV4ZWN1dGUgc3BlY2lmaWMgY29kZSByZWxhdGVkIHRvIHRoZXNlIGNvbXBvbmVudHM6IGBNSUNST1NPRlRfTUFOQWAsIGBQQ0lfSU9WYCwgYFBDSV9IWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZgLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGxldmVyYWdlIFFFTVUgYW5kIHN5emthbGxlciB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBkcml2ZXIgY2FsbGJhY2tzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCB0aGUgZGVzaXJlZCBjb2RlIHBhdGhzIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFllcywgdGhpcyBhcHBlYXJzIGZlYXNpYmxlIGJlY2F1c2Ugc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzZnMgZmlsZXN5c3RlbSBpcyBwb3dlcmZ1bC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gc3l6a2FsbGVyIHdyaXRlcyB0byBgc3Jpb3ZfbnVtdmZzYCB0aHJvdWdoIHN5c2ZzLCB0aGlzIHdpbGwgaW52b2tlIHRoZSBgc3Jpb3ZfY29uZmlndXJlYCBjYWxsYmFjayB3aXRoaW4gdGhlIGRyaXZlci4KClRoZSBiZWF1dHkgb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgbmVlZCB0byBiZSBmdWxseSBvcGVyYXRpb25hbCBvciBjb25uZWN0ZWQgdG8gYWN0dWFsIGhhcmR3YXJlIGZvciBgc3Jpb3ZfY29uZmlndXJlYCB0byBiZSBjYWxsZWQuIFByb2JpbmcgYW5kIGJpbmRpbmcgYXJlIHRoZSBuZWNlc3NhcnkgY29uZGl0aW9ucy4gU28sIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGEgZmFrZSBQQ0kgZGV2aWNlIHdpdGggdGhlIE1BTkEmIzM5O3MgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSBpdC4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYG1hbmFfcHJvYmVgIHdpbGwgc3VjY2VlZCB3aXRoIHRoaXMgZmFrZSBkZXZpY2UuIEkgbmVlZCB0byBleGFtaW5lIGBtYW5hX3Byb2JlYCB0byB2ZXJpZnkgdGhpcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBiaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3Nz1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjA6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2MS1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjI1Mj1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzMDg6XHRlcnIgPSBtYW5hX3Byb2JlKFx1MDAyNmdjLVx1MDAzZW1hbmEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzMDktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDYtXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzNDc6XHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDgtXHQgKiB3ZSByZWNlaXZlZCBhIGhhcmR3YXJlIHJlc2V0IGV2ZW50IG92ZXIgSFdDIGludGVycnVwdC4gSW4gdGhpcyBjYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0MTA9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDE5Olx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNDcxPWludCBtYW5hX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBmcm9tX2Nsb3NlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM1MDg6c3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA5LVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNzM4PXN0YXRpYyB2b2lkIG1hbmFfZ2Zfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNzYxOmludCBtYW5hX3Byb2JlKHN0cnVjdCBnZG1hX2RldiAqZ2QsIGJvb2wgcmVzdW1pbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4MzUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFjLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozODM2Olx0XHRcdGVyciA9IG1hbmFfcHJvYmVfcG9ydChhYywgaSwgXHUwMDI2YWMtXHUwMDNlcG9ydHNbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4MzctXHRcdFx0LyogTG9nIHRoZSBwb3J0IGZvciB3aGljaCB0aGUgcHJvYmUgZmFpbGVkLCBzdG9wIHByb2JpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyMAoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTUFOQSBTUi1JT1YgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgbWFuYV9nZF9wcm9iZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uOyBpdCYjMzk7cyB0aGUgZ2F0ZXdheSBmb3IgdGhlIE1BTkEgZHJpdmVyIHRvIGJpbmQgdG8gdGhlIGhhcmR3YXJlLiBBIGZhaWx1cmUgdGhlcmUgbWVhbnMgdGhlIGRyaXZlciBpc24mIzM5O3QgYm91bmQsIHdoaWNoIGltbWVkaWF0ZWx5IGJsb2NrcyB0aGUgc3Vic2VxdWVudCBzdGVwcy4gQnV0LCB3YWl0Li4uc3l6a2FsbGVyISBJdCBoYXMgdGhhdCBhbWF6aW5nIGFiaWxpdHkgdG8gaW5qZWN0IGRhdGEgaW50byBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBUaGF0JiMzOTtzIGEgZ2FtZS1jaGFuZ2VyISBFdmVuIGlmIHRoZSBpbml0aWFsIHByb2JlIGJvcmtzLCBzeXprYWxsZXIgKm1pZ2h0KiBzdGlsbCBiZSBhYmxlIHRvIGhpdCBzb21lIGNvZGUgcGF0aHMgZHVyaW5nIG9yIGFmdGVyIGEgcGFydGlhbCBwcm9iZSwgYW5kIEkgcmVhbGx5IHRoaW5rIGl0IGNhbi4KClRoZSByZWFsIHRhcmdldCBoZXJlIGlzIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAuIFRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB2aWEgc3lzZnMsIHdoaWNoICphYnNvbHV0ZWx5KiByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGJlIGJvdW5kIGZpcnN0LiBJZiB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGJpbmQgaW5pdGlhbGx5LCB3ZSB3b24mIzM5O3QgaGF2ZSB0aGUgYHNyaW92X251bXZmc2Agc3lzZnMgZW50cnkuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjbGV2ZXIgYml0OiBzeXprYWxsZXLigJlzIGBzeXpfcGNpX2VtdWxhdGlvbmAgY2FuIGJlIHVzZWQgdG8gKmVtdWxhdGUqIHRoZSBNTUlPIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBwcm9iZSB3b3VsZCBwZXJmb3JtISBJdCBjYW4gZ2l2ZSB1cyBhcmJpdHJhcnkgcmVzcG9uc2VzIHRvIHRoZXNlIHJlYWRzISBUaGlzIG1lYW5zIHRoYXQsIHRoZW9yZXRpY2FsbHksIHdlIG1pZ2h0IGJlIGFibGUgdG8gdHJpY2sgdGhlIGRyaXZlciBpbnRvIGJpbmRpbmcuCgpTaW5jZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIGlzIHJlc3BvbnNpYmxlIGZvciBmdW5jdGlvbmFsIGNoYW5nZXMsIGl0IGNhbGxzIGBwY2lfZW5hYmxlX3NyaW92YCBhbmQgYHBjaV9kaXNhYmxlX3NyaW92YCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzcG90IGZvciBmdXp6aW5nLgpUaGlzIGlzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnZXQgb3VyIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgc2V0dGluZyBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzOiBbJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7XWAsIGFzIHRoaXMgaXMgYSBkZWZpbml0ZSB0YXJnZXQuIFdlJiMzOTtsbCBlbmFibGUgY29uZmlndXJhdGlvbnMgcmVsZXZhbnQgdG8gdGhlIGRyaXZlciwgbmFtZWx5IGBFbmFibGVDb25maWdzOiBbJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7LCAmIzM0O1BDSV9JT1YmIzM0OywgJiMzNDtQQ0lfSFlQRVJWJiMzNDssICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssICYjMzQ7SFlQRVJWJiMzNDtdYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLCBhbmQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChgc3Jpb3ZfbnVtdmZzYCkgKmlmKiB3ZSBjYW4gZ2V0IHRoZSBkcml2ZXIgdG8gYmluZCB0byB0aGUgUENJIGRldmljZS4gQW5kLCB3ZSBjYW4gKmVtdWxhdGUqIHRoYXQsIGhvcGVmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDssCiAgICAmIzM0O1BDSV9JT1YmIzM0OywKICAgICYjMzQ7UENJX0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9zcmlvdl9jb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OywKICAgICYjMzQ7UENJX0lPViYjMzQ7LAogICAgJiMzNDtQQ0lfSFlQRVJWJiMzNDssCiAgICAmIzM0O0hZUEVSVl9WTUJVUyYjMzQ7LAogICAgJiMzNDtIWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MDEuMTQ4NzM5MDc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NjMzNzYzNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlDUk9TT0ZUX01BTkFcIixcbiAgICBcIlBDSV9JT1ZcIixcbiAgICBcIlBDSV9IWVBFUlZcIixcbiAgICBcIkhZUEVSVl9WTUJVU1wiLFxuICAgIFwiSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9zcmlvdl9jb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowMS4xNDg3NDM4NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODQyNDUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI4YTZmMjE3NDJlYjkyODA0NzgyY2Q4NzlkOGNiM2MyNzBmZGYzNThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuaW5kZXggYTBmZGQwNTJkN2YxNjMuLjBiNzM4MGZkMWRhODIyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcXG5AQCAtMjQ0Niw2ICsyNDQ2LDIwIEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2Rfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtYW5hX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcylcXG4re1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFxuK1xcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJSZXF1ZXN0ZWQgbnVtIFZGczogJWRcXFxcblxcXCIsIG51bXZmcyk7XFxuK1xcbitcXHRpZiAobnVtdmZzIFxcdTAwM2UgMClcXG4rXFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9zcmlvdihwZGV2LCBudW12ZnMpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBjaV9kaXNhYmxlX3NyaW92KHBkZXYpO1xcbitcXG4rXFx0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcXG4gXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG4gXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGMl9ERVZJQ0VfSUQpIH0sXFxuQEAgLTI0NjEsNiArMjQ3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG4gXFx0LnN1c3BlbmRcXHQ9IG1hbmFfZ2Rfc3VzcGVuZCxcXG4gXFx0LnJlc3VtZVxcdFxcdD0gbWFuYV9nZF9yZXN1bWUsXFxuIFxcdC5zaHV0ZG93blxcdD0gbWFuYV9nZF9zaHV0ZG93bixcXG4rXFx0LnNyaW92X2NvbmZpZ3VyZSA9IG1hbmFfc3Jpb3ZfY29uZmlndXJlLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowMS42NDc5NTQxNzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjY0MTUzMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCIsXG4gICAgXCJQQ0lfSU9WXCIsXG4gICAgXCJQQ0lfSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hbmFfc3Jpb3ZfY29uZmlndXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOGE2ZjIxNzQyZWI5MjgwNDc4MmNkODc5ZDhjYjNjMjcwZmRmMzU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi4wYjczODBmZDFkYTgyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTI0NDYsNiArMjQ0NiwyMCBAQCBzdGF0aWMgdm9pZCBtYW5hX2dkX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIH1cbiBcbitzdGF0aWMgaW50IG1hbmFfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxuK3tcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiUmVxdWVzdGVkIG51bSBWRnM6ICVkXFxuXCIsIG51bXZmcyk7XG4rXG4rXHRpZiAobnVtdmZzIFx1MDAzZSAwKVxuK1x0XHRlcnIgPSBwY2lfZW5hYmxlX3NyaW92KHBkZXYsIG51bXZmcyk7XG4rXHRlbHNlXG4rXHRcdHBjaV9kaXNhYmxlX3NyaW92KHBkZXYpO1xuK1xuK1x0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbiBcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01JQ1JPU09GVCwgTUFOQV9QRl9ERVZJQ0VfSUQpIH0sXG4gXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEYyX0RFVklDRV9JRCkgfSxcbkBAIC0yNDYxLDYgKzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7XG4gXHQuc3VzcGVuZFx0PSBtYW5hX2dkX3N1c3BlbmQsXG4gXHQucmVzdW1lXHRcdD0gbWFuYV9nZF9yZXN1bWUsXG4gXHQuc2h1dGRvd25cdD0gbWFuYV9nZF9zaHV0ZG93bixcbitcdC5zcmlvdl9jb25maWd1cmUgPSBtYW5hX3NyaW92X2NvbmZpZ3VyZSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IG1hbmFfZHJpdmVyX2luaXQodm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjAxLjY0Nzk1NTY4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjE0Njc0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQU5BIFNSLUlPViBDb25maWd1cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHMgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCB0byB0aGUgTUFOQSBkcml2ZXIgaW4gYGdkbWFfbWFpbi5jYC4gVGhpcyBpcyBmb3IgU1ItSU9WIGNvbmZpZ3VyYXRpb24gaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIE1BTkEuIE15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE1BTkEgaXMgY2xvdWQtc3BlY2lmaWMgaGFyZHdhcmUuIEkga25vdyBRRU1VIGdlbmVyYWxseSBkb2Vzbid0IGVtdWxhdGUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdmVyeSB3ZWxsLiBJdCdzIHVzdWFsbHkgbm90IGEgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlIGF0IGFsbCwgc28gZW11bGF0aW9uIGlzIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuSSdsbCBzdGFydCBzZWFyY2hpbmcgUUVNVSBvciB0aGUga2VybmVsIHNvdXJjZSBmb3IgY2x1ZXMsIG1heWJlIGxvb2sgZm9yIGBNQU5BX1BGX0RFVklDRV9JRGAgb3IgdGhlIGRyaXZlciBuYW1lIGl0c2VsZiwgYG1hbmFfZHJpdmVyYC4gV2FpdCBhIG1pbnV0ZSwgdGhvdWdoLi4uSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIHZpcnR1YWwgUENJIGNvbmZpZ3VyYXRpb25zIOKAkyB0aGluZ3MgbGlrZSB2aGNpIG9yIGRpcmVjdGx5IGluamVjdGluZyBQQ0kgZGF0YS4gSXQgY2FuIHBva2UgYW5kIHByb2QgYXQgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gU3l6a2FsbGVyLCBpbiBwcmluY2lwbGUsIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbmNsdWRlIHRoaXMgb25lLiBTbyB0aGUgZmFjdCB0aGF0IGl0ICppcyogYSBQQ0kgZGV2aWNlIHN1ZGRlbmx5IGdpdmVzIG1lIG1vcmUgb3B0aW9ucy5cblxuQnV0IGlzIGZ1enppbmcgZXZlbiB0aGUgcmlnaHQgYXBwcm9hY2ggaGVyZT8gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFkZGluZyBgbWFuYV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBtZWFucyB0aGUgY29kZSBjYWxscyBgcGNpX2VuYWJsZV9zcmlvdmAgYW5kIGBwY2lfZGlzYWJsZV9zcmlvdmAuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjb3VsZCBiZSB0cmlja3kuIEZ1bmN0aW9uYWwgY29kZSBpcyBhbHdheXMgaGFyZGVyIHRvIGZ1enogYmVjYXVzZSB5b3UgbmVlZCB0byBzYXRpc2Z5IG1vcmUgcHJlcmVxdWlzaXRlcy4gSXQncyBub3QgYSBtZW1vcnkgY29ycnVwdGlvbiBidWcuIFNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBzZXR0aW5ncy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjA3LjU2OTQyNTI2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY5NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDcwOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDcxLVxcdC5uYW1lXFx0XFx0PSBcXFwibWFuYVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0ODE6c3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDkxOlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1hbmFfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDkyLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUwMDpzdGF0aWMgdm9pZCBfX2V4aXQgbWFuYV9kcml2ZXJfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTE3OlxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWFuYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MjQ6bW9kdWxlX2luaXQobWFuYV9kcml2ZXJfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUyNTptb2R1bGVfZXhpdChtYW5hX2RyaXZlcl9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowNy42NTAxMjQ4MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI1MDQ0MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipLY29uZmlnIENoZWNrIGZvciBNQU5BKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZSBtZW50aW9uIG9mIFwiTUFOQVwiIC0gd2hldGhlciBpdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBmZWF0dXJlLCBhIG1vZHVsZSwgb3IgYSBtb3JlIGFic3RyYWN0IGNvbmNlcHQgd2l0aGluIHRoZSBzeXN0ZW0gLSBkZW1hbmRzIGEgS2NvbmZpZyBpbnNwZWN0aW9uLiBUaGlzIGlzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gc3lzdGVtOyBpdCdzIHRoZSBnYXRla2VlcGVyIHRoYXQgZGVmaW5lcyB3aGF0J3MgYnVpbHQsIGhvdyBpdCdzIGJ1aWx0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLlxuXG5JJ20gYXNzdW1pbmcgd2UncmUgZGVhbGluZyB3aXRoIGEgY29kZWJhc2Ugd2hlcmUgS2NvbmZpZyBpcyB0aGUgZG9taW5hbnQgY29uZmlndXJhdGlvbiBtZWNoYW5pc20uIElmIGl0J3MgYSBuZXdlciBzeXN0ZW0gd2l0aCBhbHRlcm5hdGl2ZSBtZXRob2RzLCBzdWNoIGFzIGEgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBvciBhIGRlZGljYXRlZCBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBzeXN0ZW0gKGxpa2UgQ01ha2UncyksIHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0aW5nIHBvaW50LCBidXQgS2NvbmZpZyBpcyB0aGUgbW9zdCBsaWtlbHkgaW5pdGlhbCBwbGFjZSB0byBpbnZlc3RpZ2F0ZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czpcblxuKiAgICoqTG9jYXRpb246KiogV2hlcmUgd291bGQgTUFOQSByZWxhdGVkIG9wdGlvbnMgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmU/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBvcHRpb25zIG9yIGZlYXR1cmVzIGRvZXMgXCJNQU5BXCIgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZmxpY3Rpbmcgb3B0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgaGVscCB0ZXh0IG9yIGRvY3VtZW50YXRpb24gYXR0YWNoZWQgdG8gdGhlIEtjb25maWcgb3B0aW9ucyB0aGF0IHByb3ZpZGVzIGluc2lnaHQgaW50byBcIk1BTkEnc1wiIHB1cnBvc2UgYW5kIHVzYWdlP1xuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzIGNvbmZpZ3VyZWQgaW4gS2NvbmZpZz8gQXJlIHRob3NlIGRlZmF1bHQgdmFsdWVzIHN1aXRhYmxlIGZvciBteSB1c2UgY2FzZSBvciBkbyB0aGV5IHJlcXVpcmUgbW9kaWZpY2F0aW9uP1xuXG5UaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiBNQU5BLiBJcyBpdCBlbmFibGVkLCBkaXNhYmxlZCwgcGFydGlhbGx5IGVuYWJsZWQ/IFdoYXQgY29udHJvbHMgaXRzIGNvbmZpZ3VyYXRpb24/IElzIGl0IGV2ZW4gYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gY2hvaWNlcyByZWxhdGVkIHRvIE1BTkE/IEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNldHRpbmdzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgc3lzdGVtIGluIHdoaWNoIGl0IG9wZXJhdGVzLiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoxMS40NzUxNzA5MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3NTAwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JQ1JPU09GVF9NQU5BXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MTEuNTQyOTMwMTU0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3OTk3NDY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU1ItSU9WL1BDSV9JT1YgUmVsYXRpb25zaGlwKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBQQ0lfSU9WIGlzIGFjdHVhbGx5IGEgbmVjZXNzYXJ5IGNvbXBvbmVudCBmb3IgU1ItSU9WIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXNuJ3QganVzdCBhIGJhc2ljIHF1ZXN0aW9uLCBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGFuZCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGxpZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzdHJpY3QgZGVwZW5kZW5jeSwgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgcHJvYmFibHkgbm90IGEgc2ltcGxlIFwieWVzXCIgb3IgXCJuby5cIiBTUi1JT1YsIGFzIGFuIGFyY2hpdGVjdHVyZSwgaXMgYWJvdXQgYWxsb3dpbmcgYSBzaW5nbGUgcGh5c2ljYWwgUENJIEV4cHJlc3MgZGV2aWNlIHRvIGFwcGVhciBhcyBtdWx0aXBsZSBsb2dpY2FsIGRldmljZXMuIEJ1dCB3aGVyZSBkb2VzIFBDSV9JT1YgZml0IGludG8gdGhhdCBwaWN0dXJlPyBJcyBpdCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoaXMgdmlydHVhbGl6YXRpb24gaXMgYWNoaWV2ZWQsIG9yIGRvZXMgU1ItSU9WIG9mZmVyIG11bHRpcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMsIHNvbWUgb2Ygd2hpY2ggKm1pZ2h0KiBsZXZlcmFnZSBQQ0lfSU9WIHdoaWxlIG90aGVycyBkb24ndD8gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSdzIGEgbnVhbmNlZCByZWxhdGlvbnNoaXAgaGVyZS5cblxuSSdtIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBDSSBFeHByZXNzIHNwZWNpZmljYXRpb24gYW5kIGl0cyBoYW5kbGluZyBvZiBTUi1JT1YuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGF0YSBmbG93LCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBtYXBwaW5ncywgdGhlIGludGVycnVwdCByb3V0aW5nIOKAkyBhbGwgb2YgdGhlIGRldGFpbHMgdGhhdCB3aWxsIHRlbGwgbWUgaG93IHRoZSBob3N0IHNlZXMgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIGFuZCBob3cgdGhleSdyZSBtYW5hZ2VkLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzdGFuZGFyZCBhbmQgc29tZSBpbXBsZW1lbnRhdGlvbiBleGFtcGxlcy4gSSBtYXkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBQQ0ktU0lHIHNwZWNpZmljYXRpb25zLiBUaGUga2V5IGlzIHRvIHNlZSB3aGV0aGVyIHRoZSBwcmVzZW5jZSBvZiBQQ0lfSU9WIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhIGRldmljZSB0byBhZHZlcnRpc2UgU1ItSU9WIGNhcGFiaWxpdHkuIElzIFBDSV9JT1YgYSBjb3JlIHN0YW5kYXJkIGZlYXR1cmUgb3IgYW4gb3B0aW9uYWwgb25lPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB0aGVzZSBkaXN0aW5jdGlvbnMuXG5cbk15IHVsdGltYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgaG93IHRoZXNlIHR3byBjb25jZXB0cyDigJMgU1ItSU9WIGFuZCBQQ0lfSU9WIOKAkyBhcmUgcmVsYXRlZCBhbmQgZGV0ZXJtaW5lIGlmIHRoZSBmb3JtZXIgYWJzb2x1dGVseSAqcmVxdWlyZXMqIHRoZSBsYXR0ZXIuIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCByZWxhdGlvbnNoaXAuIEl0J3MgdGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoxNS40MjI5MDY5NjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3Nzc1MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENJX0lPVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvS2NvbmZpZz0xNTQ9Y29uZmlnIFBDSV9CUklER0VfRU1VTFxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNTc6Y29uZmlnIFBDSV9JT1ZcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJQQ0kgSU9WIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjE2LjUwMDY2MDk5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODY1MzAwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTWFuYSBTUklPViBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHRoYXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyB2aWEgYHNyaW92X251bXZmc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXAsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGZ1enogdGhpcy5cIiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHN5bWJvbCBpdHNlbGYuIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgUENJX0lPVmAgY29uZmlndXJhdGlvbnMgZW5hYmxlZCB0byBtYWtlIHRoaXMgd29yay5cblxuV2FpdCBhIHNlY29uZOKApiBDYW4gSSBhY3R1YWxseSAqcmVhY2gqIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAgd2l0aCBzeXprYWxsZXI/IEl0IGNhbiB3cml0ZSB0byBzeXNmcyBmaWxlcywgd2hpY2ggbWVhbnMgaXQgY2FuIG1vZGlmeSBgc3Jpb3ZfbnVtdmZzYC4gQW5kLCBjcnVjaWFsbHksIHN5emthbGxlciAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0J3MgcGVyZmVjdC4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjIwLjQ4NzE5Mjg3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5NDc3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24uKlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjIwLjg0NjY3NTA5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYyNDM5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gRGVwZW5kZW5jeSBDaGFpbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBNSUNST1NPRlRfTUFOQWAuIEltbWVkaWF0ZWx5LCBpdCBzdHJpa2VzIG1lIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBQQ0lfSFlQRVJWYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIGBQQ0lfSFlQRVJWYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBtb2R1bGUgaXMgcmVhbGx5IGRvaW5nIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGlzIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5IHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoyMy41MDkxMTczNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDM1NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ0lfSFlQRVJWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9LY29uZmlnPTIyOT1jb25maWcgUENJX0xBQkVMXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIzMzpjb25maWcgUENJX0hZUEVSVlxcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVxcdHRyaXN0YXRlIFxcXCJIeXBlci1WIFBDSSBGcm9udGVuZFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZz0yMzU9Y29uZmlnIFBDSUVfTVQ3NjIxXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjQyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNDM6Y29uZmlnIFBDSV9IWVBFUlZfSU5URVJGQUNFXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgUENJIEludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjMuNTg1NTU3Nzk3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzY3NzA2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHdlIG5lZWQgdGhlc2UgdGhyZWUga2V5IGNvbXBvbmVudHM6IGBNSUNST1NPRlRfTUFOQWAsIGBQQ0lfSFlQRVJWYCwgYW5kIGBQQ0lfSU9WYC4gTm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZS4gQnV0IHdhaXQgYSBtaW51dGXigKYgdGhlIGBQQ0lfSFlQRVJWYCBlbGVtZW50IGlzIHJpbmdpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQgbGlrZWx5IGhhcyBhIGRlcGVuZGVuY3kgb24gYEhZUEVSVmAuIExldCdzIGNvbmZpcm0gdGhhdCBiZWZvcmUgd2UgcHJvY2VlZC4gV2UgZG9uJ3Qgd2FudCB0byBnZXQgY2F1Z2h0IHVwIHdpdGggYW55IHVucmVzb2x2YWJsZSBpc3N1ZXMgZG93biB0aGUgbGluZS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgUENJX0hZUEVSVmAgZGVwZW5kZW5jaWVzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4gTGV0J3MgbWFrZSBzdXJlIHRoZXNlIGJ1aWxkaW5nIGJsb2NrcyBhcmUgd2VsbCB1bmRlcnN0b29kIGFuZCBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjYuNzIyMzMwMzYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzg4MTE5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qSFlQRVJWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvS2NvbmZpZz0yMzM9Y29uZmlnIFBDSV9IWVBFUlZcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzNC1cXHR0cmlzdGF0ZSBcXFwiSHlwZXItViBQQ0kgRnJvbnRlbmRcXFwiXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMzU6XFx0ZGVwZW5kcyBvbiAoKFg4NiBcXHUwMDI2XFx1MDAyNiBYODZfNjQpIHx8IEFSTTY0KSBcXHUwMDI2XFx1MDAyNiBIWVBFUlZfVk1CVVMgXFx1MDAyNlxcdTAwMjYgUENJX01TSSBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbmRyaXZlcnMvcGNpL0tjb25maWctMjM2LVxcdHNlbGVjdCBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoyNy4xMDExNDcyNzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ3ODk5MjkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgb24gSFlQRVJWX1ZNQlVTKipcblxuT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBoaW5nZXMgb24gYEhZUEVSVl9WTUJVU2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCBob3cgaXQgaW5mbHVlbmNlcyB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgZGV0ZXJtaW5lIGl0cyByb2xlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBIWVBFUlZfVk1CVVNgIGRpcmVjdGx5LiBVbmRlcnN0YW5kaW5nICppdHMqIGJlaGF2aW9yIGlzIHBhcmFtb3VudCB0byB1bmRlcnN0YW5kIHRoaXMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjkuNTgwMTQxOTU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIxNDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSFlQRVJWX1ZNQlVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaHYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L0tjb25maWc9NTM9Y29uZmlnIEhZUEVSVl9CQUxMT09OXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTktXFxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjkuNjM4MzYzNDQ4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjY0NTYwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgYSBTcGVjaWZpYyBLZXJuZWwgRmVhdHVyZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZW5hYmxpbmcgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgLiBXYWl0IGEgc2Vjb25kLCBpZiB3ZSBqdXN0IGdvIHdpdGggYE1JQ1JPU09GVF9NQU5BYCwgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGdvaW5nIHRvIGhhbmRsZSBpdHMgZGVwZW5kZW5jaWVzLCBuYW1lbHksIGBQQ0lfSFlQRVJWYCBhbmQgYEhZUEVSVl9WTUJVU2AuIFN5emJvdCB3aWxsIHRha2UgY2FyZSBvZiBlbmFibGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaWYgdGhleSBhcmUgbm90IGV4cGxpY2l0bHkgZW5hYmxlZC4gQnV0LCBmb3IgY2xhcml0eSBhbmQgcG90ZW50aWFsbHkgZm9yIGJldHRlciBjb250cm9sLCBpdCdzIGdlbmVyYWxseSBiZXN0IHByYWN0aWNlIHRvIGJlIGV4cGxpY2l0IHdoZW4gbGlzdGluZyBvcHRpb25zIHRoYXQgYXJlbid0IGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgSSdtIGxlYW5pbmcgdG93YXJkIGxpc3RpbmcgZXZlcnl0aGluZyBvdXQuIExldCBtZSBhZGQgYm90aCBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgUENJX0lPVmAsIGJlY2F1c2UgdGhhdCBpcyB3aGF0IHdlIGFyZSBhaW1pbmcgZm9yLiBJJ2xsIGFkZCBgUENJX0hZUEVSVmAgYW5kIGBIWVBFUlZfVk1CVVNgIHRvIHRoZSBsaXN0IGp1c3QgdG8gYmUgY29tcGxldGVseSBzYWZlLCBhbmQgZW5zdXJlIG5vIHByb2JsZW1zIGFyaXNlLiBPaCwgYW5kIG9mIGNvdXJzZSwgYEhZUEVSVmAgaXMgdGhlIG92ZXJhcmNoaW5nLCBjb3JlIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzozMy43MDQ4MjI4MDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjYwNjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIWVBFUlZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9odi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaHYvS2NvbmZpZz0zPW1lbnUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9odi9LY29uZmlnLTQtXFxuZHJpdmVycy9odi9LY29uZmlnOjU6Y29uZmlnIEhZUEVSVlxcbmRyaXZlcnMvaHYvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk1pY3Jvc29mdCBIeXBlci1WIGNvcmUgaHlwZXJ2aXNvciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTE2LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzoxNzpjb25maWcgSFlQRVJWX1ZUTF9NT0RFXFxuZHJpdmVycy9odi9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkVuYWJsZSBMaW51eCB0byBib290IGluIFZUTCBjb250ZXh0XFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTQyLVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo0Mzpjb25maWcgSFlQRVJWX1RJTUVSXFxuZHJpdmVycy9odi9LY29uZmlnLTQ0LVxcdGRlZl9ib29sIEhZUEVSViBcXHUwMDI2XFx1MDAyNiBYODZcXG5kcml2ZXJzL2h2L0tjb25maWctNDUtXFxuZHJpdmVycy9odi9LY29uZmlnOjQ2OmNvbmZpZyBIWVBFUlZfVVRJTFNcXG5kcml2ZXJzL2h2L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFV0aWxpdGllcyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTItXFxuZHJpdmVycy9odi9LY29uZmlnOjUzOmNvbmZpZyBIWVBFUlZfQkFMTE9PTlxcbmRyaXZlcnMvaHYvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgQmFsbG9vbiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTktXFxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MzMuNzYyNDg4NjE4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MDAzODQ5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGluZyB0aGUgQ29kZSB2aWEgUUVNVSBhbmQgU3l6a2FsbGVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCBhIHBhdGggdG8gZXhlY3V0ZSBzcGVjaWZpYyBjb2RlIHJlbGF0ZWQgdG8gdGhlc2UgY29tcG9uZW50czogYE1JQ1JPU09GVF9NQU5BYCwgYFBDSV9JT1ZgLCBgUENJX0hZUEVSVmAsIGBIWVBFUlZfVk1CVVNgLCBhbmQgYEhZUEVSVmAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbGV2ZXJhZ2UgUUVNVSBhbmQgc3l6a2FsbGVyIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGRyaXZlciBjYWxsYmFja3MuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggdGhlIGRlc2lyZWQgY29kZSBwYXRocyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoaXMgYXBwZWFycyBmZWFzaWJsZSBiZWNhdXNlIHN5emthbGxlcidzIGFiaWxpdHkgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzZnMgZmlsZXN5c3RlbSBpcyBwb3dlcmZ1bC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gc3l6a2FsbGVyIHdyaXRlcyB0byBgc3Jpb3ZfbnVtdmZzYCB0aHJvdWdoIHN5c2ZzLCB0aGlzIHdpbGwgaW52b2tlIHRoZSBgc3Jpb3ZfY29uZmlndXJlYCBjYWxsYmFjayB3aXRoaW4gdGhlIGRyaXZlci5cblxuVGhlIGJlYXV0eSBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZnVsbHkgb3BlcmF0aW9uYWwgb3IgY29ubmVjdGVkIHRvIGFjdHVhbCBoYXJkd2FyZSBmb3IgYHNyaW92X2NvbmZpZ3VyZWAgdG8gYmUgY2FsbGVkLiBQcm9iaW5nIGFuZCBiaW5kaW5nIGFyZSB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuIFNvLCBpZiBzeXprYWxsZXIgY2FuIGluamVjdCBhIGZha2UgUENJIGRldmljZSB3aXRoIHRoZSBNQU5BJ3MgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSBpdC4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYG1hbmFfcHJvYmVgIHdpbGwgc3VjY2VlZCB3aXRoIHRoaXMgZmFrZSBkZXZpY2UuIEkgbmVlZCB0byBleGFtaW5lIGBtYW5hX3Byb2JlYCB0byB2ZXJpZnkgdGhpcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIHdvbid0IGJpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MzkuMjYyODc1MzE3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc2MzEyNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2MDpcXHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjEtXFx0ICogc28gTVNJLVggYW5kIHF1ZXVlIGJ1ZGdldGluZyBtYXRjaGVzIHRoZSBhY3R1YWwgcG9ydCBjb3VudC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIyNTI9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzA4OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM0Ni1cXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzQ3OlxcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDgtXFx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0MTA9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDE5OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDIwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9MzQ3MT1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNTA4OnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM1MDktXFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKipuZGV2X3N0b3JhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9MzczOD1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6Mzc2MTppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODM1LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6MzgzNjpcXHRcXHRcXHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFxcdTAwMjZhYy1cXHUwMDNlcG9ydHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODM3LVxcdFxcdFxcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjM5LjYyMDUxMzE3NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQ1NzMwNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1BTkEgU1ItSU9WIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgbWFuYV9nZF9wcm9iZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uOyBpdCdzIHRoZSBnYXRld2F5IGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmluZCB0byB0aGUgaGFyZHdhcmUuIEEgZmFpbHVyZSB0aGVyZSBtZWFucyB0aGUgZHJpdmVyIGlzbid0IGJvdW5kLCB3aGljaCBpbW1lZGlhdGVseSBibG9ja3MgdGhlIHN1YnNlcXVlbnQgc3RlcHMuIEJ1dCwgd2FpdC4uLnN5emthbGxlciEgSXQgaGFzIHRoYXQgYW1hemluZyBhYmlsaXR5IHRvIGluamVjdCBkYXRhIGludG8gUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gVGhhdCdzIGEgZ2FtZS1jaGFuZ2VyISBFdmVuIGlmIHRoZSBpbml0aWFsIHByb2JlIGJvcmtzLCBzeXprYWxsZXIgKm1pZ2h0KiBzdGlsbCBiZSBhYmxlIHRvIGhpdCBzb21lIGNvZGUgcGF0aHMgZHVyaW5nIG9yIGFmdGVyIGEgcGFydGlhbCBwcm9iZSwgYW5kIEkgcmVhbGx5IHRoaW5rIGl0IGNhbi5cblxuVGhlIHJlYWwgdGFyZ2V0IGhlcmUgaXMgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYC4gVGhpcyBmdW5jdGlvbiBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcywgd2hpY2ggKmFic29sdXRlbHkqIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgYm91bmQgZmlyc3QuIElmIHRoZSBkcml2ZXIgZG9lc24ndCBiaW5kIGluaXRpYWxseSwgd2Ugd29uJ3QgaGF2ZSB0aGUgYHNyaW92X251bXZmc2Agc3lzZnMgZW50cnkuIEJ1dCBoZXJlJ3MgdGhlIGNsZXZlciBiaXQ6IHN5emthbGxlcuKAmXMgYHN5el9wY2lfZW11bGF0aW9uYCBjYW4gYmUgdXNlZCB0byAqZW11bGF0ZSogdGhlIE1NSU8gcmVhZC93cml0ZSBvcGVyYXRpb25zIHRoYXQgdGhlIHByb2JlIHdvdWxkIHBlcmZvcm0hIEl0IGNhbiBnaXZlIHVzIGFyYml0cmFyeSByZXNwb25zZXMgdG8gdGhlc2UgcmVhZHMhIFRoaXMgbWVhbnMgdGhhdCwgdGhlb3JldGljYWxseSwgd2UgbWlnaHQgYmUgYWJsZSB0byB0cmljayB0aGUgZHJpdmVyIGludG8gYmluZGluZy5cblxuU2luY2UgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCBpcyByZXNwb25zaWJsZSBmb3IgZnVuY3Rpb25hbCBjaGFuZ2VzLCBpdCBjYWxscyBgcGNpX2VuYWJsZV9zcmlvdmAgYW5kIGBwY2lfZGlzYWJsZV9zcmlvdmAsIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3BvdCBmb3IgZnV6emluZy5cblRoaXMgaXMgYSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2hvdWxkIGdldCBvdXIgYXR0ZW50aW9uLlxuXG5UaGVyZWZvcmUsIHNldHRpbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFuZCB0aGUgYEZvY3VzU3ltYm9sczogW1wibWFuYV9zcmlvdl9jb25maWd1cmVcIl1gLCBhcyB0aGlzIGlzIGEgZGVmaW5pdGUgdGFyZ2V0LiBXZSdsbCBlbmFibGUgY29uZmlndXJhdGlvbnMgcmVsZXZhbnQgdG8gdGhlIGRyaXZlciwgbmFtZWx5IGBFbmFibGVDb25maWdzOiBbXCJNSUNST1NPRlRfTUFOQVwiLCBcIlBDSV9JT1ZcIiwgXCJQQ0lfSFlQRVJWXCIsIFwiSFlQRVJWX1ZNQlVTXCIsIFwiSFlQRVJWXCJdYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLCBhbmQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChgc3Jpb3ZfbnVtdmZzYCkgKmlmKiB3ZSBjYW4gZ2V0IHRoZSBkcml2ZXIgdG8gYmluZCB0byB0aGUgUENJIGRldmljZS4gQW5kLCB3ZSBjYW4gKmVtdWxhdGUqIHRoYXQsIGhvcGVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMCwiT3V0cHV0VG9rZW5zIjoxMjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6NDYuNzY2MjQ1MzkyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1ODU3ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiLFxuICAgIFwiUENJX0lPVlwiLFxuICAgIFwiUENJX0hZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX3NyaW92X2NvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgU1ItSU9WIGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgTUFOQSBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyAoc3Jpb3ZfbnVtdmZzKSBvbmNlIHRoZSBkcml2ZXIgYmluZHMgdG8gYSBQQ0kgZGV2aWNlLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlDUk9TT0ZUX01BTkFcIixcbiAgICBcIlBDSV9JT1ZcIixcbiAgICBcIlBDSV9IWVBFUlZcIixcbiAgICBcIkhZUEVSVl9WTUJVU1wiLFxuICAgIFwiSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9zcmlvdl9jb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowhwpdr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-02 01:07:58 +0000 UTC FinishedAt: 2026-07-02 01:17:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MICROSOFT_MANA", "PCI_IOV", "PCI_HYPERV", "HYPERV_VMBUS", "HYPERV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "c75597caada080effbfbc0a7fb10dc2a3bb543ad", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MICROSOFT_MANA", "PCI_IOV", "PCI_HYPERV", "HYPERV_VMBUS", "HYPERV" ], "series_id": "832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mana_sriov_configure" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDssCiAgICAmIzM0O1BDSV9JT1YmIzM0OywKICAgICYjMzQ7UENJX0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9zcmlvdl9jb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGI4YTZmMjE3NDJlYjkyODA0NzgyY2Q4NzlkOGNiM2MyNzBmZGYzNThcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAyIDAxOjE2OjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi4wYjczODBmZDFkYTgyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTI0NDYsNiAmIzQzOzI0NDYsMjAgQEAgc3RhdGljIHZvaWQgbWFuYV9nZF9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpXG4mIzQzO3tcbiYjNDM7XHRpbnQgZXJyID0gMDtcbiYjNDM7XG4mIzQzO1x0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1JlcXVlc3RlZCBudW0gVkZzOiAlZFxcblwmIzM0OywgbnVtdmZzKTtcbiYjNDM7XG4mIzQzO1x0aWYgKG51bXZmcyBcdTAwM2UgMClcbiYjNDM7XHRcdGVyciA9IHBjaV9lbmFibGVfc3Jpb3YocGRldiwgbnVtdmZzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwY2lfZGlzYWJsZV9zcmlvdihwZGV2KTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xuIFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcbiBcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01JQ1JPU09GVCwgTUFOQV9QRjJfREVWSUNFX0lEKSB9LFxuQEAgLTI0NjEsNiAmIzQzOzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7XG4gXHQuc3VzcGVuZFx0PSBtYW5hX2dkX3N1c3BlbmQsXG4gXHQucmVzdW1lXHRcdD0gbWFuYV9nZF9yZXN1bWUsXG4gXHQuc2h1dGRvd25cdD0gbWFuYV9nZF9zaHV0ZG93bixcbiYjNDM7XHQuc3Jpb3ZfY29uZmlndXJlID0gbWFuYV9zcmlvdl9jb25maWd1cmUsXG4gfTtcbiBcbiBzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OywKICAgICYjMzQ7UENJX0lPViYjMzQ7LAogICAgJiMzNDtQQ0lfSFlQRVJWJiMzNDssCiAgICAmIzM0O0hZUEVSVl9WTUJVUyYjMzQ7LAogICAgJiMzNDtIWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiOGE2ZjIxNzQyZWI5MjgwNDc4MmNkODc5ZDhjYjNjMjcwZmRmMzU4CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMKaW5kZXggYTBmZGQwNTJkN2YxNjMuLjBiNzM4MGZkMWRhODIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYwpAQCAtMjQ0Niw2ICYjNDM7MjQ0NiwyMCBAQCBzdGF0aWMgdm9pZCBtYW5hX2dkX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKIH0KIAomIzQzO3N0YXRpYyBpbnQgbWFuYV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBudW12ZnMpCiYjNDM7ewomIzQzOwlpbnQgZXJyID0gMDsKJiM0MzsKJiM0MzsJZGV2X2luZm8oJmFtcDtwZGV2LSZndDtkZXYsICYjMzQ7UmVxdWVzdGVkIG51bSBWRnM6ICVkXG4mIzM0OywgbnVtdmZzKTsKJiM0MzsKJiM0MzsJaWYgKG51bXZmcyAmZ3Q7IDApCiYjNDM7CQllcnIgPSBwY2lfZW5hYmxlX3NyaW92KHBkZXYsIG51bXZmcyk7CiYjNDM7CWVsc2UKJiM0MzsJCXBjaV9kaXNhYmxlX3NyaW92KHBkZXYpOwomIzQzOwomIzQzOwlyZXR1cm4gZXJyID8gZXJyIDogbnVtdmZzOwomIzQzO30KJiM0MzsKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7CiAJeyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSwKIAl7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEYyX0RFVklDRV9JRCkgfSwKQEAgLTI0NjEsNiAmIzQzOzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7CiAJLnN1c3BlbmQJPSBtYW5hX2dkX3N1c3BlbmQsCiAJLnJlc3VtZQkJPSBtYW5hX2dkX3Jlc3VtZSwKIAkuc2h1dGRvd24JPSBtYW5hX2dkX3NodXRkb3duLAomIzQzOwkuc3Jpb3ZfY29uZmlndXJlID0gbWFuYV9zcmlvdl9jb25maWd1cmUsCiB9OwogCiBzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQU5BIFNSLUlPViBDb25maWd1cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgYWRkcyBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHRvIHRoZSBNQU5BIGRyaXZlciBpbiBgZ2RtYV9tYWluLmNgLiBUaGlzIGlzIGZvciBTUi1JT1YgY29uZmlndXJhdGlvbiBpbiB0aGUgTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciwgTUFOQS4gTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICpyZWFjaGFibGUqIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gTUFOQSBpcyBjbG91ZC1zcGVjaWZpYyBoYXJkd2FyZS4gSSBrbm93IFFFTVUgZ2VuZXJhbGx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdmVyeSB3ZWxsLiBJdCYjMzk7cyB1c3VhbGx5IG5vdCBhIHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZSBhdCBhbGwsIHNvIGVtdWxhdGlvbiBpcyB1bmxpa2VseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlcmUgaXMgYW55IHNvZnR3YXJlIGVtdWxhdGlvbiBhdmFpbGFibGUuCgpJJiMzOTtsbCBzdGFydCBzZWFyY2hpbmcgUUVNVSBvciB0aGUga2VybmVsIHNvdXJjZSBmb3IgY2x1ZXMsIG1heWJlIGxvb2sgZm9yIGBNQU5BX1BGX0RFVklDRV9JRGAgb3IgdGhlIGRyaXZlciBuYW1lIGl0c2VsZiwgYG1hbmFfZHJpdmVyYC4gV2FpdCBhIG1pbnV0ZSwgdGhvdWdoLi4uSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIHZpcnR1YWwgUENJIGNvbmZpZ3VyYXRpb25zIOKAkyB0aGluZ3MgbGlrZSB2aGNpIG9yIGRpcmVjdGx5IGluamVjdGluZyBQQ0kgZGF0YS4gSXQgY2FuIHBva2UgYW5kIHByb2QgYXQgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gU3l6a2FsbGVyLCBpbiBwcmluY2lwbGUsIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbmNsdWRlIHRoaXMgb25lLiBTbyB0aGUgZmFjdCB0aGF0IGl0ICppcyogYSBQQ0kgZGV2aWNlIHN1ZGRlbmx5IGdpdmVzIG1lIG1vcmUgb3B0aW9ucy4KCkJ1dCBpcyBmdXp6aW5nIGV2ZW4gdGhlIHJpZ2h0IGFwcHJvYWNoIGhlcmU/IFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBpcyBhZGRpbmcgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCwgd2hpY2ggbWVhbnMgdGhlIGNvZGUgY2FsbHMgYHBjaV9lbmFibGVfc3Jpb3ZgIGFuZCBgcGNpX2Rpc2FibGVfc3Jpb3ZgLiBUaGlzIGxvb2tzIGxpa2UgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY291bGQgYmUgdHJpY2t5LiBGdW5jdGlvbmFsIGNvZGUgaXMgYWx3YXlzIGhhcmRlciB0byBmdXp6IGJlY2F1c2UgeW91IG5lZWQgdG8gc2F0aXNmeSBtb3JlIHByZXJlcXVpc2l0ZXMuIEl0JiMzOTtzIG5vdCBhIG1lbW9yeSBjb3JydXB0aW9uIGJ1Zy4gU28gSSBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBLY29uZmlnIHNldHRpbmdzLiBJJiMzOTtsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmUgcHJlc2VudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yNDYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBtYW5hX2lkX3RhYmxlW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0NzA6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIG1hbmFfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ3MS1cdC5uYW1lXHRcdD0gXCYjMzQ7bWFuYVwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ4MTpzdGF0aWMgaW50IF9faW5pdCBtYW5hX2RyaXZlcl9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjQ5MTpcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWFuYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5Mi1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUwMDpzdGF0aWMgdm9pZCBfX2V4aXQgbWFuYV9kcml2ZXJfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUwMS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MTc6XHRwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoXHUwMDI2bWFuYV9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxOC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUyNDptb2R1bGVfaW5pdChtYW5hX2RyaXZlcl9pbml0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MjU6bW9kdWxlX2V4aXQobWFuYV9kcml2ZXJfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTI2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5OgoKKipLY29uZmlnIENoZWNrIGZvciBNQU5BKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gVGhlIG1lbnRpb24gb2YgJiMzNDtNQU5BJiMzNDsgLSB3aGV0aGVyIGl0IHJlZmVycyB0byBhIHNwZWNpZmljIGZlYXR1cmUsIGEgbW9kdWxlLCBvciBhIG1vcmUgYWJzdHJhY3QgY29uY2VwdCB3aXRoaW4gdGhlIHN5c3RlbSAtIGRlbWFuZHMgYSBLY29uZmlnIGluc3BlY3Rpb24uIFRoaXMgaXMgdGhlIGNlbnRyYWwgY29uZmlndXJhdGlvbiBzeXN0ZW07IGl0JiMzOTtzIHRoZSBnYXRla2VlcGVyIHRoYXQgZGVmaW5lcyB3aGF0JiMzOTtzIGJ1aWx0LCBob3cgaXQmIzM5O3MgYnVpbHQsIGFuZCB1bmRlciB3aGF0IGNvbmRpdGlvbnMuCgpJJiMzOTttIGFzc3VtaW5nIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb2RlYmFzZSB3aGVyZSBLY29uZmlnIGlzIHRoZSBkb21pbmFudCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbS4gSWYgaXQmIzM5O3MgYSBuZXdlciBzeXN0ZW0gd2l0aCBhbHRlcm5hdGl2ZSBtZXRob2RzLCBzdWNoIGFzIGEgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBvciBhIGRlZGljYXRlZCBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBzeXN0ZW0gKGxpa2UgQ01ha2UmIzM5O3MpLCB0aGF0IHdvdWxkIGJlIHRoZSBzdGFydGluZyBwb2ludCwgYnV0IEtjb25maWcgaXMgdGhlIG1vc3QgbGlrZWx5IGluaXRpYWwgcGxhY2UgdG8gaW52ZXN0aWdhdGUuCgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czoKCiogICAqKkxvY2F0aW9uOioqIFdoZXJlIHdvdWxkIE1BTkEgcmVsYXRlZCBvcHRpb25zIGJlIGxvY2F0ZWQgd2l0aGluIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlPwoqICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBvcHRpb25zIG9yIGZlYXR1cmVzIGRvZXMgJiMzNDtNQU5BJiMzNDsgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZmxpY3Rpbmcgb3B0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD8KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJcyB0aGVyZSBhbnkgYXNzb2NpYXRlZCBoZWxwIHRleHQgb3IgZG9jdW1lbnRhdGlvbiBhdHRhY2hlZCB0byB0aGUgS2NvbmZpZyBvcHRpb25zIHRoYXQgcHJvdmlkZXMgaW5zaWdodCBpbnRvICYjMzQ7TUFOQSYjMzk7cyYjMzQ7IHB1cnBvc2UgYW5kIHVzYWdlPwoqICAgKipEZWZhdWx0IFZhbHVlczoqKiBXaGF0IGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMgY29uZmlndXJlZCBpbiBLY29uZmlnPyBBcmUgdGhvc2UgZGVmYXVsdCB2YWx1ZXMgc3VpdGFibGUgZm9yIG15IHVzZSBjYXNlIG9yIGRvIHRoZXkgcmVxdWlyZSBtb2RpZmljYXRpb24/CgpUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiBNQU5BLiBJcyBpdCBlbmFibGVkLCBkaXNhYmxlZCwgcGFydGlhbGx5IGVuYWJsZWQ/IFdoYXQgY29udHJvbHMgaXRzIGNvbmZpZ3VyYXRpb24/IElzIGl0IGV2ZW4gYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gY2hvaWNlcyByZWxhdGVkIHRvIE1BTkE/IEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNldHRpbmdzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgc3lzdGVtIGluIHdoaWNoIGl0IG9wZXJhdGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgS2NvbmZpZyByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUNST1NPRlRfTUFOQSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MTg6Y29uZmlnIE1JQ1JPU09GVF9NQU5BXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIgKE1BTkEpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTg1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aG9zZSB0aG91Z2h0cyBmcm9tIGEgZmlyc3QtcGVyc29uLCBleHBlcnQgcGVyc3BlY3RpdmUsIGFpbWluZyBmb3IgYSBmdWxzb21lIHJlbmRlcmluZzoKCioqSW52ZXN0aWdhdGluZyB0aGUgU1ItSU9WL1BDSV9JT1YgUmVsYXRpb25zaGlwKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIFBDSV9JT1YgaXMgYWN0dWFsbHkgYSBuZWNlc3NhcnkgY29tcG9uZW50IGZvciBTUi1JT1YgZnVuY3Rpb25hbGl0eS4gVGhpcyBpc24mIzM5O3QganVzdCBhIGJhc2ljIHF1ZXN0aW9uLCBpdCYjMzk7cyBhYm91dCB1bmRlcnN0YW5kaW5nIHRoZSB1bmRlcmx5aW5nIGFyY2hpdGVjdHVyZSBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBsaWUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc3RyaWN0IGRlcGVuZGVuY3ksIGEgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/CgpNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgbm90IGEgc2ltcGxlICYjMzQ7eWVzJiMzNDsgb3IgJiMzNDtuby4mIzM0OyBTUi1JT1YsIGFzIGFuIGFyY2hpdGVjdHVyZSwgaXMgYWJvdXQgYWxsb3dpbmcgYSBzaW5nbGUgcGh5c2ljYWwgUENJIEV4cHJlc3MgZGV2aWNlIHRvIGFwcGVhciBhcyBtdWx0aXBsZSBsb2dpY2FsIGRldmljZXMuIEJ1dCB3aGVyZSBkb2VzIFBDSV9JT1YgZml0IGludG8gdGhhdCBwaWN0dXJlPyBJcyBpdCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoaXMgdmlydHVhbGl6YXRpb24gaXMgYWNoaWV2ZWQsIG9yIGRvZXMgU1ItSU9WIG9mZmVyIG11bHRpcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMsIHNvbWUgb2Ygd2hpY2ggKm1pZ2h0KiBsZXZlcmFnZSBQQ0lfSU9WIHdoaWxlIG90aGVycyBkb24mIzM5O3Q/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUmIzM5O3MgYSBudWFuY2VkIHJlbGF0aW9uc2hpcCBoZXJlLgoKSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBQQ0kgRXhwcmVzcyBzcGVjaWZpY2F0aW9uIGFuZCBpdHMgaGFuZGxpbmcgb2YgU1ItSU9WLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGRhdGEgZmxvdywgdGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgbWFwcGluZ3MsIHRoZSBpbnRlcnJ1cHQgcm91dGluZyDigJMgYWxsIG9mIHRoZSBkZXRhaWxzIHRoYXQgd2lsbCB0ZWxsIG1lIGhvdyB0aGUgaG9zdCBzZWVzIHRoZSB2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIG1hbmFnZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzdGFuZGFyZCBhbmQgc29tZSBpbXBsZW1lbnRhdGlvbiBleGFtcGxlcy4gSSBtYXkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBQQ0ktU0lHIHNwZWNpZmljYXRpb25zLiBUaGUga2V5IGlzIHRvIHNlZSB3aGV0aGVyIHRoZSBwcmVzZW5jZSBvZiBQQ0lfSU9WIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhIGRldmljZSB0byBhZHZlcnRpc2UgU1ItSU9WIGNhcGFiaWxpdHkuIElzIFBDSV9JT1YgYSBjb3JlIHN0YW5kYXJkIGZlYXR1cmUgb3IgYW4gb3B0aW9uYWwgb25lPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB0aGVzZSBkaXN0aW5jdGlvbnMuCgpNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHBpbnBvaW50IGhvdyB0aGVzZSB0d28gY29uY2VwdHMg4oCTIFNSLUlPViBhbmQgUENJX0lPViDigJMgYXJlIHJlbGF0ZWQgYW5kIGRldGVybWluZSBpZiB0aGUgZm9ybWVyIGFic29sdXRlbHkgKnJlcXVpcmVzKiB0aGUgbGF0dGVyLiBUaGVuLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgcmVsYXRpb25zaGlwLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUENJX0lPViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9LY29uZmlnPTE1ND1jb25maWcgUENJX0JSSURHRV9FTVVMXG4tLVxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXG5kcml2ZXJzL3BjaS9LY29uZmlnOjE1Nzpjb25maWcgUENJX0lPVlxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTgtXHRib29sIFwmIzM0O1BDSSBJT1Ygc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTWFuYSBTUklPViBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgbWFuYV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIOKAkyB0aGF0JiMzOTtzIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBrZXkgdGhpbmcgaXMgdGhhdCBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyB2aWEgYHNyaW92X251bXZmc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXAsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGZ1enogdGhpcy4mIzM0OyBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHN5bWJvbCBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQgdG8gbWFrZSB0aGlzIHdvcmsuCgpXYWl0IGEgc2Vjb25k4oCmIENhbiBJIGFjdHVhbGx5ICpyZWFjaCogYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCB3aXRoIHN5emthbGxlcj8gSXQgY2FuIHdyaXRlIHRvIHN5c2ZzIGZpbGVzLCB3aGljaCBtZWFucyBpdCBjYW4gbW9kaWZ5IGBzcmlvdl9udW12ZnNgLiBBbmQsIGNydWNpYWxseSwgc3l6a2FsbGVyICpjYW4qIGVtdWxhdGUgUENJIGRldmljZXMuIFRoYXQmIzM5O3MgcGVyZmVjdC4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluIHRvbyBkZWVwLCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNhbml0eSBjaGVjayBhbmQgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIEdvdHRhIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uLipQQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc6MjA6XHRkZXBlbmRzIG9uIFBDSV9NU0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBYODZfNjQgfHwgKEFSTTY0IFx1MDAyNlx1MDAyNiAhQ1BVX0JJR19FTkRJQU4pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjMtXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeToKCioqRGlnZ2luZyBpbnRvIERlcGVuZGVuY3kgQ2hhaW5zKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBNSUNST1NPRlRfTUFOQWAuIEltbWVkaWF0ZWx5LCBpdCBzdHJpa2VzIG1lIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBQQ0lfSFlQRVJWYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGhhbmRsZSBvbiBgUENJX0hZUEVSVmAuIExldCYjMzk7cyBzZWUgd2hhdCB0aGF0IG1vZHVsZSBpcyByZWFsbHkgZG9pbmcgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHRoaXMgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRlcGVuZGVuY3kgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBDSV9IWVBFUlYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvS2NvbmZpZz0yMjk9Y29uZmlnIFBDSV9MQUJFTFxuLS1cbmRyaXZlcnMvcGNpL0tjb25maWctMjMyLVxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMzM6Y29uZmlnIFBDSV9IWVBFUlZcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXItViBQQ0kgRnJvbnRlbmRcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc9MjM1PWNvbmZpZyBQQ0lFX01UNzYyMVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZy0yNDItXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWc6MjQzOmNvbmZpZyBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFBDSSBJbnRlcmZhY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTUxMAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBpbW1lZGlhdGVseSBjbGVhciB3ZSBuZWVkIHRoZXNlIHRocmVlIGtleSBjb21wb25lbnRzOiBgTUlDUk9TT0ZUX01BTkFgLCBgUENJX0hZUEVSVmAsIGFuZCBgUENJX0lPVmAuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIEJ1dCB3YWl0IGEgbWludXRl4oCmIHRoZSBgUENJX0hZUEVSVmAgZWxlbWVudCBpcyByaW5naW5nIGEgYmVsbC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0IGxpa2VseSBoYXMgYSBkZXBlbmRlbmN5IG9uIGBIWVBFUlZgLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IGJlZm9yZSB3ZSBwcm9jZWVkLiBXZSBkb24mIzM5O3Qgd2FudCB0byBnZXQgY2F1Z2h0IHVwIHdpdGggYW55IHVucmVzb2x2YWJsZSBpc3N1ZXMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGUgYFBDSV9IWVBFUlZgIGRlcGVuZGVuY2llcyBhbmQgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhlc2UgYnVpbGRpbmcgYmxvY2tzIGFyZSB3ZWxsIHVuZGVyc3Rvb2QgYW5kIGNvbmZpZ3VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKkhZUEVSViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvS2NvbmZpZz0yMzM9Y29uZmlnIFBDSV9IWVBFUlZcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVx0dHJpc3RhdGUgXCYjMzQ7SHlwZXItViBQQ0kgRnJvbnRlbmRcJiMzNDtcbmRyaXZlcnMvcGNpL0tjb25maWc6MjM1Olx0ZGVwZW5kcyBvbiAoKFg4NiBcdTAwMjZcdTAwMjYgWDg2XzY0KSB8fCBBUk02NCkgXHUwMDI2XHUwMDI2IEhZUEVSVl9WTUJVUyBcdTAwMjZcdTAwMjYgUENJX01TSSBcdTAwMjZcdTAwMjYgU1lTRlNcbmRyaXZlcnMvcGNpL0tjb25maWctMjM2LVx0c2VsZWN0IFBDSV9IWVBFUlZfSU5URVJGQUNFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBvbiBIWVBFUlZfVk1CVVMqKgoKT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBoaW5nZXMgb24gYEhZUEVSVl9WTUJVU2AuIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGltcGFjdCBhbmQgaG93IGl0IGluZmx1ZW5jZXMgdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBkZXRlcm1pbmUgaXRzIHJvbGUuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gYEhZUEVSVl9WTUJVU2AgZGlyZWN0bHkuIFVuZGVyc3RhbmRpbmcgKml0cyogYmVoYXZpb3IgaXMgcGFyYW1vdW50IHRvIHVuZGVyc3RhbmQgdGhpcyBhcmNoaXRlY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAyIDAxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIWVBFUlZfVk1CVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2h2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnPTUzPWNvbmZpZyBIWVBFUlZfQkFMTE9PTlxuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01OS1cbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zIGZvciBhIFNwZWNpZmljIEtlcm5lbCBGZWF0dXJlKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGVuYWJsaW5nIGBNSUNST1NPRlRfTUFOQWAgYW5kIGBQQ0lfSU9WYC4gV2FpdCBhIHNlY29uZCwgaWYgd2UganVzdCBnbyB3aXRoIGBNSUNST1NPRlRfTUFOQWAsIHRoZSBjb25maWd1cmF0aW9uIHN5c3RlbSBpcyBnb2luZyB0byBoYW5kbGUgaXRzIGRlcGVuZGVuY2llcywgbmFtZWx5LCBgUENJX0hZUEVSVmAgYW5kIGBIWVBFUlZfVk1CVVNgLiBTeXpib3Qgd2lsbCB0YWtlIGNhcmUgb2YgZW5hYmxpbmcgdGhlc2UgZGVwZW5kZW5jaWVzIGlmIHRoZXkgYXJlIG5vdCBleHBsaWNpdGx5IGVuYWJsZWQuIEJ1dCwgZm9yIGNsYXJpdHkgYW5kIHBvdGVudGlhbGx5IGZvciBiZXR0ZXIgY29udHJvbCwgaXQmIzM5O3MgZ2VuZXJhbGx5IGJlc3QgcHJhY3RpY2UgdG8gYmUgZXhwbGljaXQgd2hlbiBsaXN0aW5nIG9wdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBsaXN0aW5nIGV2ZXJ5dGhpbmcgb3V0LiBMZXQgbWUgYWRkIGJvdGggYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgLCBiZWNhdXNlIHRoYXQgaXMgd2hhdCB3ZSBhcmUgYWltaW5nIGZvci4gSSYjMzk7bGwgYWRkIGBQQ0lfSFlQRVJWYCBhbmQgYEhZUEVSVl9WTUJVU2AgdG8gdGhlIGxpc3QganVzdCB0byBiZSBjb21wbGV0ZWx5IHNhZmUsIGFuZCBlbnN1cmUgbm8gcHJvYmxlbXMgYXJpc2UuIE9oLCBhbmQgb2YgY291cnNlLCBgSFlQRVJWYCBpcyB0aGUgb3ZlcmFyY2hpbmcsIGNvcmUgY29uZmlnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSFlQRVJWJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9odi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaHYvS2NvbmZpZz0zPW1lbnUgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9odi9LY29uZmlnLTQtXG5kcml2ZXJzL2h2L0tjb25maWc6NTpjb25maWcgSFlQRVJWXG5kcml2ZXJzL2h2L0tjb25maWctNi1cdGJvb2wgXCYjMzQ7TWljcm9zb2Z0IEh5cGVyLVYgY29yZSBoeXBlcnZpc29yIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2h2L0tjb25maWctMTYtXG5kcml2ZXJzL2h2L0tjb25maWc6MTc6Y29uZmlnIEhZUEVSVl9WVExfTU9ERVxuZHJpdmVycy9odi9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtFbmFibGUgTGludXggdG8gYm9vdCBpbiBWVEwgY29udGV4dFwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy00Mi1cbmRyaXZlcnMvaHYvS2NvbmZpZzo0Mzpjb25maWcgSFlQRVJWX1RJTUVSXG5kcml2ZXJzL2h2L0tjb25maWctNDQtXHRkZWZfYm9vbCBIWVBFUlYgXHUwMDI2XHUwMDI2IFg4NlxuZHJpdmVycy9odi9LY29uZmlnLTQ1LVxuZHJpdmVycy9odi9LY29uZmlnOjQ2OmNvbmZpZyBIWVBFUlZfVVRJTFNcbmRyaXZlcnMvaHYvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01pY3Jvc29mdCBIeXBlci1WIFV0aWxpdGllcyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL2h2L0tjb25maWctNTItXG5kcml2ZXJzL2h2L0tjb25maWc6NTM6Y29uZmlnIEhZUEVSVl9CQUxMT09OXG5kcml2ZXJzL2h2L0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBCYWxsb29uIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvaHYvS2NvbmZpZy01OS1cbmRyaXZlcnMvaHYvS2NvbmZpZzo2MDpjb25maWcgSFlQRVJWX1ZNQlVTXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtNaWNyb3NvZnQgSHlwZXItViBWTUJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIFJlYWNoaW5nIHRoZSBDb2RlIHZpYSBRRU1VIGFuZCBTeXprYWxsZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgYSBwYXRoIHRvIGV4ZWN1dGUgc3BlY2lmaWMgY29kZSByZWxhdGVkIHRvIHRoZXNlIGNvbXBvbmVudHM6IGBNSUNST1NPRlRfTUFOQWAsIGBQQ0lfSU9WYCwgYFBDSV9IWVBFUlZgLCBgSFlQRVJWX1ZNQlVTYCwgYW5kIGBIWVBFUlZgLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGxldmVyYWdlIFFFTVUgYW5kIHN5emthbGxlciB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBkcml2ZXIgY2FsbGJhY2tzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBjYW4gSSByZWFjaCB0aGUgZGVzaXJlZCBjb2RlIHBhdGhzIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/IFllcywgdGhpcyBhcHBlYXJzIGZlYXNpYmxlIGJlY2F1c2Ugc3l6a2FsbGVyJiMzOTtzIGFiaWxpdHkgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzZnMgZmlsZXN5c3RlbSBpcyBwb3dlcmZ1bC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gc3l6a2FsbGVyIHdyaXRlcyB0byBgc3Jpb3ZfbnVtdmZzYCB0aHJvdWdoIHN5c2ZzLCB0aGlzIHdpbGwgaW52b2tlIHRoZSBgc3Jpb3ZfY29uZmlndXJlYCBjYWxsYmFjayB3aXRoaW4gdGhlIGRyaXZlci4KClRoZSBiZWF1dHkgb2YgdGhpcyBhcHByb2FjaCBpcyB0aGF0IHRoZSBkcml2ZXIgZG9lc24mIzM5O3QgbmVlZCB0byBiZSBmdWxseSBvcGVyYXRpb25hbCBvciBjb25uZWN0ZWQgdG8gYWN0dWFsIGhhcmR3YXJlIGZvciBgc3Jpb3ZfY29uZmlndXJlYCB0byBiZSBjYWxsZWQuIFByb2JpbmcgYW5kIGJpbmRpbmcgYXJlIHRoZSBuZWNlc3NhcnkgY29uZGl0aW9ucy4gU28sIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IGEgZmFrZSBQQ0kgZGV2aWNlIHdpdGggdGhlIE1BTkEmIzM5O3MgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSBpdC4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYG1hbmFfcHJvYmVgIHdpbGwgc3VjY2VlZCB3aXRoIHRoaXMgZmFrZSBkZXZpY2UuIEkgbmVlZCB0byBleGFtaW5lIGBtYW5hX3Byb2JlYCB0byB2ZXJpZnkgdGhpcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIHdvbiYjMzk7dCBiaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMiAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE3Nz1zdGF0aWMgaW50IG1hbmFfZ2RfcXVlcnlfbWF4X3Jlc291cmNlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNjA6XHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI2MS1cdCAqIHNvIE1TSS1YIGFuZCBxdWV1ZSBidWRnZXRpbmcgbWF0Y2hlcyB0aGUgYWN0dWFsIHBvcnQgY291bnQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjI1Mj1zdGF0aWMgaW50IG1hbmFfZ2RfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzMDg6XHRlcnIgPSBtYW5hX3Byb2JlKFx1MDAyNmdjLVx1MDAzZW1hbmEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzMDktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDYtXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjIzNDc6XHQgKiBFUFJPVE8gZnJvbSBtYW5hX2dkX3NldHVwKCksIG1hbmFfcHJvYmUoKSBvciBtYW5hX3JkbWFfcHJvYmUoKSwgb3JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDgtXHQgKiB3ZSByZWNlaXZlZCBhIGhhcmR3YXJlIHJlc2V0IGV2ZW50IG92ZXIgSFdDIGludGVycnVwdC4gSW4gdGhpcyBjYXNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0MTA9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDE5Olx0ZXJyID0gbWFuYV9wcm9iZShcdTAwMjZnYy1cdTAwM2VtYW5hLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0MjAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNDcxPWludCBtYW5hX2RldGFjaChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgYm9vbCBmcm9tX2Nsb3NlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jOjM1MDg6c3RhdGljIGludCBtYW5hX3Byb2JlX3BvcnQoc3RydWN0IG1hbmFfY29udGV4dCAqYWMsIGludCBwb3J0X2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA5LVx0XHRcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICoqbmRldl9zdG9yYWdlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYz0zNzM4PXN0YXRpYyB2b2lkIG1hbmFfZ2Zfc3RhdHNfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNzYxOmludCBtYW5hX3Byb2JlKHN0cnVjdCBnZG1hX2RldiAqZ2QsIGJvb2wgcmVzdW1pbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4MzUtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFjLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozODM2Olx0XHRcdGVyciA9IG1hbmFfcHJvYmVfcG9ydChhYywgaSwgXHUwMDI2YWMtXHUwMDNlcG9ydHNbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM4MzctXHRcdFx0LyogTG9nIHRoZSBwb3J0IGZvciB3aGljaCB0aGUgcHJvYmUgZmFpbGVkLCBzdG9wIHByb2JpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQyMAoJCQkJCQkJb3V0cHV0OiAxMjQKCQkJCQkJCXRob3VnaHRzOiAzNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTUFOQSBTUi1JT1YgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgbWFuYV9nZF9wcm9iZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uOyBpdCYjMzk7cyB0aGUgZ2F0ZXdheSBmb3IgdGhlIE1BTkEgZHJpdmVyIHRvIGJpbmQgdG8gdGhlIGhhcmR3YXJlLiBBIGZhaWx1cmUgdGhlcmUgbWVhbnMgdGhlIGRyaXZlciBpc24mIzM5O3QgYm91bmQsIHdoaWNoIGltbWVkaWF0ZWx5IGJsb2NrcyB0aGUgc3Vic2VxdWVudCBzdGVwcy4gQnV0LCB3YWl0Li4uc3l6a2FsbGVyISBJdCBoYXMgdGhhdCBhbWF6aW5nIGFiaWxpdHkgdG8gaW5qZWN0IGRhdGEgaW50byBQQ0kgY29uZmlnIHNwYWNlIGFuZCBNTUlPLiBUaGF0JiMzOTtzIGEgZ2FtZS1jaGFuZ2VyISBFdmVuIGlmIHRoZSBpbml0aWFsIHByb2JlIGJvcmtzLCBzeXprYWxsZXIgKm1pZ2h0KiBzdGlsbCBiZSBhYmxlIHRvIGhpdCBzb21lIGNvZGUgcGF0aHMgZHVyaW5nIG9yIGFmdGVyIGEgcGFydGlhbCBwcm9iZSwgYW5kIEkgcmVhbGx5IHRoaW5rIGl0IGNhbi4KClRoZSByZWFsIHRhcmdldCBoZXJlIGlzIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAuIFRoaXMgZnVuY3Rpb24gaXMgYWNjZXNzaWJsZSB2aWEgc3lzZnMsIHdoaWNoICphYnNvbHV0ZWx5KiByZXF1aXJlcyB0aGUgZHJpdmVyIHRvIGJlIGJvdW5kIGZpcnN0LiBJZiB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IGJpbmQgaW5pdGlhbGx5LCB3ZSB3b24mIzM5O3QgaGF2ZSB0aGUgYHNyaW92X251bXZmc2Agc3lzZnMgZW50cnkuIEJ1dCBoZXJlJiMzOTtzIHRoZSBjbGV2ZXIgYml0OiBzeXprYWxsZXLigJlzIGBzeXpfcGNpX2VtdWxhdGlvbmAgY2FuIGJlIHVzZWQgdG8gKmVtdWxhdGUqIHRoZSBNTUlPIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBwcm9iZSB3b3VsZCBwZXJmb3JtISBJdCBjYW4gZ2l2ZSB1cyBhcmJpdHJhcnkgcmVzcG9uc2VzIHRvIHRoZXNlIHJlYWRzISBUaGlzIG1lYW5zIHRoYXQsIHRoZW9yZXRpY2FsbHksIHdlIG1pZ2h0IGJlIGFibGUgdG8gdHJpY2sgdGhlIGRyaXZlciBpbnRvIGJpbmRpbmcuCgpTaW5jZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIGlzIHJlc3BvbnNpYmxlIGZvciBmdW5jdGlvbmFsIGNoYW5nZXMsIGl0IGNhbGxzIGBwY2lfZW5hYmxlX3NyaW92YCBhbmQgYHBjaV9kaXNhYmxlX3NyaW92YCwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzcG90IGZvciBmdXp6aW5nLgpUaGlzIGlzIGEgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnZXQgb3VyIGF0dGVudGlvbi4KClRoZXJlZm9yZSwgc2V0dGluZyBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYW5kIHRoZSBgRm9jdXNTeW1ib2xzOiBbJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7XWAsIGFzIHRoaXMgaXMgYSBkZWZpbml0ZSB0YXJnZXQuIFdlJiMzOTtsbCBlbmFibGUgY29uZmlndXJhdGlvbnMgcmVsZXZhbnQgdG8gdGhlIGRyaXZlciwgbmFtZWx5IGBFbmFibGVDb25maWdzOiBbJiMzNDtNSUNST1NPRlRfTUFOQSYjMzQ7LCAmIzM0O1BDSV9JT1YmIzM0OywgJiMzNDtQQ0lfSFlQRVJWJiMzNDssICYjMzQ7SFlQRVJWX1ZNQlVTJiMzNDssICYjMzQ7SFlQRVJWJiMzNDtdYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLCBhbmQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChgc3Jpb3ZfbnVtdmZzYCkgKmlmKiB3ZSBjYW4gZ2V0IHRoZSBkcml2ZXIgdG8gYmluZCB0byB0aGUgUENJIGRldmljZS4gQW5kLCB3ZSBjYW4gKmVtdWxhdGUqIHRoYXQsIGhvcGVmdWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDIgMDE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01JQ1JPU09GVF9NQU5BJiMzNDssCiAgICAmIzM0O1BDSV9JT1YmIzM0OywKICAgICYjMzQ7UENJX0hZUEVSViYjMzQ7LAogICAgJiMzNDtIWVBFUlZfVk1CVVMmIzM0OywKICAgICYjMzQ7SFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFuYV9zcmlvdl9jb25maWd1cmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUlDUk9TT0ZUX01BTkEmIzM0OywKICAgICYjMzQ7UENJX0lPViYjMzQ7LAogICAgJiMzNDtQQ0lfSFlQRVJWJiMzNDssCiAgICAmIzM0O0hZUEVSVl9WTUJVUyYjMzQ7LAogICAgJiMzNDtIWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYW5hX3NyaW92X2NvbmZpZ3VyZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MDEuMTQ4NzM5MDc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU3NjMzNzYzNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlDUk9TT0ZUX01BTkFcIixcbiAgICBcIlBDSV9JT1ZcIixcbiAgICBcIlBDSV9IWVBFUlZcIixcbiAgICBcIkhZUEVSVl9WTUJVU1wiLFxuICAgIFwiSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9zcmlvdl9jb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowMS4xNDg3NDM4NDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODQyNDUzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI4YTZmMjE3NDJlYjkyODA0NzgyY2Q4NzlkOGNiM2MyNzBmZGYzNThcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuaW5kZXggYTBmZGQwNTJkN2YxNjMuLjBiNzM4MGZkMWRhODIyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcXG5AQCAtMjQ0Niw2ICsyNDQ2LDIwIEBAIHN0YXRpYyB2b2lkIG1hbmFfZ2Rfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIFxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBtYW5hX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IG51bXZmcylcXG4re1xcbitcXHRpbnQgZXJyID0gMDtcXG4rXFxuK1xcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJSZXF1ZXN0ZWQgbnVtIFZGczogJWRcXFxcblxcXCIsIG51bXZmcyk7XFxuK1xcbitcXHRpZiAobnVtdmZzIFxcdTAwM2UgMClcXG4rXFx0XFx0ZXJyID0gcGNpX2VuYWJsZV9zcmlvdihwZGV2LCBudW12ZnMpO1xcbitcXHRlbHNlXFxuK1xcdFxcdHBjaV9kaXNhYmxlX3NyaW92KHBkZXYpO1xcbitcXG4rXFx0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcXG4rfVxcbitcXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcXG4gXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGX0RFVklDRV9JRCkgfSxcXG4gXFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfTUlDUk9TT0ZULCBNQU5BX1BGMl9ERVZJQ0VfSUQpIH0sXFxuQEAgLTI0NjEsNiArMjQ3NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG4gXFx0LnN1c3BlbmRcXHQ9IG1hbmFfZ2Rfc3VzcGVuZCxcXG4gXFx0LnJlc3VtZVxcdFxcdD0gbWFuYV9nZF9yZXN1bWUsXFxuIFxcdC5zaHV0ZG93blxcdD0gbWFuYV9nZF9zaHV0ZG93bixcXG4rXFx0LnNyaW92X2NvbmZpZ3VyZSA9IG1hbmFfc3Jpb3ZfY29uZmlndXJlLFxcbiB9O1xcbiBcXG4gc3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowMS42NDc5NTQxNzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjY0MTUzMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1JQ1JPU09GVF9NQU5BXCIsXG4gICAgXCJQQ0lfSU9WXCIsXG4gICAgXCJQQ0lfSFlQRVJWXCIsXG4gICAgXCJIWVBFUlZfVk1CVVNcIixcbiAgICBcIkhZUEVSVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hbmFfc3Jpb3ZfY29uZmlndXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBTUi1JT1YgY29uZmlndXJhdGlvbiBzdXBwb3J0IHRvIHRoZSBNQU5BIGRyaXZlci4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChzcmlvdl9udW12ZnMpIG9uY2UgdGhlIGRyaXZlciBiaW5kcyB0byBhIFBDSSBkZXZpY2UsIHdoaWNoIHN5emthbGxlciBjYW4gZW11bGF0ZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiOGE2ZjIxNzQyZWI5MjgwNDc4MmNkODc5ZDhjYjNjMjcwZmRmMzU4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMiAwMToxNjo1OSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmNcbmluZGV4IGEwZmRkMDUyZDdmMTYzLi4wYjczODBmZDFkYTgyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uY1xuQEAgLTI0NDYsNiArMjQ0NiwyMCBAQCBzdGF0aWMgdm9pZCBtYW5hX2dkX3NodXRkb3duKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIH1cbiBcbitzdGF0aWMgaW50IG1hbmFfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnVtdmZzKVxuK3tcbitcdGludCBlcnIgPSAwO1xuK1xuK1x0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiUmVxdWVzdGVkIG51bSBWRnM6ICVkXFxuXCIsIG51bXZmcyk7XG4rXG4rXHRpZiAobnVtdmZzIFx1MDAzZSAwKVxuK1x0XHRlcnIgPSBwY2lfZW5hYmxlX3NyaW92KHBkZXYsIG51bXZmcyk7XG4rXHRlbHNlXG4rXHRcdHBjaV9kaXNhYmxlX3NyaW92KHBkZXYpO1xuK1xuK1x0cmV0dXJuIGVyciA/IGVyciA6IG51bXZmcztcbit9XG4rXG4gc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG1hbmFfaWRfdGFibGVbXSA9IHtcbiBcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX01JQ1JPU09GVCwgTUFOQV9QRl9ERVZJQ0VfSUQpIH0sXG4gXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9NSUNST1NPRlQsIE1BTkFfUEYyX0RFVklDRV9JRCkgfSxcbkBAIC0yNDYxLDYgKzI0NzUsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbWFuYV9kcml2ZXIgPSB7XG4gXHQuc3VzcGVuZFx0PSBtYW5hX2dkX3N1c3BlbmQsXG4gXHQucmVzdW1lXHRcdD0gbWFuYV9nZF9yZXN1bWUsXG4gXHQuc2h1dGRvd25cdD0gbWFuYV9nZF9zaHV0ZG93bixcbitcdC5zcmlvdl9jb25maWd1cmUgPSBtYW5hX3NyaW92X2NvbmZpZ3VyZSxcbiB9O1xuIFxuIHN0YXRpYyBpbnQgX19pbml0IG1hbmFfZHJpdmVyX2luaXQodm9pZClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjAxLjY0Nzk1NTY4OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MjE0Njc0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQU5BIFNSLUlPViBDb25maWd1cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IGFkZHMgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCB0byB0aGUgTUFOQSBkcml2ZXIgaW4gYGdkbWFfbWFpbi5jYC4gVGhpcyBpcyBmb3IgU1ItSU9WIGNvbmZpZ3VyYXRpb24gaW4gdGhlIE1pY3Jvc29mdCBBenVyZSBOZXR3b3JrIEFkYXB0ZXIsIE1BTkEuIE15IGZpcnN0IHRob3VnaHQgaXMsIGlzIHRoaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE1BTkEgaXMgY2xvdWQtc3BlY2lmaWMgaGFyZHdhcmUuIEkga25vdyBRRU1VIGdlbmVyYWxseSBkb2Vzbid0IGVtdWxhdGUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgdmVyeSB3ZWxsLiBJdCdzIHVzdWFsbHkgbm90IGEgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlIGF0IGFsbCwgc28gZW11bGF0aW9uIGlzIHVubGlrZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSBpcyBhbnkgc29mdHdhcmUgZW11bGF0aW9uIGF2YWlsYWJsZS5cblxuSSdsbCBzdGFydCBzZWFyY2hpbmcgUUVNVSBvciB0aGUga2VybmVsIHNvdXJjZSBmb3IgY2x1ZXMsIG1heWJlIGxvb2sgZm9yIGBNQU5BX1BGX0RFVklDRV9JRGAgb3IgdGhlIGRyaXZlciBuYW1lIGl0c2VsZiwgYG1hbmFfZHJpdmVyYC4gV2FpdCBhIG1pbnV0ZSwgdGhvdWdoLi4uSSByZWNhbGwgdGhhdCBzeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMgYnkgaW5qZWN0aW5nIHZpcnR1YWwgUENJIGNvbmZpZ3VyYXRpb25zIOKAkyB0aGluZ3MgbGlrZSB2aGNpIG9yIGRpcmVjdGx5IGluamVjdGluZyBQQ0kgZGF0YS4gSXQgY2FuIHBva2UgYW5kIHByb2QgYXQgUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gU3l6a2FsbGVyLCBpbiBwcmluY2lwbGUsIGNhbiBmdXp6IFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbmNsdWRlIHRoaXMgb25lLiBTbyB0aGUgZmFjdCB0aGF0IGl0ICppcyogYSBQQ0kgZGV2aWNlIHN1ZGRlbmx5IGdpdmVzIG1lIG1vcmUgb3B0aW9ucy5cblxuQnV0IGlzIGZ1enppbmcgZXZlbiB0aGUgcmlnaHQgYXBwcm9hY2ggaGVyZT8gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIGlzIGFkZGluZyBgbWFuYV9zcmlvdl9jb25maWd1cmVgLCB3aGljaCBtZWFucyB0aGUgY29kZSBjYWxscyBgcGNpX2VuYWJsZV9zcmlvdmAgYW5kIGBwY2lfZGlzYWJsZV9zcmlvdmAuIFRoaXMgbG9va3MgbGlrZSBmdW5jdGlvbmFsIGNvZGUgdGhhdCBjb3VsZCBiZSB0cmlja3kuIEZ1bmN0aW9uYWwgY29kZSBpcyBhbHdheXMgaGFyZGVyIHRvIGZ1enogYmVjYXVzZSB5b3UgbmVlZCB0byBzYXRpc2Z5IG1vcmUgcHJlcmVxdWlzaXRlcy4gSXQncyBub3QgYSBtZW1vcnkgY29ycnVwdGlvbiBidWcuIFNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgS2NvbmZpZyBzZXR0aW5ncy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmUgcHJlc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEwOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjA3LjU2OTQyNTI2NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDY5NDU3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtYW5hX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MjQ2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgbWFuYV9pZF90YWJsZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDcwOnN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBtYW5hX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDcxLVxcdC5uYW1lXFx0XFx0PSBcXFwibWFuYVxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI0ODE6c3RhdGljIGludCBfX2luaXQgbWFuYV9kcml2ZXJfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0ODIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQ5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDkxOlxcdGVyciA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNm1hbmFfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDkyLVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI0OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUwMDpzdGF0aWMgdm9pZCBfX2V4aXQgbWFuYV9kcml2ZXJfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjUxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNTE3OlxcdHBjaV91bnJlZ2lzdGVyX2RyaXZlcihcXHUwMDI2bWFuYV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTI1MTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI1MjQ6bW9kdWxlX2luaXQobWFuYV9kcml2ZXJfaW5pdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjUyNTptb2R1bGVfZXhpdChtYW5hX2RyaXZlcl9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNTI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzowNy42NTAxMjQ4MDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODI1MDQ0MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipLY29uZmlnIENoZWNrIGZvciBNQU5BKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIFRoZSBtZW50aW9uIG9mIFwiTUFOQVwiIC0gd2hldGhlciBpdCByZWZlcnMgdG8gYSBzcGVjaWZpYyBmZWF0dXJlLCBhIG1vZHVsZSwgb3IgYSBtb3JlIGFic3RyYWN0IGNvbmNlcHQgd2l0aGluIHRoZSBzeXN0ZW0gLSBkZW1hbmRzIGEgS2NvbmZpZyBpbnNwZWN0aW9uLiBUaGlzIGlzIHRoZSBjZW50cmFsIGNvbmZpZ3VyYXRpb24gc3lzdGVtOyBpdCdzIHRoZSBnYXRla2VlcGVyIHRoYXQgZGVmaW5lcyB3aGF0J3MgYnVpbHQsIGhvdyBpdCdzIGJ1aWx0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLlxuXG5JJ20gYXNzdW1pbmcgd2UncmUgZGVhbGluZyB3aXRoIGEgY29kZWJhc2Ugd2hlcmUgS2NvbmZpZyBpcyB0aGUgZG9taW5hbnQgY29uZmlndXJhdGlvbiBtZWNoYW5pc20uIElmIGl0J3MgYSBuZXdlciBzeXN0ZW0gd2l0aCBhbHRlcm5hdGl2ZSBtZXRob2RzLCBzdWNoIGFzIGEgZGVjbGFyYXRpdmUgY29uZmlndXJhdGlvbiBmaWxlIGZvcm1hdCBvciBhIGRlZGljYXRlZCBidWlsZCBzeXN0ZW0gY29uZmlndXJhdGlvbiBzeXN0ZW0gKGxpa2UgQ01ha2UncyksIHRoYXQgd291bGQgYmUgdGhlIHN0YXJ0aW5nIHBvaW50LCBidXQgS2NvbmZpZyBpcyB0aGUgbW9zdCBsaWtlbHkgaW5pdGlhbCBwbGFjZSB0byBpbnZlc3RpZ2F0ZS5cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBzdXNwZWN0czpcblxuKiAgICoqTG9jYXRpb246KiogV2hlcmUgd291bGQgTUFOQSByZWxhdGVkIG9wdGlvbnMgYmUgbG9jYXRlZCB3aXRoaW4gdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmU/XG4qICAgKipEZXBlbmRlbmNpZXM6KiogV2hhdCBvdGhlciBvcHRpb25zIG9yIGZlYXR1cmVzIGRvZXMgXCJNQU5BXCIgZGVwZW5kIG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZmxpY3Rpbmcgb3B0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZD9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlcmUgYW55IGFzc29jaWF0ZWQgaGVscCB0ZXh0IG9yIGRvY3VtZW50YXRpb24gYXR0YWNoZWQgdG8gdGhlIEtjb25maWcgb3B0aW9ucyB0aGF0IHByb3ZpZGVzIGluc2lnaHQgaW50byBcIk1BTkEnc1wiIHB1cnBvc2UgYW5kIHVzYWdlP1xuKiAgICoqRGVmYXVsdCBWYWx1ZXM6KiogV2hhdCBhcmUgdGhlIGRlZmF1bHQgdmFsdWVzIGNvbmZpZ3VyZWQgaW4gS2NvbmZpZz8gQXJlIHRob3NlIGRlZmF1bHQgdmFsdWVzIHN1aXRhYmxlIGZvciBteSB1c2UgY2FzZSBvciBkbyB0aGV5IHJlcXVpcmUgbW9kaWZpY2F0aW9uP1xuXG5UaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZSBzdGF0ZSBvZiBNQU5BLiBJcyBpdCBlbmFibGVkLCBkaXNhYmxlZCwgcGFydGlhbGx5IGVuYWJsZWQ/IFdoYXQgY29udHJvbHMgaXRzIGNvbmZpZ3VyYXRpb24/IElzIGl0IGV2ZW4gYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24gY2hvaWNlcyByZWxhdGVkIHRvIE1BTkE/IEkgbmVlZCBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNldHRpbmdzIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB0aGUgc3lzdGVtIGluIHdoaWNoIGl0IG9wZXJhdGVzLiBMZXQncyBzZWUgd2hhdCBLY29uZmlnIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MzUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoxMS40NzUxNzA5MTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njc3NTAwOTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1JQ1JPU09GVF9NQU5BXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWc9MTY9aWYgTkVUX1ZFTkRPUl9NSUNST1NPRlRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoxODpjb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MTEuNTQyOTMwMTU0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3OTk3NDY1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhvc2UgdGhvdWdodHMgZnJvbSBhIGZpcnN0LXBlcnNvbiwgZXhwZXJ0IHBlcnNwZWN0aXZlLCBhaW1pbmcgZm9yIGEgZnVsc29tZSByZW5kZXJpbmc6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU1ItSU9WL1BDSV9JT1YgUmVsYXRpb25zaGlwKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBQQ0lfSU9WIGlzIGFjdHVhbGx5IGEgbmVjZXNzYXJ5IGNvbXBvbmVudCBmb3IgU1ItSU9WIGZ1bmN0aW9uYWxpdHkuIFRoaXMgaXNuJ3QganVzdCBhIGJhc2ljIHF1ZXN0aW9uLCBpdCdzIGFib3V0IHVuZGVyc3RhbmRpbmcgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGFuZCB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGxpZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBzdHJpY3QgZGVwZW5kZW5jeSwgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT9cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IGl0J3MgcHJvYmFibHkgbm90IGEgc2ltcGxlIFwieWVzXCIgb3IgXCJuby5cIiBTUi1JT1YsIGFzIGFuIGFyY2hpdGVjdHVyZSwgaXMgYWJvdXQgYWxsb3dpbmcgYSBzaW5nbGUgcGh5c2ljYWwgUENJIEV4cHJlc3MgZGV2aWNlIHRvIGFwcGVhciBhcyBtdWx0aXBsZSBsb2dpY2FsIGRldmljZXMuIEJ1dCB3aGVyZSBkb2VzIFBDSV9JT1YgZml0IGludG8gdGhhdCBwaWN0dXJlPyBJcyBpdCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaXNtIGJ5IHdoaWNoIHRoaXMgdmlydHVhbGl6YXRpb24gaXMgYWNoaWV2ZWQsIG9yIGRvZXMgU1ItSU9WIG9mZmVyIG11bHRpcGxlIGltcGxlbWVudGF0aW9uIGNob2ljZXMsIHNvbWUgb2Ygd2hpY2ggKm1pZ2h0KiBsZXZlcmFnZSBQQ0lfSU9WIHdoaWxlIG90aGVycyBkb24ndD8gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSdzIGEgbnVhbmNlZCByZWxhdGlvbnNoaXAgaGVyZS5cblxuSSdtIHRoaW5raW5nIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIFBDSSBFeHByZXNzIHNwZWNpZmljYXRpb24gYW5kIGl0cyBoYW5kbGluZyBvZiBTUi1JT1YuIEkgbmVlZCB0byB0cmFjZSB0aGUgZGF0YSBmbG93LCB0aGUgY29uZmlndXJhdGlvbiBzcGFjZSBtYXBwaW5ncywgdGhlIGludGVycnVwdCByb3V0aW5nIOKAkyBhbGwgb2YgdGhlIGRldGFpbHMgdGhhdCB3aWxsIHRlbGwgbWUgaG93IHRoZSBob3N0IHNlZXMgdGhlIHZpcnR1YWwgZnVuY3Rpb25zIGFuZCBob3cgdGhleSdyZSBtYW5hZ2VkLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBzdGFuZGFyZCBhbmQgc29tZSBpbXBsZW1lbnRhdGlvbiBleGFtcGxlcy4gSSBtYXkgYWxzbyBuZWVkIHRvIGNoZWNrIHRoZSBQQ0ktU0lHIHNwZWNpZmljYXRpb25zLiBUaGUga2V5IGlzIHRvIHNlZSB3aGV0aGVyIHRoZSBwcmVzZW5jZSBvZiBQQ0lfSU9WIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhIGRldmljZSB0byBhZHZlcnRpc2UgU1ItSU9WIGNhcGFiaWxpdHkuIElzIFBDSV9JT1YgYSBjb3JlIHN0YW5kYXJkIGZlYXR1cmUgb3IgYW4gb3B0aW9uYWwgb25lPyBJIG5lZWQgdG8gYmUgcHJlY2lzZSBhYm91dCB0aGVzZSBkaXN0aW5jdGlvbnMuXG5cbk15IHVsdGltYXRlIGdvYWwgaXMgdG8gcGlucG9pbnQgaG93IHRoZXNlIHR3byBjb25jZXB0cyDigJMgU1ItSU9WIGFuZCBQQ0lfSU9WIOKAkyBhcmUgcmVsYXRlZCBhbmQgZGV0ZXJtaW5lIGlmIHRoZSBmb3JtZXIgYWJzb2x1dGVseSAqcmVxdWlyZXMqIHRoZSBsYXR0ZXIuIFRoZW4sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCByZWxhdGlvbnNoaXAuIEl0J3MgdGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoxNS40MjI5MDY5NjFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3Nzc1MDM0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUENJX0lPVlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3BjaS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvS2NvbmZpZz0xNTQ9Y29uZmlnIFBDSV9CUklER0VfRU1VTFxcbi0tXFxuZHJpdmVycy9wY2kvS2NvbmZpZy0xNTYtXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoxNTc6Y29uZmlnIFBDSV9JT1ZcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJQQ0kgSU9WIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjE2LjUwMDY2MDk5OVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODY1MzAwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTWFuYSBTUklPViBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ug4oCTIHRoYXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUga2V5IHRoaW5nIGlzIHRoYXQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBzeXNmcyB2aWEgYHNyaW92X251bXZmc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJZZXAsIHdlIHNob3VsZCBkZWZpbml0ZWx5IGZ1enogdGhpcy5cIiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBgbWFuYV9zcmlvdl9jb25maWd1cmVgIHN5bWJvbCBpdHNlbGYuIEknbGwgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgUENJX0lPVmAgY29uZmlndXJhdGlvbnMgZW5hYmxlZCB0byBtYWtlIHRoaXMgd29yay5cblxuV2FpdCBhIHNlY29uZOKApiBDYW4gSSBhY3R1YWxseSAqcmVhY2gqIGBtYW5hX3NyaW92X2NvbmZpZ3VyZWAgd2l0aCBzeXprYWxsZXI/IEl0IGNhbiB3cml0ZSB0byBzeXNmcyBmaWxlcywgd2hpY2ggbWVhbnMgaXQgY2FuIG1vZGlmeSBgc3Jpb3ZfbnVtdmZzYC4gQW5kLCBjcnVjaWFsbHksIHN5emthbGxlciAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBUaGF0J3MgcGVyZmVjdC4gVGhpcyBpcyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgaW4gdG9vIGRlZXAsIGxldCdzIGp1c3QgZG8gYSBxdWljayBzYW5pdHkgY2hlY2sgYW5kIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIHBvdGVudGlhbCBlbnRyeSBwb2ludHMuIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTQyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjIwLjQ4NzE5Mjg3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5NDc3MjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb24uKlBDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEF6dXJlIE5ldHdvcmsgQWRhcHRlciAoTUFOQSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyMDpcXHRkZXBlbmRzIG9uIFBDSV9NU0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFg4Nl82NCB8fCAoQVJNNjQgXFx1MDAyNlxcdTAwMjYgIUNQVV9CSUdfRU5ESUFOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnOjIyOlxcdGRlcGVuZHMgb24gUENJX0hZUEVSVlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTIzLVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjIwLjg0NjY3NTA5NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjYyNDM5NDc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgYSBmaXJzdC1wZXJzb24gc3VtbWFyeTpcblxuKipEaWdnaW5nIGludG8gRGVwZW5kZW5jeSBDaGFpbnMqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGBNSUNST1NPRlRfTUFOQWAuIEltbWVkaWF0ZWx5LCBpdCBzdHJpa2VzIG1lIHRoYXQgYE1JQ1JPU09GVF9NQU5BYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGBQQ0lfSFlQRVJWYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgaGFuZGxlIG9uIGBQQ0lfSFlQRVJWYC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBtb2R1bGUgaXMgcmVhbGx5IGRvaW5nIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGlzIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhhdCBkZXBlbmRlbmN5IHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUxMzksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoyMy41MDkxMTczNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc2NDM1NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQQ0lfSFlQRVJWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9LY29uZmlnPTIyOT1jb25maWcgUENJX0xBQkVMXFxuLS1cXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzMi1cXG5kcml2ZXJzL3BjaS9LY29uZmlnOjIzMzpjb25maWcgUENJX0hZUEVSVlxcbmRyaXZlcnMvcGNpL0tjb25maWctMjM0LVxcdHRyaXN0YXRlIFxcXCJIeXBlci1WIFBDSSBGcm9udGVuZFxcXCJcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZz0yMzU9Y29uZmlnIFBDSUVfTVQ3NjIxXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWctMjQyLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvS2NvbmZpZzoyNDM6Y29uZmlnIFBDSV9IWVBFUlZfSU5URVJGQUNFXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnLTI0NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgUENJIEludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjMuNTg1NTU3Nzk3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMzY3NzA2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCdzIGltbWVkaWF0ZWx5IGNsZWFyIHdlIG5lZWQgdGhlc2UgdGhyZWUga2V5IGNvbXBvbmVudHM6IGBNSUNST1NPRlRfTUFOQWAsIGBQQ0lfSFlQRVJWYCwgYW5kIGBQQ0lfSU9WYC4gTm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZS4gQnV0IHdhaXQgYSBtaW51dGXigKYgdGhlIGBQQ0lfSFlQRVJWYCBlbGVtZW50IGlzIHJpbmdpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgaXQgbGlrZWx5IGhhcyBhIGRlcGVuZGVuY3kgb24gYEhZUEVSVmAuIExldCdzIGNvbmZpcm0gdGhhdCBiZWZvcmUgd2UgcHJvY2VlZC4gV2UgZG9uJ3Qgd2FudCB0byBnZXQgY2F1Z2h0IHVwIHdpdGggYW55IHVucmVzb2x2YWJsZSBpc3N1ZXMgZG93biB0aGUgbGluZS4gSXQncyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgUENJX0hZUEVSVmAgZGVwZW5kZW5jaWVzIGFuZCBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4gTGV0J3MgbWFrZSBzdXJlIHRoZXNlIGJ1aWxkaW5nIGJsb2NrcyBhcmUgd2VsbCB1bmRlcnN0b29kIGFuZCBjb25maWd1cmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTEwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjYuNzIyMzMwMzYxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzg4MTE5ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvbi4qSFlQRVJWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvcGNpL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvS2NvbmZpZz0yMzM9Y29uZmlnIFBDSV9IWVBFUlZcXG5kcml2ZXJzL3BjaS9LY29uZmlnLTIzNC1cXHR0cmlzdGF0ZSBcXFwiSHlwZXItViBQQ0kgRnJvbnRlbmRcXFwiXFxuZHJpdmVycy9wY2kvS2NvbmZpZzoyMzU6XFx0ZGVwZW5kcyBvbiAoKFg4NiBcXHUwMDI2XFx1MDAyNiBYODZfNjQpIHx8IEFSTTY0KSBcXHUwMDI2XFx1MDAyNiBIWVBFUlZfVk1CVVMgXFx1MDAyNlxcdTAwMjYgUENJX01TSSBcXHUwMDI2XFx1MDAyNiBTWVNGU1xcbmRyaXZlcnMvcGNpL0tjb25maWctMjM2LVxcdHNlbGVjdCBQQ0lfSFlQRVJWX0lOVEVSRkFDRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzoyNy4xMDExNDcyNzZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjQ3ODk5MjkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgb24gSFlQRVJWX1ZNQlVTKipcblxuT2theSwgc28gdGhlIGFyY2hpdGVjdHVyZSBpbiBxdWVzdGlvbiBoaW5nZXMgb24gYEhZUEVSVl9WTUJVU2AuIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IGFuZCBob3cgaXQgaW5mbHVlbmNlcyB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBMZXQncyBkaWcgaW50byB0aGUgZGV0YWlscyBhbmQgZGV0ZXJtaW5lIGl0cyByb2xlLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBIWVBFUlZfVk1CVVNgIGRpcmVjdGx5LiBVbmRlcnN0YW5kaW5nICppdHMqIGJlaGF2aW9yIGlzIHBhcmFtb3VudCB0byB1bmRlcnN0YW5kIHRoaXMgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjkuNTgwMTQxOTU5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODIxNDAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSFlQRVJWX1ZNQlVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvaHYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2h2L0tjb25maWc9NTM9Y29uZmlnIEhZUEVSVl9CQUxMT09OXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTktXFxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MjkuNjM4MzYzNDQ4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwNjY0NTYwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgYSBTcGVjaWZpYyBLZXJuZWwgRmVhdHVyZSoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgZW5hYmxpbmcgYE1JQ1JPU09GVF9NQU5BYCBhbmQgYFBDSV9JT1ZgLiBXYWl0IGEgc2Vjb25kLCBpZiB3ZSBqdXN0IGdvIHdpdGggYE1JQ1JPU09GVF9NQU5BYCwgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIGdvaW5nIHRvIGhhbmRsZSBpdHMgZGVwZW5kZW5jaWVzLCBuYW1lbHksIGBQQ0lfSFlQRVJWYCBhbmQgYEhZUEVSVl9WTUJVU2AuIFN5emJvdCB3aWxsIHRha2UgY2FyZSBvZiBlbmFibGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaWYgdGhleSBhcmUgbm90IGV4cGxpY2l0bHkgZW5hYmxlZC4gQnV0LCBmb3IgY2xhcml0eSBhbmQgcG90ZW50aWFsbHkgZm9yIGJldHRlciBjb250cm9sLCBpdCdzIGdlbmVyYWxseSBiZXN0IHByYWN0aWNlIHRvIGJlIGV4cGxpY2l0IHdoZW4gbGlzdGluZyBvcHRpb25zIHRoYXQgYXJlbid0IGVuYWJsZWQgYnkgZGVmYXVsdC4gR2l2ZW4gdGhpcywgSSdtIGxlYW5pbmcgdG93YXJkIGxpc3RpbmcgZXZlcnl0aGluZyBvdXQuIExldCBtZSBhZGQgYm90aCBgTUlDUk9TT0ZUX01BTkFgIGFuZCBgUENJX0lPVmAsIGJlY2F1c2UgdGhhdCBpcyB3aGF0IHdlIGFyZSBhaW1pbmcgZm9yLiBJJ2xsIGFkZCBgUENJX0hZUEVSVmAgYW5kIGBIWVBFUlZfVk1CVVNgIHRvIHRoZSBsaXN0IGp1c3QgdG8gYmUgY29tcGxldGVseSBzYWZlLCBhbmQgZW5zdXJlIG5vIHByb2JsZW1zIGFyaXNlLiBPaCwgYW5kIG9mIGNvdXJzZSwgYEhZUEVSVmAgaXMgdGhlIG92ZXJhcmNoaW5nLCBjb3JlIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE0NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMlQwMToxNzozMy43MDQ4MjI4MDlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjYwNjQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBIWVBFUlZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9odi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaHYvS2NvbmZpZz0zPW1lbnUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnRcXFwiXFxuZHJpdmVycy9odi9LY29uZmlnLTQtXFxuZHJpdmVycy9odi9LY29uZmlnOjU6Y29uZmlnIEhZUEVSVlxcbmRyaXZlcnMvaHYvS2NvbmZpZy02LVxcdGJvb2wgXFxcIk1pY3Jvc29mdCBIeXBlci1WIGNvcmUgaHlwZXJ2aXNvciBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTE2LVxcbmRyaXZlcnMvaHYvS2NvbmZpZzoxNzpjb25maWcgSFlQRVJWX1ZUTF9NT0RFXFxuZHJpdmVycy9odi9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkVuYWJsZSBMaW51eCB0byBib290IGluIFZUTCBjb250ZXh0XFxcIlxcbi0tXFxuZHJpdmVycy9odi9LY29uZmlnLTQyLVxcbmRyaXZlcnMvaHYvS2NvbmZpZzo0Mzpjb25maWcgSFlQRVJWX1RJTUVSXFxuZHJpdmVycy9odi9LY29uZmlnLTQ0LVxcdGRlZl9ib29sIEhZUEVSViBcXHUwMDI2XFx1MDAyNiBYODZcXG5kcml2ZXJzL2h2L0tjb25maWctNDUtXFxuZHJpdmVycy9odi9LY29uZmlnOjQ2OmNvbmZpZyBIWVBFUlZfVVRJTFNcXG5kcml2ZXJzL2h2L0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFV0aWxpdGllcyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTItXFxuZHJpdmVycy9odi9LY29uZmlnOjUzOmNvbmZpZyBIWVBFUlZfQkFMTE9PTlxcbmRyaXZlcnMvaHYvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiTWljcm9zb2Z0IEh5cGVyLVYgQmFsbG9vbiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2h2L0tjb25maWctNTktXFxuZHJpdmVycy9odi9LY29uZmlnOjYwOmNvbmZpZyBIWVBFUlZfVk1CVVNcXG5kcml2ZXJzL2h2L0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIk1pY3Jvc29mdCBIeXBlci1WIFZNQnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MzMuNzYyNDg4NjE4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MDAzODQ5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBSZWFjaGluZyB0aGUgQ29kZSB2aWEgUUVNVSBhbmQgU3l6a2FsbGVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCBhIHBhdGggdG8gZXhlY3V0ZSBzcGVjaWZpYyBjb2RlIHJlbGF0ZWQgdG8gdGhlc2UgY29tcG9uZW50czogYE1JQ1JPU09GVF9NQU5BYCwgYFBDSV9JT1ZgLCBgUENJX0hZUEVSVmAsIGBIWVBFUlZfVk1CVVNgLCBhbmQgYEhZUEVSVmAuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbGV2ZXJhZ2UgUUVNVSBhbmQgc3l6a2FsbGVyIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGRyaXZlciBjYWxsYmFja3MuXG5cblRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIEkgcmVhY2ggdGhlIGRlc2lyZWQgY29kZSBwYXRocyB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyBZZXMsIHRoaXMgYXBwZWFycyBmZWFzaWJsZSBiZWNhdXNlIHN5emthbGxlcidzIGFiaWxpdHkgdG8gZW11bGF0ZSBQQ0kgZGV2aWNlcyBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgc3lzZnMgZmlsZXN5c3RlbSBpcyBwb3dlcmZ1bC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdoZW4gc3l6a2FsbGVyIHdyaXRlcyB0byBgc3Jpb3ZfbnVtdmZzYCB0aHJvdWdoIHN5c2ZzLCB0aGlzIHdpbGwgaW52b2tlIHRoZSBgc3Jpb3ZfY29uZmlndXJlYCBjYWxsYmFjayB3aXRoaW4gdGhlIGRyaXZlci5cblxuVGhlIGJlYXV0eSBvZiB0aGlzIGFwcHJvYWNoIGlzIHRoYXQgdGhlIGRyaXZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZnVsbHkgb3BlcmF0aW9uYWwgb3IgY29ubmVjdGVkIHRvIGFjdHVhbCBoYXJkd2FyZSBmb3IgYHNyaW92X2NvbmZpZ3VyZWAgdG8gYmUgY2FsbGVkLiBQcm9iaW5nIGFuZCBiaW5kaW5nIGFyZSB0aGUgbmVjZXNzYXJ5IGNvbmRpdGlvbnMuIFNvLCBpZiBzeXprYWxsZXIgY2FuIGluamVjdCBhIGZha2UgUENJIGRldmljZSB3aXRoIHRoZSBNQU5BJ3MgdmVuZG9yIGFuZCBkZXZpY2UgSUQsIHRoZSBkcml2ZXIgd2lsbCBwcm9iZSBpdC4gVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgYG1hbmFfcHJvYmVgIHdpbGwgc3VjY2VlZCB3aXRoIHRoaXMgZmFrZSBkZXZpY2UuIEkgbmVlZCB0byBleGFtaW5lIGBtYW5hX3Byb2JlYCB0byB2ZXJpZnkgdGhpcy4gSWYgdGhlIHByb2JlIGZhaWxzLCB0aGUgZHJpdmVyIHdvbid0IGJpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4OTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6MzkuMjYyODc1MzE3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTc2MzEyNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYV9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTc3PXN0YXRpYyBpbnQgbWFuYV9nZF9xdWVyeV9tYXhfcmVzb3VyY2VzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjI2MDpcXHQvKiBDYXAgdG8gdGhlIHNhbWUgbGltaXQgdXNlZCBieSBtYW5hX3Byb2JlKCkgZm9yIHBvcnQgaW5zdGFudGlhdGlvbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNjEtXFx0ICogc28gTVNJLVggYW5kIHF1ZXVlIGJ1ZGdldGluZyBtYXRjaGVzIHRoZSBhY3R1YWwgcG9ydCBjb3VudC5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTIyNTI9c3RhdGljIGludCBtYW5hX2dkX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzA4OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjMwOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjM0Ni1cXHQgKiBIYXJkd2FyZSBjb3VsZCBiZSBpbiByZWNvdmVyeSBtb2RlIGFuZCB0aGUgSFdDIHJldHVybnMgVElNRURPVVQgb3JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyMzQ3OlxcdCAqIEVQUk9UTyBmcm9tIG1hbmFfZ2Rfc2V0dXAoKSwgbWFuYV9wcm9iZSgpIG9yIG1hbmFfcmRtYV9wcm9iZSgpLCBvclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIzNDgtXFx0ICogd2UgcmVjZWl2ZWQgYSBoYXJkd2FyZSByZXNldCBldmVudCBvdmVyIEhXQyBpbnRlcnJ1cHQuIEluIHRoaXMgY2FzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTI0MTA9aW50IG1hbmFfZ2RfcmVzdW1lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjQxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoyNDE5OlxcdGVyciA9IG1hbmFfcHJvYmUoXFx1MDAyNmdjLVxcdTAwM2VtYW5hLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yNDIwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9MzQ3MT1pbnQgbWFuYV9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGJvb2wgZnJvbV9jbG9zZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNTA3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYzozNTA4OnN0YXRpYyBpbnQgbWFuYV9wcm9iZV9wb3J0KHN0cnVjdCBtYW5hX2NvbnRleHQgKmFjLCBpbnQgcG9ydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvbWFuYV9lbi5jLTM1MDktXFx0XFx0XFx0ICAgc3RydWN0IG5ldF9kZXZpY2UgKipuZGV2X3N0b3JhZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM9MzczOD1zdGF0aWMgdm9pZCBtYW5hX2dmX3N0YXRzX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmMtMzc2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6Mzc2MTppbnQgbWFuYV9wcm9iZShzdHJ1Y3QgZ2RtYV9kZXYgKmdkLCBib29sIHJlc3VtaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zNzYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODM1LVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYy1cXHUwMDNlbnVtX3BvcnRzOyBpKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9tYW5hX2VuLmM6MzgzNjpcXHRcXHRcXHRlcnIgPSBtYW5hX3Byb2JlX3BvcnQoYWMsIGksIFxcdTAwMjZhYy1cXHUwMDNlcG9ydHNbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL21hbmFfZW4uYy0zODM3LVxcdFxcdFxcdC8qIExvZyB0aGUgcG9ydCBmb3Igd2hpY2ggdGhlIHByb2JlIGZhaWxlZCwgc3RvcCBwcm9iaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAyVDAxOjE3OjM5LjYyMDUxMzE3NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTQ1NzMwNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE1BTkEgU1ItSU9WIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBgbWFuYV9nZF9wcm9iZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uOyBpdCdzIHRoZSBnYXRld2F5IGZvciB0aGUgTUFOQSBkcml2ZXIgdG8gYmluZCB0byB0aGUgaGFyZHdhcmUuIEEgZmFpbHVyZSB0aGVyZSBtZWFucyB0aGUgZHJpdmVyIGlzbid0IGJvdW5kLCB3aGljaCBpbW1lZGlhdGVseSBibG9ja3MgdGhlIHN1YnNlcXVlbnQgc3RlcHMuIEJ1dCwgd2FpdC4uLnN5emthbGxlciEgSXQgaGFzIHRoYXQgYW1hemluZyBhYmlsaXR5IHRvIGluamVjdCBkYXRhIGludG8gUENJIGNvbmZpZyBzcGFjZSBhbmQgTU1JTy4gVGhhdCdzIGEgZ2FtZS1jaGFuZ2VyISBFdmVuIGlmIHRoZSBpbml0aWFsIHByb2JlIGJvcmtzLCBzeXprYWxsZXIgKm1pZ2h0KiBzdGlsbCBiZSBhYmxlIHRvIGhpdCBzb21lIGNvZGUgcGF0aHMgZHVyaW5nIG9yIGFmdGVyIGEgcGFydGlhbCBwcm9iZSwgYW5kIEkgcmVhbGx5IHRoaW5rIGl0IGNhbi5cblxuVGhlIHJlYWwgdGFyZ2V0IGhlcmUgaXMgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYC4gVGhpcyBmdW5jdGlvbiBpcyBhY2Nlc3NpYmxlIHZpYSBzeXNmcywgd2hpY2ggKmFic29sdXRlbHkqIHJlcXVpcmVzIHRoZSBkcml2ZXIgdG8gYmUgYm91bmQgZmlyc3QuIElmIHRoZSBkcml2ZXIgZG9lc24ndCBiaW5kIGluaXRpYWxseSwgd2Ugd29uJ3QgaGF2ZSB0aGUgYHNyaW92X251bXZmc2Agc3lzZnMgZW50cnkuIEJ1dCBoZXJlJ3MgdGhlIGNsZXZlciBiaXQ6IHN5emthbGxlcuKAmXMgYHN5el9wY2lfZW11bGF0aW9uYCBjYW4gYmUgdXNlZCB0byAqZW11bGF0ZSogdGhlIE1NSU8gcmVhZC93cml0ZSBvcGVyYXRpb25zIHRoYXQgdGhlIHByb2JlIHdvdWxkIHBlcmZvcm0hIEl0IGNhbiBnaXZlIHVzIGFyYml0cmFyeSByZXNwb25zZXMgdG8gdGhlc2UgcmVhZHMhIFRoaXMgbWVhbnMgdGhhdCwgdGhlb3JldGljYWxseSwgd2UgbWlnaHQgYmUgYWJsZSB0byB0cmljayB0aGUgZHJpdmVyIGludG8gYmluZGluZy5cblxuU2luY2UgYG1hbmFfc3Jpb3ZfY29uZmlndXJlYCBpcyByZXNwb25zaWJsZSBmb3IgZnVuY3Rpb25hbCBjaGFuZ2VzLCBpdCBjYWxscyBgcGNpX2VuYWJsZV9zcmlvdmAgYW5kIGBwY2lfZGlzYWJsZV9zcmlvdmAsIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3BvdCBmb3IgZnV6emluZy5cblRoaXMgaXMgYSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoaXMgc2hvdWxkIGdldCBvdXIgYXR0ZW50aW9uLlxuXG5UaGVyZWZvcmUsIHNldHRpbmcgYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFuZCB0aGUgYEZvY3VzU3ltYm9sczogW1wibWFuYV9zcmlvdl9jb25maWd1cmVcIl1gLCBhcyB0aGlzIGlzIGEgZGVmaW5pdGUgdGFyZ2V0LiBXZSdsbCBlbmFibGUgY29uZmlndXJhdGlvbnMgcmVsZXZhbnQgdG8gdGhlIGRyaXZlciwgbmFtZWx5IGBFbmFibGVDb25maWdzOiBbXCJNSUNST1NPRlRfTUFOQVwiLCBcIlBDSV9JT1ZcIiwgXCJQQ0lfSFlQRVJWXCIsIFwiSFlQRVJWX1ZNQlVTXCIsIFwiSFlQRVJWXCJdYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLCBhbmQgdGhpcyBpcyByZWFjaGFibGUgdmlhIHN5c2ZzIChgc3Jpb3ZfbnVtdmZzYCkgKmlmKiB3ZSBjYW4gZ2V0IHRoZSBkcml2ZXIgdG8gYmluZCB0byB0aGUgUENJIGRldmljZS4gQW5kLCB3ZSBjYW4gKmVtdWxhdGUqIHRoYXQsIGhvcGVmdWxseS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQyMCwiT3V0cHV0VG9rZW5zIjoxMjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDJUMDE6MTc6NDYuNzY2MjQ1MzkyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1ODU3ODgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNSUNST1NPRlRfTUFOQVwiLFxuICAgIFwiUENJX0lPVlwiLFxuICAgIFwiUENJX0hZUEVSVlwiLFxuICAgIFwiSFlQRVJWX1ZNQlVTXCIsXG4gICAgXCJIWVBFUlZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYW5hX3NyaW92X2NvbmZpZ3VyZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgU1ItSU9WIGNvbmZpZ3VyYXRpb24gc3VwcG9ydCB0byB0aGUgTUFOQSBkcml2ZXIuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzeXNmcyAoc3Jpb3ZfbnVtdmZzKSBvbmNlIHRoZSBkcml2ZXIgYmluZHMgdG8gYSBQQ0kgZGV2aWNlLCB3aGljaCBzeXprYWxsZXIgY2FuIGVtdWxhdGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUlDUk9TT0ZUX01BTkFcIixcbiAgICBcIlBDSV9JT1ZcIixcbiAgICBcIlBDSV9IWVBFUlZcIixcbiAgICBcIkhZUEVSVl9WTUJVU1wiLFxuICAgIFwiSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFuYV9zcmlvdl9jb25maWd1cmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFNSLUlPViBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIE1BTkEgZHJpdmVyLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3lzZnMgKHNyaW92X251bXZmcykgb25jZSB0aGUgZHJpdmVyIGJpbmRzIHRvIGEgUENJIGRldmljZSwgd2hpY2ggc3l6a2FsbGVyIGNhbiBlbXVsYXRlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowhwpdr[1] Phase: Succeeded StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 01:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 01:18:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2] Phase: Succeeded StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 01:18:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-02 01:18:15 +0000 UTC FinishedAt: 2026-07-02 01:18:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhwpdr/series-workflowhwpdr-convert-artifact-3380399025/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-02 01:18:49 +0000 UTC FinishedAt: 2026-07-02 01:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-02 01:18:49 +0000 UTC FinishedAt: 2026-07-02 01:41:19 +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:*1c357334-10c7-42e0-9d4a-d10963e97fd2,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-workflowhwpdr/series-workflowhwpdr-convert-artifact-3380399025/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": "e65e9261-b442-42e3-876e-41e1fc1edaad", "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-workflowhwpdr/series-workflowhwpdr-build-action-3648088543/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-02 01:18:49 +0000 UTC FinishedAt: 2026-07-02 01:41:17 +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:*1c357334-10c7-42e0-9d4a-d10963e97fd2,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-workflowhwpdr/series-workflowhwpdr-convert-artifact-3380399025/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": "e65e9261-b442-42e3-876e-41e1fc1edaad", "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-workflowhwpdr/series-workflowhwpdr-build-action-3648088543/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-02 01:41:19 +0000 UTC FinishedAt: 2026-07-02 01:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-02 01:41:19 +0000 UTC FinishedAt: 2026-07-02 01:41:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-02 01:41:19 +0000 UTC FinishedAt: 2026-07-02 01:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-02 01:41:19 +0000 UTC FinishedAt: 2026-07-02 01:41:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhwpdr/series-workflowhwpdr-convert-artifact-3336931844/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-02 01:41:29 +0000 UTC FinishedAt: 2026-07-02 01:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-02 01:41:29 +0000 UTC FinishedAt: 2026-07-02 01:43:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e65e9261-b442-42e3-876e-41e1fc1edaad,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-workflowhwpdr/series-workflowhwpdr-build-action-3648088543/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-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-02 01:43:45 +0000 UTC FinishedAt: 2026-07-02 01:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-02 01:43:45 +0000 UTC FinishedAt: 2026-07-02 01:43:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-02 01:43:45 +0000 UTC FinishedAt: 2026-07-02 02:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-02 01:43:45 +0000 UTC FinishedAt: 2026-07-02 02:13:18 +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:*1c357334-10c7-42e0-9d4a-d10963e97fd2,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-workflowhwpdr/series-workflowhwpdr-convert-artifact-3336931844/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": "6d9cdcbc-199b-450e-b3c6-956cee735154", "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-workflowhwpdr/series-workflowhwpdr-build-action-2822472720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-02 01:43:45 +0000 UTC FinishedAt: 2026-07-02 02:13:08 +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:*1c357334-10c7-42e0-9d4a-d10963e97fd2,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-workflowhwpdr/series-workflowhwpdr-convert-artifact-3336931844/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": "6d9cdcbc-199b-450e-b3c6-956cee735154", "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-workflowhwpdr/series-workflowhwpdr-build-action-2822472720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-02 02:13:18 +0000 UTC FinishedAt: 2026-07-02 02:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-02 02:13:18 +0000 UTC FinishedAt: 2026-07-02 02:13:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-02 02:13:18 +0000 UTC FinishedAt: 2026-07-02 02:15:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-02 02:13:18 +0000 UTC FinishedAt: 2026-07-02 02:15:00 +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:*6d9cdcbc-199b-450e-b3c6-956cee735154,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-workflowhwpdr/series-workflowhwpdr-build-action-2822472720/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-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +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":["mana_sriov_configure"],"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:*e65e9261-b442-42e3-876e-41e1fc1edaad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d9cdcbc-199b-450e-b3c6-956cee735154,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-workflowhwpdr/series-workflowhwpdr-build-action-3648088543/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-workflowhwpdr/series-workflowhwpdr-build-action-2822472720/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 02:15:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 02:15:18 +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":["mana_sriov_configure"],"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-workflowhwpdr/series-workflowhwpdr-convert-artifact-4160002061/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 02:15:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 02:15:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-02 02:15:10 +0000 UTC FinishedAt: 2026-07-02 02:15:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-02 02:15:40 +0000 UTC FinishedAt: 2026-07-02 03:06:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhwpdr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mana_sriov_configure"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"c75597caada080effbfbc0a7fb10dc2a3bb543ad","config_name":"upstream-apparmor-kasan.config","enable_configs":["MICROSOFT_MANA","PCI_IOV","PCI_HYPERV","HYPERV_VMBUS","HYPERV"],"series_id":"832a2ef9-5aa4-4a9a-81e2-e7b4ddc8736b","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-02 02:15:40 +0000 UTC FinishedAt: 2026-07-02 03:06:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e65e9261-b442-42e3-876e-41e1fc1edaad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6d9cdcbc-199b-450e-b3c6-956cee735154,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-workflowhwpdr/series-workflowhwpdr-build-action-3648088543/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-workflowhwpdr/series-workflowhwpdr-build-action-2822472720/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-workflowhwpdr/series-workflowhwpdr-convert-artifact-4160002061/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,}