Name: series-workflowm5s7n Phase: Succeeded StartedAt: 2026-06-29 08:19:24 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[0] Phase: Succeeded StartedAt: 2026-06-29 08:19:24 +0000 UTC FinishedAt: 2026-06-29 08:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[0].run-triage Phase: Succeeded StartedAt: 2026-06-29 08:19:24 +0000 UTC FinishedAt: 2026-06-29 08:30:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "7676c485-370a-464c-bf35-6dd73e0fe45b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_vmcb02_prepare_save", "svm_update_lbrv", "svm_set_msr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YzMwY2MzZGM5ODM5MDQzNDkwZDU5YzljMDZlMjM0NzkxNjM1YjM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDg6Mjg6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IGMxNDg1YzNlNjkxYzQzLi40ZmRjNThkMzhhZmUwNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbkBAIC04MDgsNyAmIzQzOzgwOCw4IEBAIHN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFxuIFx0aWYgKHVubGlrZWx5KG5ld192bWNiMTIgfHwgdm1jYjEyX2lzX2RpcnR5KGNvbnRyb2wsIFZNQ0JfRFIpKSkge1xuIFx0XHR2bWNiMDItXHUwMDNlc2F2ZS5kcjcgPSBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZHI3IHwgRFI3X0ZJWEVEXzE7XG4tXHRcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI2ICA9IHN2bS1cdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVztcbiYjNDM7XHRcdC8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi9cbiYjNDM7XHRcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI2ICA9IHN2bS1cdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfRklYRURfMSB8IERSNl9SVE07XG4gXHRcdHZtY2JfbWFya19kaXJ0eSh2bWNiMDIsIFZNQ0JfRFIpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlZjY5YTUxYWIyN2Y5OC4uYjRiMGZhNzMwOTE2NzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtODg0LDYgJiM0Mzs4ODQsOSBAQCB2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdFx0ICAgIChpc19ndWVzdF9tb2RlKHZjcHUpIFx1MDAyNlx1MDAyNiBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MQlJWKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKHN2bS1cdTAwM2VuZXN0ZWQuY3RsLm1pc2NfY3RsMiBcdTAwMjYgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpO1xuIFxuJiM0MztcdC8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqL1xuJiM0MztcdGVuYWJsZV9sYnJ2IHw9IChzdm0tXHUwMDNldm1jYi1cdTAwM2VzYXZlLmRiZ2N0bCBcdTAwMjYgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKTtcbiYjNDM7XG4gXHRpZiAoZW5hYmxlX2xicnYgXHUwMDI2XHUwMDI2ICFjdXJyZW50X2VuYWJsZV9sYnJ2KVxuIFx0XHRfX3N2bV9lbmFibGVfbGJydih2Y3B1KTtcbiBcdGVsc2UgaWYgKCFlbmFibGVfbGJydiBcdTAwMjZcdTAwMjYgY3VycmVudF9lbmFibGVfbGJydilcbkBAIC0zMTYwLDYgJiM0MzszMTYzLDEwIEBAIHN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbiBcdFx0XHRkYXRhIFx1MDAyNj0gfkRFQlVHQ1RMTVNSX0JURjtcbiBcdFx0fVxuIFxuJiM0MztcdFx0aWYgKChkYXRhIFx1MDAyNiBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpKVxuJiM0MztcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XG4gXHRcdGlmIChkYXRhIFx1MDAyNiBERUJVR0NUTF9SRVNFUlZFRF9CSVRTKVxuIFx0XHRcdHJldHVybiAxO1xuIFxuQEAgLTU1OTEsOSAmIzQzOzU1OTgsMTcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHN2bV9zZXRfY3B1X2NhcHModm9pZClcbiBcdCAqIENsZWFyIGNhcGFiaWxpdGllcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgYnkgY29tbW9uIGNvZGUsXG4gXHQgKiBidXQgdGhhdCByZXF1aXJlIGV4cGxpY2l0IFNWTSBzdXBwb3J0ICh0aGF0IGlzbiYjMzk7dCB5ZXQgaW1wbGVtZW50ZWQpLlxuIFx0ICovXG4tXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuIFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBMQlIgVmlydHVhbGl6YXRpb24gbXVzdCBiZSBlbmFibGVkIHRvIHN1cHBvcnQgQnVzTG9ja1RyYXAgaW5zaWRlIHRoZVxuJiM0MztcdCAqIGd1ZXN0LCBzaW5jZSBCdXNMb2NrVHJhcCBpcyBlbmFibGVkIHRocm91Z2ggTVNSX0lBMzJfREVCVUdDVExNU1IgYW5kXG4mIzQzO1x0ICogTVNSX0lBMzJfREVCVUdDVExNU1IgaXMgdmlydHVhbGl6ZWQgb25seSBpZiBMQlIgVmlydHVhbGl6YXRpb24gaXNcbiYjNDM7XHQgKiBlbmFibGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghbGJydilcbiYjNDM7XHRcdGt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7XG4mIzQzO1xuIFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XG4gXHRrdm1fZmluYWxpemVfY3B1X2NhcHMoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDcxNmJlMjFmYmEzMzU0Li5jNjVkYzNhY2I1ZDFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlMoYm9vbCwgdGVzdCwgdGVzdClcbiBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKHZvaWQsIGNsZWFyLCBfX2NsZWFyKVxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgc2V0LCBfX3NldClcbiBcbi0jZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH5ERUJVR0NUTE1TUl9MQlIpXG4mIzQzOyNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofihERUJVR0NUTE1TUl9MQlIgfCBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpKVxuIFxuIC8qIHN2bS5jICovXG4gZXh0ZXJuIGJvb2wgZHVtcF9pbnZhbGlkX3ZtY2I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlJiMzNDssCiAgICAmIzM0O3N2bV91cGRhdGVfbGJydiYjMzQ7LAogICAgJiMzNDtzdm1fc2V0X21zciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWMzMGNjM2RjOTgzOTA0MzQ5MGQ1OWM5YzA2ZTIzNDc5MTYzNWIzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDA4OjI4OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKaW5kZXggYzE0ODVjM2U2OTFjNDMuLjRmZGM1OGQzOGFmZTA2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKQEAgLTgwOCw3ICYjNDM7ODA4LDggQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAKIAlpZiAodW5saWtlbHkobmV3X3ZtY2IxMiB8fCB2bWNiMTJfaXNfZGlydHkoY29udHJvbCwgVk1DQl9EUikpKSB7CiAJCXZtY2IwMi0mZ3Q7c2F2ZS5kcjcgPSBzdm0tJmd0O25lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xOwotCQlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgID0gc3ZtLSZndDtuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVzsKJiM0MzsJCS8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi8KJiM0MzsJCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNiAgPSBzdm0tJmd0O25lc3RlZC5zYXZlLmRyNiB8IERSNl9GSVhFRF8xIHwgRFI2X1JUTTsKIAkJdm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9EUik7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlZjY5YTUxYWIyN2Y5OC4uYjRiMGZhNzMwOTE2NzAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtODg0LDYgJiM0Mzs4ODQsOSBAQCB2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCQkgICAgKGlzX2d1ZXN0X21vZGUodmNwdSkgJmFtcDsmYW1wOyBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MQlJWKSAmYW1wOyZhbXA7CiAJCQkgICAgKHN2bS0mZ3Q7bmVzdGVkLmN0bC5taXNjX2N0bDIgJmFtcDsgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpOwogCiYjNDM7CS8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqLwomIzQzOwllbmFibGVfbGJydiB8PSAoc3ZtLSZndDt2bWNiLSZndDtzYXZlLmRiZ2N0bCAmYW1wOyBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpOwomIzQzOwogCWlmIChlbmFibGVfbGJydiAmYW1wOyZhbXA7ICFjdXJyZW50X2VuYWJsZV9sYnJ2KQogCQlfX3N2bV9lbmFibGVfbGJydih2Y3B1KTsKIAllbHNlIGlmICghZW5hYmxlX2xicnYgJmFtcDsmYW1wOyBjdXJyZW50X2VuYWJsZV9sYnJ2KQpAQCAtMzE2MCw2ICYjNDM7MzE2MywxMCBAQCBzdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpCiAJCQlkYXRhICZhbXA7PSB+REVCVUdDVExNU1JfQlRGOwogCQl9CiAKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKSkKJiM0MzsJCQlyZXR1cm4gMTsKJiM0MzsKIAkJaWYgKGRhdGEgJmFtcDsgREVCVUdDVExfUkVTRVJWRURfQklUUykKIAkJCXJldHVybiAxOwogCkBAIC01NTkxLDkgJiM0Mzs1NTk4LDE3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpCiAJICogQ2xlYXIgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBieSBjb21tb24gY29kZSwKIAkgKiBidXQgdGhhdCByZXF1aXJlIGV4cGxpY2l0IFNWTSBzdXBwb3J0ICh0aGF0IGlzbiYjMzk7dCB5ZXQgaW1wbGVtZW50ZWQpLgogCSAqLwotCWt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7CiAJa3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7CiAKJiM0MzsJLyoKJiM0MzsJICogTEJSIFZpcnR1YWxpemF0aW9uIG11c3QgYmUgZW5hYmxlZCB0byBzdXBwb3J0IEJ1c0xvY2tUcmFwIGluc2lkZSB0aGUKJiM0MzsJICogZ3Vlc3QsIHNpbmNlIEJ1c0xvY2tUcmFwIGlzIGVuYWJsZWQgdGhyb3VnaCBNU1JfSUEzMl9ERUJVR0NUTE1TUiBhbmQKJiM0MzsJICogTVNSX0lBMzJfREVCVUdDVExNU1IgaXMgdmlydHVhbGl6ZWQgb25seSBpZiBMQlIgVmlydHVhbGl6YXRpb24gaXMKJiM0MzsJICogZW5hYmxlZC4KJiM0MzsJICovCiYjNDM7CWlmICghbGJydikKJiM0MzsJCWt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7CiYjNDM7CiAJa3ZtX3NldHVwX3hzc19jYXBzKCk7CiAJa3ZtX2ZpbmFsaXplX2NwdV9jYXBzKCk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaAppbmRleCA3MTZiZTIxZmJhMzM1NC4uYzY1ZGMzYWNiNWQxZDYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaApAQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKGJvb2wsIHRlc3QsIHRlc3QpCiBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKHZvaWQsIGNsZWFyLCBfX2NsZWFyKQogQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyh2b2lkLCBzZXQsIF9fc2V0KQogCi0jZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH5ERUJVR0NUTE1TUl9MQlIpCiYjNDM7I2RlZmluZSBERUJVR0NUTF9SRVNFUlZFRF9CSVRTICh+KERFQlVHQ1RMTVNSX0xCUiB8IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkpCiAKIC8qIHN2bS5jICovCiBleHRlcm4gYm9vbCBkdW1wX2ludmFsaWRfdm1jYjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhpcyBLVk0gU1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBLVk0mIzM5O3MgU1ZNIChTZWN1cmUgVmlydHVhbCBNYWNoaW5lKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBBTUQgaGFyZHdhcmUuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBhZGRpbmcgYnVzIGxvY2sgZGV0ZWN0aW9uLCB3aGljaCBpcyB1c3VhbGx5IHNvbWV0aGluZyB5b3Ugd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGZyb20gYSBzdGFiaWxpdHkgYW5kIHNlY3VyaXR5IHBlcnNwZWN0aXZlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIHRoaXMgZmVhdHVyZSB0byB0aGUgaHlwZXJ2aXNvciwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJlaW5nIGltcGxlbWVudGVkLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBhcm91bmQgYSBmZXcga2V5IGZ1bmN0aW9ucy4gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2h5IHRoZXkmIzM5O3JlIGNoYW5naW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBEUjYgc2V0dGluZ3MuIFNldHRpbmcgYERSNl9SVE1gIGFuZCBgRFI2X0ZJWEVEXzFgIGluc3RlYWQgb2YgYERSNl9BQ1RJVkVfTE9XYCBmb3IgYnVzIGxvY2sgZGV0ZWN0aW9uIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRob3JvdWdobHksIGFzIGluY29ycmVjdCBEUjYgbWFuaXB1bGF0aW9uIGNhbiBsZWFkIHRvIHNpZ25pZmljYW50IGlzc3Vlcy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgY29udGV4dCBzYXZlL3Jlc3RvcmUgbG9naWMgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgYW5kIHRoYXQmIzM5O3MgYW4gYXJlYSBwcm9uZSB0byBzdWJ0bGUgYnVncy4KClRoZW4sIHRoZXJlIGFyZSB0aGUgY2hhbmdlcyB0byBgc3ZtX3VwZGF0ZV9sYnJ2YC4gRW5hYmxpbmcgTEJSViAoTGFzdCBCcmFuY2ggUmVjb3JkIFZhbGlkYXRpb24pIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUYCBtYWtlcyBzZW5zZS4gTEJSViBpcyBhbiBpbXBvcnRhbnQgdG9vbCBmb3IgZGVidWdnaW5nLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGJ1cyBsb2NrIGlzc3Vlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHNwZWNpZmljYWxseSBob3cgdGhlIGNoZWNrIGlzIGltcGxlbWVudGVkIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCkkgYWxzbyBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgc3ZtX3NldF9tc3JgLiBUaGUgZmFjdCB0aGF0IGBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1RgIGlzIGJlaW5nIGNoZWNrZWQgYWdhaW5zdCBgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUYCBpcyBzdGFuZGFyZCBwcmFjdGljZS4KCkZpbmFsbHksIGBzdm1fc2V0X2NwdV9jYXBzYCBpcyBiZWluZyBjaGFuZ2VkIHRvICpub3QqIGNsZWFyIGBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1RgIHdoZW4gTEJSViBpcyBlbmFibGVkLiBUaGlzIGlzIGV4cGVjdGVkLiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlIGRldGVjdGlvbiBmZWF0dXJlIHdvdWxkIGJlIHBvaW50bGVzcyB3aXRob3V0IHRoZSBmZWF0dXJlIGZsYWcuCgpPdmVyYWxsLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgS1ZNIFNWTSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgaXQgKmFic29sdXRlbHkqIHdhcnJhbnRzIHRob3JvdWdoIHRlc3RpbmcgYW5kIGZ1enppbmcsIHRoYXQgYFdvcnRoRnV6emluZz10cnVlYCBmbGFnIGlzIHNwb3Qgb24uIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBteSBpbml0aWFsIGZ1enppbmcgZWZmb3J0cyBvbiBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGFuZCBgc3ZtX3VwZGF0ZV9sYnJ2YCBzaW5jZSB0aGV5IHRvdWNoIHRoZSBEUjYgYW5kIExCUlYsIHJlc3BlY3RpdmVseS4gYHN2bV9zZXRfbXNyYCBpcyBsZXNzIGludGVyZXN0aW5nLCBhcyBpdCBpcyBqdXN0IGNoZWNraW5nIGZvciBhIGZlYXR1cmUsIGFuZCBJIG1pZ2h0IHNraXAgZnV6emluZyBgc3ZtX3NldF9jcHVfY2Fwc2AgYXMgYW4gaW5pdCBmdW5jdGlvbi4KCkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1fQU1EYCBpcywgaW4gZmFjdCwgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24gZm9yIEFNRCYjMzk7cyBLVk0uIE9uY2UgSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCwgSSYjMzk7bGwgc3RhcnQgYW5hbHl6aW5nIHRoZSBjb2RlIGluIG1vcmUgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fQU1EJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTE2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk1fQU1EIENvbmZpZ3VyYXRpb24gZm9yIE9wdGltaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBLVk1fQU1EIGNvbmZpZ3VyYXRpb24gYW5kIHRyeWluZyB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cywgYXMgYWx3YXlzLiBUaGUgZnVuY3Rpb25zIEkmIzM5O20gZm9jdXNpbmcgb24gaGVyZSBhcmUgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYHN2bV91cGRhdGVfbGJydmAsIGFuZCBgc3ZtX3NldF9tc3JgLgoKRmlyc3QsIGxldCYjMzk7cyBjb25zaWRlciBgc3ZtX3NldF9tc3JgLiBTZXR0aW5nIE1vZGVsIFNwZWNpZmljIFJlZ2lzdGVycywgb3IgTVNScywgaXMgYSBwcmV0dHkgY29tbW9uIG9wZXJhdGlvbiwgYW5kIHdoaWxlIGl0JiMzOTtzIHJlbGF0aXZlbHkgZnJlcXVlbnQsIHRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSB0byBmdXp6IGFuZCB0ZXN0IHRvIGdldCBhIHNlbnNlIG9mIHN0YWJpbGl0eS4gSXQgY291bGQgYmUgYSBob3QgcGF0aCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGNhbGwgZnJlcXVlbmN5IGFuZCB3aGF0IGV4dGVybmFsIGV2ZW50cyB0cmlnZ2VyIGl0LCBhcyBpdCB3aWxsIGJlIGhlYXZpbHkgcmVsaWFudCBvbiB0aGUgZ3Vlc3QuCgpOb3csIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAgaXMgaW50cmlndWluZy4gSXQmIzM5O3MgdGllZCBkaXJlY3RseSB0byBuZXN0ZWQgVk1SVU4sIHdoaWNoIGlzIGEgZmFpcmx5IGNvbXBsZXggb3BlcmF0aW9uLiBUaGUgcGVyZm9ybWFuY2UgaGVyZSBsaWtlbHkgaGFzIGEgaGVhdnkgaW1wYWN0IG9uIGFueSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIG92ZXJoZWFkIG9mIHRoaXMgb3BlcmF0aW9uLgoKRmluYWxseSwgYHN2bV91cGRhdGVfbGJydmAgc2VlbXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHRoZSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgdmVjdG9yIHN0YXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIExCUlYgc3RhdGUgY2hhbmdlcy4gR2l2ZW4gdGhlIG51YW5jZXMgb2YgYnJhbmNoIHByZWRpY3Rpb24gYW5kIGRlYnVnZ2luZywgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KClNvLCBvdmVyYWxsLCBteSBmb2N1cyBpcyBub3cgb24gZGlnZ2luZyBpbnRvIGBzdm1fdXBkYXRlX2xicnZgIGFuZCBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZCwgYW5kIHdoZXJlIHRoZSBwb3RlbnRpYWwgYm90dGxlbmVja3MgbWlnaHQgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz03Mzk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2IxMl9oYXNfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDQtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjc0NTpzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEwMzU9aW50IGVudGVyX3N2bV9ndWVzdF9tb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZtY2IxMl9ncGEsIGJvb2wgZnJvbV92bXJ1bilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjctXHRuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDY4Olx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKk15IE1lbnRhbCBNb2RlbCBvZiBTVk0gU2F2ZSBQcmVwYXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNsZWFyIGRlcGVuZGVuY3kgaGVyZSB3aXRoaW4gdGhlIEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHNldHVwLiBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGlzLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBmdW5jdGlvbiB0YXNrZWQgd2l0aCBnZXR0aW5nIHRoZSBuZXN0ZWQgVk1DQiByZWFkeSBmb3IgYSBzYXZlIG9wZXJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyB0aGUgaHlwZXJ2aXNvciYjMzk7cyBzdGF0ZSBhbmQgZW5zdXJpbmcgYSBzZWFtbGVzcyB0cmFuc2l0aW9uIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIGd1ZXN0IGFuZCBob3N0LiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGJlaW5nIGludm9rZWQgZnJvbSBgZW50ZXJfc3ZtX2d1ZXN0X21vZGVgIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgcHJvY2VzcyB3aGVuICplbnRlcmluZyogYSBndWVzdCBlbnZpcm9ubWVudC4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHNhdmUgdGhlIGN1cnJlbnQgaHlwZXJ2aXNvciBzdGF0ZSBiZWZvcmUgc3dpdGNoaW5nIGNvbnRyb2wuCgpGdXJ0aGVybW9yZSwgSSYjMzk7bSBub3RpY2luZyBhIGRpc3RpbmN0IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzdm1fdXBkYXRlX2xicnZgIGFuZCB0d28gZGlzdGluY3QgZnVuY3Rpb25zLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBzdm1fc2V0X21zcmAgYW5kIGBzdm1fdmNwdV9hZnRlcl9zZXRfY3B1aWRgLiBUaGlzIHN0cm9uZ2x5IGltcGxpZXMgdGhhdCB1cGRhdGluZyB0aGUgTGFzdCBCcmFuY2ggUmVjb3JkIChMQlIpIHZpcnR1YWxpemF0aW9uIGluZm9ybWF0aW9uIGlzIHRyaWdnZXJlZCB3aGVuZXZlciB3ZSYjMzk7cmUgbW9kaWZ5aW5nIE1vZGVsIFNwZWNpZmljIFJlZ2lzdGVycyAoTVNScykgb3IgYWZ0ZXIgc2V0dGluZyB0aGUgQ1BVSUQsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgcHJvcGVybHkgdmlydHVhbGl6aW5nIHRoZSBDUFUuIFRoZSBMQlIgaXMgZXNzZW50aWFsIGZvciBhbmFseXppbmcgcGVyZm9ybWFuY2UsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgdGhlIGd1ZXN0IHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N2bV91cGRhdGVfbGJydiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ1PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODI2LVx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9MQlIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4Mjc6XHRzdm1fdXBkYXRlX2xicnYoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MjgtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9ODU0PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTg4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5ODk6XHQvKiBTVk1fTUlTQzJfRU5BQkxFX1ZfTEJSIGlzIGNvbnRyb2xsZWQgYnkgc3ZtX3VwZGF0ZV9sYnJ2KCkgKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTkwLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTMyMz12b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTM4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTM4ODpcdHN2bV91cGRhdGVfbGJydih2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTM4OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTg3Mz1zdGF0aWMgdm9pZCBfX3N2bV9kaXNhYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtODc4LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo4Nzk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy04ODAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjk3OD1zdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc3LVx0XHR2bWNiX21hcmtfZGlydHkoc3ZtLVx1MDAzZXZtY2IsIFZNQ0JfTEJSKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzE3ODpcdFx0c3ZtX3VwZGF0ZV9sYnJ2KHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTgwOD12b2lkIHN2bV9lbmFibGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4MDk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMDMKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkgU3VyZmFjZSoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7dmUgaWRlbnRpZmllZCBhIGZldyBrZXkgYXJlYXMgdGhhdCB3YXJyYW50IGNsb3NlIGF0dGVudGlvbiBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gU3BlY2lmaWNhbGx5LCBgc3ZtX3VwZGF0ZV9sYnJ2YCwgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYW5kIGBzdm1fc2V0X21zcmAganVtcCBvdXQgYXMgcHJvbWlzaW5nIHRhcmdldHMuIGBzdm1fc2V0X21zcmAgaXMgYSBiaXQgYnJvYWQsIGJ1dCBpdCYjMzk7cyBzdGlsbCBhIHJlbGV2YW50IGVudHJ5IHBvaW50IGZvciBhbmFseXNpcy4KClRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIEtWTSBmb3IgQU1EJiMzOTtzIFNWTSBmdW5jdGlvbmFsaXR5LiBUaGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gc3VwcG9ydGluZyBCdXMgTG9jayBEZXRlY3Qgd2l0aGluIHRoZSBndWVzdCwgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIHVwZGF0ZXMgdG8gTVNSIGhhbmRsaW5nIGFuZCBob3cgbmVzdGVkIFZNQ0JzIGFyZSBwcmVwYXJlZC4gVGhlc2UgYXJlIHNpZ25pZmljYW50IGh5cGVydmlzb3ItbGV2ZWwgY2hhbmdlcywgYW5kIEkmIzM5O20gY29uZmlkZW50IHRoZXkgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBlZmZlY3RpdmVseSB1c2luZyBLVk0gaW9jdGxzLgoKSSBqdXN0IGRvdWJsZSBjaGVja2VkIHRoZSBjb25maWdzLCBhbmQgd2hpbGUgYEtWTV9BTURgIGlzIGV4cGxpY2l0LCBgS1ZNYCBpcyBuYXR1cmFsbHkgaW1wbGllZCwgYW5kIHRoYXQgZG9lc24mIzM5O3QgY2hhbmdlIG15IG9yaWdpbmFsIGFzc2Vzc21lbnQuCgpBbHJpZ2h0LCBJIHRoaW5rIEkmIzM5O20gcmVhZHkgdG8gY2FsbCB0aGlzLiBMZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODozOS42MjgzODk3MTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQ3NzcwNDQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVcIixcbiAgICBcInN2bV91cGRhdGVfbGJydlwiLFxuICAgIFwic3ZtX3NldF9tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6MzkuNjI4NDAwNDY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ0ODA4NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWMzMGNjM2RjOTgzOTA0MzQ5MGQ1OWM5YzA2ZTIzNDc5MTYzNWIzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyODozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbmluZGV4IGMxNDg1YzNlNjkxYzQzLi40ZmRjNThkMzhhZmUwNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbkBAIC04MDgsNyArODA4LDggQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuIFxcbiBcXHRpZiAodW5saWtlbHkobmV3X3ZtY2IxMiB8fCB2bWNiMTJfaXNfZGlydHkoY29udHJvbCwgVk1DQl9EUikpKSB7XFxuIFxcdFxcdHZtY2IwMi1cXHUwMDNlc2F2ZS5kcjcgPSBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xO1xcbi1cXHRcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVztcXG4rXFx0XFx0LyogRFI2X1JUTSBpcyBhIHJlc2VydmVkIGJpdCBvbiBBTUQgYW5kIGFzIHN1Y2ggbXVzdCBiZSBzZXQgdG8gMSAqL1xcbitcXHRcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfRklYRURfMSB8IERSNl9SVE07XFxuIFxcdFxcdHZtY2JfbWFya19kaXJ0eSh2bWNiMDIsIFZNQ0JfRFIpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5iNGIwZmE3MzA5MTY3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC04ODQsNiArODg0LDkgQEAgdm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRcXHQgICAgKGlzX2d1ZXN0X21vZGUodmNwdSkgXFx1MDAyNlxcdTAwMjYgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTEJSVikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIChzdm0tXFx1MDAzZW5lc3RlZC5jdGwubWlzY19jdGwyIFxcdTAwMjYgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpO1xcbiBcXG4rXFx0LyogQnVzIExvY2sgRGV0ZWN0IGRlcGVuZHMgb24gTEJSIFZpcnR1YWxpemF0aW9uICovXFxuK1xcdGVuYWJsZV9sYnJ2IHw9IChzdm0tXFx1MDAzZXZtY2ItXFx1MDAzZXNhdmUuZGJnY3RsIFxcdTAwMjYgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKTtcXG4rXFxuIFxcdGlmIChlbmFibGVfbGJydiBcXHUwMDI2XFx1MDAyNiAhY3VycmVudF9lbmFibGVfbGJydilcXG4gXFx0XFx0X19zdm1fZW5hYmxlX2xicnYodmNwdSk7XFxuIFxcdGVsc2UgaWYgKCFlbmFibGVfbGJydiBcXHUwMDI2XFx1MDAyNiBjdXJyZW50X2VuYWJsZV9sYnJ2KVxcbkBAIC0zMTYwLDYgKzMxNjMsMTAgQEAgc3RhdGljIGludCBzdm1fc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKVxcbiBcXHRcXHRcXHRkYXRhIFxcdTAwMjY9IH5ERUJVR0NUTE1TUl9CVEY7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdGlmICgoZGF0YSBcXHUwMDI2IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpKVxcbitcXHRcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdFxcdGlmIChkYXRhIFxcdTAwMjYgREVCVUdDVExfUkVTRVJWRURfQklUUylcXG4gXFx0XFx0XFx0cmV0dXJuIDE7XFxuIFxcbkBAIC01NTkxLDkgKzU1OTgsMTcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHN2bV9zZXRfY3B1X2NhcHModm9pZClcXG4gXFx0ICogQ2xlYXIgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBieSBjb21tb24gY29kZSxcXG4gXFx0ICogYnV0IHRoYXQgcmVxdWlyZSBleHBsaWNpdCBTVk0gc3VwcG9ydCAodGhhdCBpc24ndCB5ZXQgaW1wbGVtZW50ZWQpLlxcbiBcXHQgKi9cXG4tXFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKTtcXG4gXFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBMQlIgVmlydHVhbGl6YXRpb24gbXVzdCBiZSBlbmFibGVkIHRvIHN1cHBvcnQgQnVzTG9ja1RyYXAgaW5zaWRlIHRoZVxcbitcXHQgKiBndWVzdCwgc2luY2UgQnVzTG9ja1RyYXAgaXMgZW5hYmxlZCB0aHJvdWdoIE1TUl9JQTMyX0RFQlVHQ1RMTVNSIGFuZFxcbitcXHQgKiBNU1JfSUEzMl9ERUJVR0NUTE1TUiBpcyB2aXJ0dWFsaXplZCBvbmx5IGlmIExCUiBWaXJ0dWFsaXphdGlvbiBpc1xcbitcXHQgKiBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFsYnJ2KVxcbitcXHRcXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xcbitcXG4gXFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XFxuIFxcdGt2bV9maW5hbGl6ZV9jcHVfY2FwcygpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuaW5kZXggNzE2YmUyMWZiYTMzNTQuLmM2NWRjM2FjYjVkMWQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuQEAgLTc4Myw3ICs3ODMsNyBAQCBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKGJvb2wsIHRlc3QsIHRlc3QpXFxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgY2xlYXIsIF9fY2xlYXIpXFxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgc2V0LCBfX3NldClcXG4gXFxuLSNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofkRFQlVHQ1RMTVNSX0xCUilcXG4rI2RlZmluZSBERUJVR0NUTF9SRVNFUlZFRF9CSVRTICh+KERFQlVHQ1RMTVNSX0xCUiB8IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkpXFxuIFxcbiAvKiBzdm0uYyAqL1xcbiBleHRlcm4gYm9vbCBkdW1wX2ludmFsaWRfdm1jYjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6NDEuNzc2MDk5ODM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyOTk4MDgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVcIixcbiAgICBcInN2bV91cGRhdGVfbGJydlwiLFxuICAgIFwic3ZtX3NldF9tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YzMwY2MzZGM5ODM5MDQzNDkwZDU5YzljMDZlMjM0NzkxNjM1YjM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDg6Mjg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuaW5kZXggYzE0ODVjM2U2OTFjNDMuLjRmZGM1OGQzOGFmZTA2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTgwOCw3ICs4MDgsOCBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcbiBcdGlmICh1bmxpa2VseShuZXdfdm1jYjEyIHx8IHZtY2IxMl9pc19kaXJ0eShjb250cm9sLCBWTUNCX0RSKSkpIHtcbiBcdFx0dm1jYjAyLVx1MDAzZXNhdmUuZHI3ID0gc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xO1xuLVx0XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiAgPSBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZHI2IHwgRFI2X0FDVElWRV9MT1c7XG4rXHRcdC8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi9cbitcdFx0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmRyNiB8IERSNl9GSVhFRF8xIHwgRFI2X1JUTTtcbiBcdFx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9EUik7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5iNGIwZmE3MzA5MTY3MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC04ODQsNiArODg0LDkgQEAgdm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdCAgICAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSBcdTAwMjZcdTAwMjYgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTEJSVikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIChzdm0tXHUwMDNlbmVzdGVkLmN0bC5taXNjX2N0bDIgXHUwMDI2IFNWTV9NSVNDMl9FTkFCTEVfVl9MQlIpKTtcbiBcbitcdC8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqL1xuK1x0ZW5hYmxlX2xicnYgfD0gKHN2bS1cdTAwM2V2bWNiLVx1MDAzZXNhdmUuZGJnY3RsIFx1MDAyNiBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpO1xuK1xuIFx0aWYgKGVuYWJsZV9sYnJ2IFx1MDAyNlx1MDAyNiAhY3VycmVudF9lbmFibGVfbGJydilcbiBcdFx0X19zdm1fZW5hYmxlX2xicnYodmNwdSk7XG4gXHRlbHNlIGlmICghZW5hYmxlX2xicnYgXHUwMDI2XHUwMDI2IGN1cnJlbnRfZW5hYmxlX2xicnYpXG5AQCAtMzE2MCw2ICszMTYzLDEwIEBAIHN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbiBcdFx0XHRkYXRhIFx1MDAyNj0gfkRFQlVHQ1RMTVNSX0JURjtcbiBcdFx0fVxuIFxuK1x0XHRpZiAoKGRhdGEgXHUwMDI2IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKSlcbitcdFx0XHRyZXR1cm4gMTtcbitcbiBcdFx0aWYgKGRhdGEgXHUwMDI2IERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG5AQCAtNTU5MSw5ICs1NTk4LDE3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpXG4gXHQgKiBDbGVhciBjYXBhYmlsaXRpZXMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkIGJ5IGNvbW1vbiBjb2RlLFxuIFx0ICogYnV0IHRoYXQgcmVxdWlyZSBleHBsaWNpdCBTVk0gc3VwcG9ydCAodGhhdCBpc24ndCB5ZXQgaW1wbGVtZW50ZWQpLlxuIFx0ICovXG4tXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuIFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XG4gXG4rXHQvKlxuK1x0ICogTEJSIFZpcnR1YWxpemF0aW9uIG11c3QgYmUgZW5hYmxlZCB0byBzdXBwb3J0IEJ1c0xvY2tUcmFwIGluc2lkZSB0aGVcbitcdCAqIGd1ZXN0LCBzaW5jZSBCdXNMb2NrVHJhcCBpcyBlbmFibGVkIHRocm91Z2ggTVNSX0lBMzJfREVCVUdDVExNU1IgYW5kXG4rXHQgKiBNU1JfSUEzMl9ERUJVR0NUTE1TUiBpcyB2aXJ0dWFsaXplZCBvbmx5IGlmIExCUiBWaXJ0dWFsaXphdGlvbiBpc1xuK1x0ICogZW5hYmxlZC5cbitcdCAqL1xuK1x0aWYgKCFsYnJ2KVxuK1x0XHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuK1xuIFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XG4gXHRrdm1fZmluYWxpemVfY3B1X2NhcHMoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDcxNmJlMjFmYmEzMzU0Li5jNjVkYzNhY2I1ZDFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC03ODMsNyArNzgzLDcgQEAgQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyhib29sLCB0ZXN0LCB0ZXN0KVxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgY2xlYXIsIF9fY2xlYXIpXG4gQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyh2b2lkLCBzZXQsIF9fc2V0KVxuIFxuLSNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofkRFQlVHQ1RMTVNSX0xCUilcbisjZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH4oREVCVUdDVExNU1JfTEJSIHwgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKSlcbiBcbiAvKiBzdm0uYyAqL1xuIGV4dGVybiBib29sIGR1bXBfaW52YWxpZF92bWNiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6NDEuNzc2MTAyNTY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MzgxNDkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhpcyBLVk0gU1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgS1ZNJ3MgU1ZNIChTZWN1cmUgVmlydHVhbCBNYWNoaW5lKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBBTUQgaGFyZHdhcmUuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGFkZGluZyBidXMgbG9jayBkZXRlY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgc29tZXRoaW5nIHlvdSB3YW50IHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gZnJvbSBhIHN0YWJpbGl0eSBhbmQgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBhZGRpbmcgdGhpcyBmZWF0dXJlIHRvIHRoZSBoeXBlcnZpc29yLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBpbXBsZW1lbnRlZC5cblxuVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBhcm91bmQgYSBmZXcga2V5IGZ1bmN0aW9ucy4gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aHkgdGhleSdyZSBjaGFuZ2luZyB0aGUgZGVidWcgcmVnaXN0ZXIgRFI2IHNldHRpbmdzLiBTZXR0aW5nIGBEUjZfUlRNYCBhbmQgYERSNl9GSVhFRF8xYCBpbnN0ZWFkIG9mIGBEUjZfQUNUSVZFX0xPV2AgZm9yIGJ1cyBsb2NrIGRldGVjdGlvbiBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aG9yb3VnaGx5LCBhcyBpbmNvcnJlY3QgRFI2IG1hbmlwdWxhdGlvbiBjYW4gbGVhZCB0byBzaWduaWZpY2FudCBpc3N1ZXMuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGxvZ2ljIGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGFuZCB0aGF0J3MgYW4gYXJlYSBwcm9uZSB0byBzdWJ0bGUgYnVncy5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBjaGFuZ2VzIHRvIGBzdm1fdXBkYXRlX2xicnZgLiBFbmFibGluZyBMQlJWIChMYXN0IEJyYW5jaCBSZWNvcmQgVmFsaWRhdGlvbikgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIGBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1RgIG1ha2VzIHNlbnNlLiBMQlJWIGlzIGFuIGltcG9ydGFudCB0b29sIGZvciBkZWJ1Z2dpbmcsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWwgYnVzIGxvY2sgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgY2hlY2sgaXMgaW1wbGVtZW50ZWQgdG8gc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5JIGFsc28gc2VlIG1vZGlmaWNhdGlvbnMgaW4gYHN2bV9zZXRfbXNyYC4gVGhlIGZhY3QgdGhhdCBgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUYCBpcyBiZWluZyBjaGVja2VkIGFnYWluc3QgYFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVGAgaXMgc3RhbmRhcmQgcHJhY3RpY2UuXG5cbkZpbmFsbHksIGBzdm1fc2V0X2NwdV9jYXBzYCBpcyBiZWluZyBjaGFuZ2VkIHRvICpub3QqIGNsZWFyIGBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1RgIHdoZW4gTEJSViBpcyBlbmFibGVkLiBUaGlzIGlzIGV4cGVjdGVkLiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlIGRldGVjdGlvbiBmZWF0dXJlIHdvdWxkIGJlIHBvaW50bGVzcyB3aXRob3V0IHRoZSBmZWF0dXJlIGZsYWcuXG5cbk92ZXJhbGwsIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZvciBLVk0gU1ZNLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdGhhdCBpdCAqYWJzb2x1dGVseSogd2FycmFudHMgdGhvcm91Z2ggdGVzdGluZyBhbmQgZnV6emluZywgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgIGZsYWcgaXMgc3BvdCBvbi4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgbXkgaW5pdGlhbCBmdXp6aW5nIGVmZm9ydHMgb24gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBhbmQgYHN2bV91cGRhdGVfbGJydmAgc2luY2UgdGhleSB0b3VjaCB0aGUgRFI2IGFuZCBMQlJWLCByZXNwZWN0aXZlbHkuIGBzdm1fc2V0X21zcmAgaXMgbGVzcyBpbnRlcmVzdGluZywgYXMgaXQgaXMganVzdCBjaGVja2luZyBmb3IgYSBmZWF0dXJlLCBhbmQgSSBtaWdodCBza2lwIGZ1enppbmcgYHN2bV9zZXRfY3B1X2NhcHNgIGFzIGFuIGluaXQgZnVuY3Rpb24uXG5cbkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIHNvIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgS1ZNX0FNRGAgaXMsIGluIGZhY3QsIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGZvciBBTUQncyBLVk0uIE9uY2UgSSd2ZSB2ZXJpZmllZCB0aGF0LCBJJ2xsIHN0YXJ0IGFuYWx5emluZyB0aGUgY29kZSBpbiBtb3JlIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjQ5LjQyOTkyMjQ1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzODYwODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo0OS43MTIzMTY4MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE1MjUzMjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk1fQU1EIENvbmZpZ3VyYXRpb24gZm9yIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgS1ZNX0FNRCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMsIGFzIGFsd2F5cy4gVGhlIGZ1bmN0aW9ucyBJJ20gZm9jdXNpbmcgb24gaGVyZSBhcmUgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYHN2bV91cGRhdGVfbGJydmAsIGFuZCBgc3ZtX3NldF9tc3JgLlxuXG5GaXJzdCwgbGV0J3MgY29uc2lkZXIgYHN2bV9zZXRfbXNyYC4gU2V0dGluZyBNb2RlbCBTcGVjaWZpYyBSZWdpc3RlcnMsIG9yIE1TUnMsIGlzIGEgcHJldHR5IGNvbW1vbiBvcGVyYXRpb24sIGFuZCB3aGlsZSBpdCdzIHJlbGF0aXZlbHkgZnJlcXVlbnQsIHRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSB0byBmdXp6IGFuZCB0ZXN0IHRvIGdldCBhIHNlbnNlIG9mIHN0YWJpbGl0eS4gSXQgY291bGQgYmUgYSBob3QgcGF0aCwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHR5cGljYWwgY2FsbCBmcmVxdWVuY3kgYW5kIHdoYXQgZXh0ZXJuYWwgZXZlbnRzIHRyaWdnZXIgaXQsIGFzIGl0IHdpbGwgYmUgaGVhdmlseSByZWxpYW50IG9uIHRoZSBndWVzdC5cblxuTm93LCBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGlzIGludHJpZ3VpbmcuIEl0J3MgdGllZCBkaXJlY3RseSB0byBuZXN0ZWQgVk1SVU4sIHdoaWNoIGlzIGEgZmFpcmx5IGNvbXBsZXggb3BlcmF0aW9uLiBUaGUgcGVyZm9ybWFuY2UgaGVyZSBsaWtlbHkgaGFzIGEgaGVhdnkgaW1wYWN0IG9uIGFueSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIG92ZXJoZWFkIG9mIHRoaXMgb3BlcmF0aW9uLlxuXG5GaW5hbGx5LCBgc3ZtX3VwZGF0ZV9sYnJ2YCBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGRlYWxzIHdpdGggdGhlIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSB2ZWN0b3Igc3RhdGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gTEJSViBzdGF0ZSBjaGFuZ2VzLiBHaXZlbiB0aGUgbnVhbmNlcyBvZiBicmFuY2ggcHJlZGljdGlvbiBhbmQgZGVidWdnaW5nLCB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5Tbywgb3ZlcmFsbCwgbXkgZm9jdXMgaXMgbm93IG9uIGRpZ2dpbmcgaW50byBgc3ZtX3VwZGF0ZV9sYnJ2YCBhbmQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCB0byB1bmRlcnN0YW5kIHdoYXQgdGhleSBhcmUgZG9pbmcgdW5kZXIgdGhlIGhvb2QsIGFuZCB3aGVyZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG1pZ2h0IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo1NC44Mjc1NzM5NjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQzNTczNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzM5PXN0YXRpYyBib29sIG5lc3RlZF92bWNiMTJfaGFzX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDQtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3NDU6c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDM1PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjctXFx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjg6XFx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjU1LjE3MTE1ODE1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTgzMDc3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBNZW50YWwgTW9kZWwgb2YgU1ZNIFNhdmUgUHJlcGFyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGEgY2xlYXIgZGVwZW5kZW5jeSBoZXJlIHdpdGhpbiB0aGUgQU1EIFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUgKFNWTSkgc2V0dXAuIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAgaXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGZ1bmN0aW9uIHRhc2tlZCB3aXRoIGdldHRpbmcgdGhlIG5lc3RlZCBWTUNCIHJlYWR5IGZvciBhIHNhdmUgb3BlcmF0aW9uLiBUaGlzIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSBoeXBlcnZpc29yJ3Mgc3RhdGUgYW5kIGVuc3VyaW5nIGEgc2VhbWxlc3MgdHJhbnNpdGlvbiBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBndWVzdCBhbmQgaG9zdC4gVGhlIGZhY3QgdGhhdCBpdCdzIGJlaW5nIGludm9rZWQgZnJvbSBgZW50ZXJfc3ZtX2d1ZXN0X21vZGVgIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzIHdoZW4gKmVudGVyaW5nKiBhIGd1ZXN0IGVudmlyb25tZW50LiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gc2F2ZSB0aGUgY3VycmVudCBoeXBlcnZpc29yIHN0YXRlIGJlZm9yZSBzd2l0Y2hpbmcgY29udHJvbC5cblxuRnVydGhlcm1vcmUsIEknbSBub3RpY2luZyBhIGRpc3RpbmN0IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzdm1fdXBkYXRlX2xicnZgIGFuZCB0d28gZGlzdGluY3QgZnVuY3Rpb25zLiBJdCdzIGNhbGxlZCBmcm9tIGJvdGggYHN2bV9zZXRfbXNyYCBhbmQgYHN2bV92Y3B1X2FmdGVyX3NldF9jcHVpZGAuIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHVwZGF0aW5nIHRoZSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgdmlydHVhbGl6YXRpb24gaW5mb3JtYXRpb24gaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHdlJ3JlIG1vZGlmeWluZyBNb2RlbCBTcGVjaWZpYyBSZWdpc3RlcnMgKE1TUnMpIG9yIGFmdGVyIHNldHRpbmcgdGhlIENQVUlELCB3aGljaCBpcyBhIGtleSBwYXJ0IG9mIHByb3Blcmx5IHZpcnR1YWxpemluZyB0aGUgQ1BVLiBUaGUgTEJSIGlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIHBlcmZvcm1hbmNlLCB3aGljaCBpcyBhIGtleSBwYXJ0IG9mIHRoZSBndWVzdCBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjU5LjMyOTQ3MTM4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAwNjIwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3ZtX3VwZGF0ZV9sYnJ2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ1PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MjYtXFx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9MQlIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI3OlxcdHN2bV91cGRhdGVfbGJydihcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgyOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg1ND1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTg4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6OTg5OlxcdC8qIFNWTV9NSVNDMl9FTkFCTEVfVl9MQlIgaXMgY29udHJvbGxlZCBieSBzdm1fdXBkYXRlX2xicnYoKSAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTkwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIzPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzODctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzg4OlxcdHN2bV91cGRhdGVfbGJydih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzODktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTg3Mz1zdGF0aWMgdm9pZCBfX3N2bV9kaXNhYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy04NzgtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo4Nzk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtODgwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjk3OD1zdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMxNzctXFx0XFx0dm1jYl9tYXJrX2RpcnR5KHN2bS1cXHUwMDNldm1jYiwgVk1DQl9MQlIpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzE3ODpcXHRcXHRzdm1fdXBkYXRlX2xicnYodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD04MDg9dm9pZCBzdm1fZW5hYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjgwOTp2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo1OS41MTk1NDMzNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcwNTM1ODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZ1bG5lcmFiaWxpdHkgU3VyZmFjZSoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ3ZlIGlkZW50aWZpZWQgYSBmZXcga2V5IGFyZWFzIHRoYXQgd2FycmFudCBjbG9zZSBhdHRlbnRpb24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFNwZWNpZmljYWxseSwgYHN2bV91cGRhdGVfbGJydmAsIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAsIGFuZCBgc3ZtX3NldF9tc3JgIGp1bXAgb3V0IGFzIHByb21pc2luZyB0YXJnZXRzLiBgc3ZtX3NldF9tc3JgIGlzIGEgYml0IGJyb2FkLCBidXQgaXQncyBzdGlsbCBhIHJlbGV2YW50IGVudHJ5IHBvaW50IGZvciBhbmFseXNpcy5cblxuVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgS1ZNIGZvciBBTUQncyBTVk0gZnVuY3Rpb25hbGl0eS4gVGhlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIHN1cHBvcnRpbmcgQnVzIExvY2sgRGV0ZWN0IHdpdGhpbiB0aGUgZ3Vlc3QsIHdoaWNoIG1lYW5zIHRoZXJlIGFyZSB1cGRhdGVzIHRvIE1TUiBoYW5kbGluZyBhbmQgaG93IG5lc3RlZCBWTUNCcyBhcmUgcHJlcGFyZWQuIFRoZXNlIGFyZSBzaWduaWZpY2FudCBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGFuZCBJJ20gY29uZmlkZW50IHRoZXkgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBlZmZlY3RpdmVseSB1c2luZyBLVk0gaW9jdGxzLlxuXG5JIGp1c3QgZG91YmxlIGNoZWNrZWQgdGhlIGNvbmZpZ3MsIGFuZCB3aGlsZSBgS1ZNX0FNRGAgaXMgZXhwbGljaXQsIGBLVk1gIGlzIG5hdHVyYWxseSBpbXBsaWVkLCBhbmQgdGhhdCBkb2Vzbid0IGNoYW5nZSBteSBvcmlnaW5hbCBhc3Nlc3NtZW50LlxuXG5BbHJpZ2h0LCBJIHRoaW5rIEknbSByZWFkeSB0byBjYWxsIHRoaXMuIExldCdzIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMDMsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI5OjE0LjIyNDkwNjM4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MTE2NjIzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gICAgXCJzdm1fdXBkYXRlX2xicnZcIixcbiAgICBcInN2bV9zZXRfbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gICAgXCJzdm1fdXBkYXRlX2xicnZcIixcbiAgICBcInN2bV9zZXRfbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowm5s7n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-29 08:19:24 +0000 UTC FinishedAt: 2026-06-29 08:29:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_AMD" ], "series_id": "7676c485-370a-464c-bf35-6dd73e0fe45b" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "nested_vmcb02_prepare_save", "svm_update_lbrv", "svm_set_msr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YzMwY2MzZGM5ODM5MDQzNDkwZDU5YzljMDZlMjM0NzkxNjM1YjM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDg6Mjg6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbmluZGV4IGMxNDg1YzNlNjkxYzQzLi40ZmRjNThkMzhhZmUwNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmNcbkBAIC04MDgsNyAmIzQzOzgwOCw4IEBAIHN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuIFxuIFx0aWYgKHVubGlrZWx5KG5ld192bWNiMTIgfHwgdm1jYjEyX2lzX2RpcnR5KGNvbnRyb2wsIFZNQ0JfRFIpKSkge1xuIFx0XHR2bWNiMDItXHUwMDNlc2F2ZS5kcjcgPSBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZHI3IHwgRFI3X0ZJWEVEXzE7XG4tXHRcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI2ICA9IHN2bS1cdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVztcbiYjNDM7XHRcdC8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi9cbiYjNDM7XHRcdHN2bS1cdTAwM2V2Y3B1LmFyY2guZHI2ICA9IHN2bS1cdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfRklYRURfMSB8IERSNl9SVE07XG4gXHRcdHZtY2JfbWFya19kaXJ0eSh2bWNiMDIsIFZNQ0JfRFIpO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5pbmRleCBlZjY5YTUxYWIyN2Y5OC4uYjRiMGZhNzMwOTE2NzAgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXG5AQCAtODg0LDYgJiM0Mzs4ODQsOSBAQCB2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4gXHRcdFx0ICAgIChpc19ndWVzdF9tb2RlKHZjcHUpIFx1MDAyNlx1MDAyNiBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MQlJWKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgKHN2bS1cdTAwM2VuZXN0ZWQuY3RsLm1pc2NfY3RsMiBcdTAwMjYgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpO1xuIFxuJiM0MztcdC8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqL1xuJiM0MztcdGVuYWJsZV9sYnJ2IHw9IChzdm0tXHUwMDNldm1jYi1cdTAwM2VzYXZlLmRiZ2N0bCBcdTAwMjYgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKTtcbiYjNDM7XG4gXHRpZiAoZW5hYmxlX2xicnYgXHUwMDI2XHUwMDI2ICFjdXJyZW50X2VuYWJsZV9sYnJ2KVxuIFx0XHRfX3N2bV9lbmFibGVfbGJydih2Y3B1KTtcbiBcdGVsc2UgaWYgKCFlbmFibGVfbGJydiBcdTAwMjZcdTAwMjYgY3VycmVudF9lbmFibGVfbGJydilcbkBAIC0zMTYwLDYgJiM0MzszMTYzLDEwIEBAIHN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbiBcdFx0XHRkYXRhIFx1MDAyNj0gfkRFQlVHQ1RMTVNSX0JURjtcbiBcdFx0fVxuIFxuJiM0MztcdFx0aWYgKChkYXRhIFx1MDAyNiBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgICFndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpKVxuJiM0MztcdFx0XHRyZXR1cm4gMTtcbiYjNDM7XG4gXHRcdGlmIChkYXRhIFx1MDAyNiBERUJVR0NUTF9SRVNFUlZFRF9CSVRTKVxuIFx0XHRcdHJldHVybiAxO1xuIFxuQEAgLTU1OTEsOSAmIzQzOzU1OTgsMTcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHN2bV9zZXRfY3B1X2NhcHModm9pZClcbiBcdCAqIENsZWFyIGNhcGFiaWxpdGllcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgYnkgY29tbW9uIGNvZGUsXG4gXHQgKiBidXQgdGhhdCByZXF1aXJlIGV4cGxpY2l0IFNWTSBzdXBwb3J0ICh0aGF0IGlzbiYjMzk7dCB5ZXQgaW1wbGVtZW50ZWQpLlxuIFx0ICovXG4tXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuIFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBMQlIgVmlydHVhbGl6YXRpb24gbXVzdCBiZSBlbmFibGVkIHRvIHN1cHBvcnQgQnVzTG9ja1RyYXAgaW5zaWRlIHRoZVxuJiM0MztcdCAqIGd1ZXN0LCBzaW5jZSBCdXNMb2NrVHJhcCBpcyBlbmFibGVkIHRocm91Z2ggTVNSX0lBMzJfREVCVUdDVExNU1IgYW5kXG4mIzQzO1x0ICogTVNSX0lBMzJfREVCVUdDVExNU1IgaXMgdmlydHVhbGl6ZWQgb25seSBpZiBMQlIgVmlydHVhbGl6YXRpb24gaXNcbiYjNDM7XHQgKiBlbmFibGVkLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghbGJydilcbiYjNDM7XHRcdGt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7XG4mIzQzO1xuIFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XG4gXHRrdm1fZmluYWxpemVfY3B1X2NhcHMoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDcxNmJlMjFmYmEzMzU0Li5jNjVkYzNhY2I1ZDFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlMoYm9vbCwgdGVzdCwgdGVzdClcbiBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKHZvaWQsIGNsZWFyLCBfX2NsZWFyKVxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgc2V0LCBfX3NldClcbiBcbi0jZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH5ERUJVR0NUTE1TUl9MQlIpXG4mIzQzOyNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofihERUJVR0NUTE1TUl9MQlIgfCBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpKVxuIFxuIC8qIHN2bS5jICovXG4gZXh0ZXJuIGJvb2wgZHVtcF9pbnZhbGlkX3ZtY2I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7S1ZNX0FNRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlJiMzNDssCiAgICAmIzM0O3N2bV91cGRhdGVfbGJydiYjMzQ7LAogICAgJiMzNDtzdm1fc2V0X21zciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWMzMGNjM2RjOTgzOTA0MzQ5MGQ1OWM5YzA2ZTIzNDc5MTYzNWIzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVuIDI5IDA4OjI4OjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKaW5kZXggYzE0ODVjM2U2OTFjNDMuLjRmZGM1OGQzOGFmZTA2IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMKQEAgLTgwOCw3ICYjNDM7ODA4LDggQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pCiAKIAlpZiAodW5saWtlbHkobmV3X3ZtY2IxMiB8fCB2bWNiMTJfaXNfZGlydHkoY29udHJvbCwgVk1DQl9EUikpKSB7CiAJCXZtY2IwMi0mZ3Q7c2F2ZS5kcjcgPSBzdm0tJmd0O25lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xOwotCQlzdm0tJmd0O3ZjcHUuYXJjaC5kcjYgID0gc3ZtLSZndDtuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVzsKJiM0MzsJCS8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi8KJiM0MzsJCXN2bS0mZ3Q7dmNwdS5hcmNoLmRyNiAgPSBzdm0tJmd0O25lc3RlZC5zYXZlLmRyNiB8IERSNl9GSVhFRF8xIHwgRFI2X1JUTTsKIAkJdm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9EUik7CiAJfQogCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwppbmRleCBlZjY5YTUxYWIyN2Y5OC4uYjRiMGZhNzMwOTE2NzAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmMKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uYwpAQCAtODg0LDYgJiM0Mzs4ODQsOSBAQCB2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJCQkgICAgKGlzX2d1ZXN0X21vZGUodmNwdSkgJmFtcDsmYW1wOyBndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9MQlJWKSAmYW1wOyZhbXA7CiAJCQkgICAgKHN2bS0mZ3Q7bmVzdGVkLmN0bC5taXNjX2N0bDIgJmFtcDsgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpOwogCiYjNDM7CS8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqLwomIzQzOwllbmFibGVfbGJydiB8PSAoc3ZtLSZndDt2bWNiLSZndDtzYXZlLmRiZ2N0bCAmYW1wOyBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpOwomIzQzOwogCWlmIChlbmFibGVfbGJydiAmYW1wOyZhbXA7ICFjdXJyZW50X2VuYWJsZV9sYnJ2KQogCQlfX3N2bV9lbmFibGVfbGJydih2Y3B1KTsKIAllbHNlIGlmICghZW5hYmxlX2xicnYgJmFtcDsmYW1wOyBjdXJyZW50X2VuYWJsZV9sYnJ2KQpAQCAtMzE2MCw2ICYjNDM7MzE2MywxMCBAQCBzdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpCiAJCQlkYXRhICZhbXA7PSB+REVCVUdDVExNU1JfQlRGOwogCQl9CiAKJiM0MzsJCWlmICgoZGF0YSAmYW1wOyBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKSkKJiM0MzsJCQlyZXR1cm4gMTsKJiM0MzsKIAkJaWYgKGRhdGEgJmFtcDsgREVCVUdDVExfUkVTRVJWRURfQklUUykKIAkJCXJldHVybiAxOwogCkBAIC01NTkxLDkgJiM0Mzs1NTk4LDE3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpCiAJICogQ2xlYXIgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBieSBjb21tb24gY29kZSwKIAkgKiBidXQgdGhhdCByZXF1aXJlIGV4cGxpY2l0IFNWTSBzdXBwb3J0ICh0aGF0IGlzbiYjMzk7dCB5ZXQgaW1wbGVtZW50ZWQpLgogCSAqLwotCWt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7CiAJa3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7CiAKJiM0MzsJLyoKJiM0MzsJICogTEJSIFZpcnR1YWxpemF0aW9uIG11c3QgYmUgZW5hYmxlZCB0byBzdXBwb3J0IEJ1c0xvY2tUcmFwIGluc2lkZSB0aGUKJiM0MzsJICogZ3Vlc3QsIHNpbmNlIEJ1c0xvY2tUcmFwIGlzIGVuYWJsZWQgdGhyb3VnaCBNU1JfSUEzMl9ERUJVR0NUTE1TUiBhbmQKJiM0MzsJICogTVNSX0lBMzJfREVCVUdDVExNU1IgaXMgdmlydHVhbGl6ZWQgb25seSBpZiBMQlIgVmlydHVhbGl6YXRpb24gaXMKJiM0MzsJICogZW5hYmxlZC4KJiM0MzsJICovCiYjNDM7CWlmICghbGJydikKJiM0MzsJCWt2bV9jcHVfY2FwX2NsZWFyKFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVCk7CiYjNDM7CiAJa3ZtX3NldHVwX3hzc19jYXBzKCk7CiAJa3ZtX2ZpbmFsaXplX2NwdV9jYXBzKCk7CiB9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaAppbmRleCA3MTZiZTIxZmJhMzM1NC4uYzY1ZGMzYWNiNWQxZDYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmgKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uaApAQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKGJvb2wsIHRlc3QsIHRlc3QpCiBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKHZvaWQsIGNsZWFyLCBfX2NsZWFyKQogQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyh2b2lkLCBzZXQsIF9fc2V0KQogCi0jZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH5ERUJVR0NUTE1TUl9MQlIpCiYjNDM7I2RlZmluZSBERUJVR0NUTF9SRVNFUlZFRF9CSVRTICh+KERFQlVHQ1RMTVNSX0xCUiB8IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkpCiAKIC8qIHN2bS5jICovCiBleHRlcm4gYm9vbCBkdW1wX2ludmFsaWRfdm1jYjsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhpcyBLVk0gU1ZNIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBLVk0mIzM5O3MgU1ZNIChTZWN1cmUgVmlydHVhbCBNYWNoaW5lKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBBTUQgaGFyZHdhcmUuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGludGVyZXN0aW5nOyBpdCYjMzk7cyBhZGRpbmcgYnVzIGxvY2sgZGV0ZWN0aW9uLCB3aGljaCBpcyB1c3VhbGx5IHNvbWV0aGluZyB5b3Ugd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIGZyb20gYSBzdGFiaWxpdHkgYW5kIHNlY3VyaXR5IHBlcnNwZWN0aXZlLCBhbmQgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIHRoaXMgZmVhdHVyZSB0byB0aGUgaHlwZXJ2aXNvciwgc28gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGJlaW5nIGltcGxlbWVudGVkLgoKVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBhcm91bmQgYSBmZXcga2V5IGZ1bmN0aW9ucy4gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gd2h5IHRoZXkmIzM5O3JlIGNoYW5naW5nIHRoZSBkZWJ1ZyByZWdpc3RlciBEUjYgc2V0dGluZ3MuIFNldHRpbmcgYERSNl9SVE1gIGFuZCBgRFI2X0ZJWEVEXzFgIGluc3RlYWQgb2YgYERSNl9BQ1RJVkVfTE9XYCBmb3IgYnVzIGxvY2sgZGV0ZWN0aW9uIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRob3JvdWdobHksIGFzIGluY29ycmVjdCBEUjYgbWFuaXB1bGF0aW9uIGNhbiBsZWFkIHRvIHNpZ25pZmljYW50IGlzc3Vlcy4gSSBrbm93IHRoYXQgZnVuY3Rpb24gaXMgcGFydCBvZiB0aGUgY29udGV4dCBzYXZlL3Jlc3RvcmUgbG9naWMgZm9yIG5lc3RlZCB2aXJ0dWFsaXphdGlvbiwgYW5kIHRoYXQmIzM5O3MgYW4gYXJlYSBwcm9uZSB0byBzdWJ0bGUgYnVncy4KClRoZW4sIHRoZXJlIGFyZSB0aGUgY2hhbmdlcyB0byBgc3ZtX3VwZGF0ZV9sYnJ2YC4gRW5hYmxpbmcgTEJSViAoTGFzdCBCcmFuY2ggUmVjb3JkIFZhbGlkYXRpb24pIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiBgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUYCBtYWtlcyBzZW5zZS4gTEJSViBpcyBhbiBpbXBvcnRhbnQgdG9vbCBmb3IgZGVidWdnaW5nLCBwYXJ0aWN1bGFybHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsIGJ1cyBsb2NrIGlzc3Vlcy4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28sIHNwZWNpZmljYWxseSBob3cgdGhlIGNoZWNrIGlzIGltcGxlbWVudGVkIHRvIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCkkgYWxzbyBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgc3ZtX3NldF9tc3JgLiBUaGUgZmFjdCB0aGF0IGBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1RgIGlzIGJlaW5nIGNoZWNrZWQgYWdhaW5zdCBgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUYCBpcyBzdGFuZGFyZCBwcmFjdGljZS4KCkZpbmFsbHksIGBzdm1fc2V0X2NwdV9jYXBzYCBpcyBiZWluZyBjaGFuZ2VkIHRvICpub3QqIGNsZWFyIGBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1RgIHdoZW4gTEJSViBpcyBlbmFibGVkLiBUaGlzIGlzIGV4cGVjdGVkLiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlIGRldGVjdGlvbiBmZWF0dXJlIHdvdWxkIGJlIHBvaW50bGVzcyB3aXRob3V0IHRoZSBmZWF0dXJlIGZsYWcuCgpPdmVyYWxsLCB0aGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBmb3IgS1ZNIFNWTSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRoYXQgaXQgKmFic29sdXRlbHkqIHdhcnJhbnRzIHRob3JvdWdoIHRlc3RpbmcgYW5kIGZ1enppbmcsIHRoYXQgYFdvcnRoRnV6emluZz10cnVlYCBmbGFnIGlzIHNwb3Qgb24uIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBteSBpbml0aWFsIGZ1enppbmcgZWZmb3J0cyBvbiBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGFuZCBgc3ZtX3VwZGF0ZV9sYnJ2YCBzaW5jZSB0aGV5IHRvdWNoIHRoZSBEUjYgYW5kIExCUlYsIHJlc3BlY3RpdmVseS4gYHN2bV9zZXRfbXNyYCBpcyBsZXNzIGludGVyZXN0aW5nLCBhcyBpdCBpcyBqdXN0IGNoZWNraW5nIGZvciBhIGZlYXR1cmUsIGFuZCBJIG1pZ2h0IHNraXAgZnV6emluZyBgc3ZtX3NldF9jcHVfY2Fwc2AgYXMgYW4gaW5pdCBmdW5jdGlvbi4KCkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLCBzbyBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBLVk1fQU1EYCBpcywgaW4gZmFjdCwgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb24gZm9yIEFNRCYjMzk7cyBLVk0uIE9uY2UgSSYjMzk7dmUgdmVyaWZpZWQgdGhhdCwgSSYjMzk7bGwgc3RhcnQgYW5hbHl6aW5nIHRoZSBjb2RlIGluIG1vcmUgZGV0YWlsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBLVk1fQU1EJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXHR0cmlzdGF0ZSBcJiMzNDtLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTctXHRib29sIFwmIzM0O0FNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTE2CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLVk1fQU1EIENvbmZpZ3VyYXRpb24gZm9yIE9wdGltaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBLVk1fQU1EIGNvbmZpZ3VyYXRpb24gYW5kIHRyeWluZyB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgZm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cywgYXMgYWx3YXlzLiBUaGUgZnVuY3Rpb25zIEkmIzM5O20gZm9jdXNpbmcgb24gaGVyZSBhcmUgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYHN2bV91cGRhdGVfbGJydmAsIGFuZCBgc3ZtX3NldF9tc3JgLgoKRmlyc3QsIGxldCYjMzk7cyBjb25zaWRlciBgc3ZtX3NldF9tc3JgLiBTZXR0aW5nIE1vZGVsIFNwZWNpZmljIFJlZ2lzdGVycywgb3IgTVNScywgaXMgYSBwcmV0dHkgY29tbW9uIG9wZXJhdGlvbiwgYW5kIHdoaWxlIGl0JiMzOTtzIHJlbGF0aXZlbHkgZnJlcXVlbnQsIHRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSB0byBmdXp6IGFuZCB0ZXN0IHRvIGdldCBhIHNlbnNlIG9mIHN0YWJpbGl0eS4gSXQgY291bGQgYmUgYSBob3QgcGF0aCwgYnV0IGl0JiMzOTtzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSB0eXBpY2FsIGNhbGwgZnJlcXVlbmN5IGFuZCB3aGF0IGV4dGVybmFsIGV2ZW50cyB0cmlnZ2VyIGl0LCBhcyBpdCB3aWxsIGJlIGhlYXZpbHkgcmVsaWFudCBvbiB0aGUgZ3Vlc3QuCgpOb3csIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAgaXMgaW50cmlndWluZy4gSXQmIzM5O3MgdGllZCBkaXJlY3RseSB0byBuZXN0ZWQgVk1SVU4sIHdoaWNoIGlzIGEgZmFpcmx5IGNvbXBsZXggb3BlcmF0aW9uLiBUaGUgcGVyZm9ybWFuY2UgaGVyZSBsaWtlbHkgaGFzIGEgaGVhdnkgaW1wYWN0IG9uIGFueSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIG92ZXJoZWFkIG9mIHRoaXMgb3BlcmF0aW9uLgoKRmluYWxseSwgYHN2bV91cGRhdGVfbGJydmAgc2VlbXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCBkZWFscyB3aXRoIHRoZSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgdmVjdG9yIHN0YXRlLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIExCUlYgc3RhdGUgY2hhbmdlcy4gR2l2ZW4gdGhlIG51YW5jZXMgb2YgYnJhbmNoIHByZWRpY3Rpb24gYW5kIGRlYnVnZ2luZywgdGhhdCBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KClNvLCBvdmVyYWxsLCBteSBmb2N1cyBpcyBub3cgb24gZGlnZ2luZyBpbnRvIGBzdm1fdXBkYXRlX2xicnZgIGFuZCBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZCwgYW5kIHdoZXJlIHRoZSBwb3RlbnRpYWwgYm90dGxlbmVja3MgbWlnaHQgbGllLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz03Mzk9c3RhdGljIGJvb2wgbmVzdGVkX3ZtY2IxMl9oYXNfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDQtXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjc0NTpzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtNzQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTEwMzU9aW50IGVudGVyX3N2bV9ndWVzdF9tb2RlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0IHZtY2IxMl9ncGEsIGJvb2wgZnJvbV92bXJ1bilcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjctXHRuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdm0pO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMDY4Olx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTA2OS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yOSAwODoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTQ2CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKk15IE1lbnRhbCBNb2RlbCBvZiBTVk0gU2F2ZSBQcmVwYXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIGNsZWFyIGRlcGVuZGVuY3kgaGVyZSB3aXRoaW4gdGhlIEFNRCBTZWN1cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHNldHVwLiBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGlzLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHRoZSBmdW5jdGlvbiB0YXNrZWQgd2l0aCBnZXR0aW5nIHRoZSBuZXN0ZWQgVk1DQiByZWFkeSBmb3IgYSBzYXZlIG9wZXJhdGlvbi4gVGhpcyBpcyBjcnVjaWFsIGZvciBtYWludGFpbmluZyB0aGUgaHlwZXJ2aXNvciYjMzk7cyBzdGF0ZSBhbmQgZW5zdXJpbmcgYSBzZWFtbGVzcyB0cmFuc2l0aW9uIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIGd1ZXN0IGFuZCBob3N0LiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGJlaW5nIGludm9rZWQgZnJvbSBgZW50ZXJfc3ZtX2d1ZXN0X21vZGVgIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0JiMzOTtzIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgcHJvY2VzcyB3aGVuICplbnRlcmluZyogYSBndWVzdCBlbnZpcm9ubWVudC4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHNhdmUgdGhlIGN1cnJlbnQgaHlwZXJ2aXNvciBzdGF0ZSBiZWZvcmUgc3dpdGNoaW5nIGNvbnRyb2wuCgpGdXJ0aGVybW9yZSwgSSYjMzk7bSBub3RpY2luZyBhIGRpc3RpbmN0IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzdm1fdXBkYXRlX2xicnZgIGFuZCB0d28gZGlzdGluY3QgZnVuY3Rpb25zLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBib3RoIGBzdm1fc2V0X21zcmAgYW5kIGBzdm1fdmNwdV9hZnRlcl9zZXRfY3B1aWRgLiBUaGlzIHN0cm9uZ2x5IGltcGxpZXMgdGhhdCB1cGRhdGluZyB0aGUgTGFzdCBCcmFuY2ggUmVjb3JkIChMQlIpIHZpcnR1YWxpemF0aW9uIGluZm9ybWF0aW9uIGlzIHRyaWdnZXJlZCB3aGVuZXZlciB3ZSYjMzk7cmUgbW9kaWZ5aW5nIE1vZGVsIFNwZWNpZmljIFJlZ2lzdGVycyAoTVNScykgb3IgYWZ0ZXIgc2V0dGluZyB0aGUgQ1BVSUQsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgcHJvcGVybHkgdmlydHVhbGl6aW5nIHRoZSBDUFUuIFRoZSBMQlIgaXMgZXNzZW50aWFsIGZvciBhbmFseXppbmcgcGVyZm9ybWFuY2UsIHdoaWNoIGlzIGEga2V5IHBhcnQgb2YgdGhlIGd1ZXN0IHBlcmZvcm1hbmNlLiBJIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N2bV91cGRhdGVfbGJydiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ1PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtODI2LVx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9MQlIpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo4Mjc6XHRzdm1fdXBkYXRlX2xicnYoXHUwMDI2c3ZtLVx1MDAzZXZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MjgtfVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9ODU0PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9jb250cm9sKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTg4LVxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo5ODk6XHQvKiBTVk1fTUlTQzJfRU5BQkxFX1ZfTEJSIGlzIGNvbnRyb2xsZWQgYnkgc3ZtX3VwZGF0ZV9sYnJ2KCkgKi9cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTkwLVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9MTMyMz12b2lkIG5lc3RlZF9zdm1fdm1leGl0KHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTM4Ny1cbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6MTM4ODpcdHN2bV91cGRhdGVfbGJydih2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtMTM4OS1cbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTg3Mz1zdGF0aWMgdm9pZCBfX3N2bV9kaXNhYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtODc4LVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo4Nzk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy04ODAte1xuLS1cbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjk3OD1zdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpXG4tLVxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc3LVx0XHR2bWNiX21hcmtfZGlydHkoc3ZtLVx1MDAzZXZtY2IsIFZNQ0JfTEJSKTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzE3ODpcdFx0c3ZtX3VwZGF0ZV9sYnJ2KHZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc5LVx0XHRicmVhaztcbi0tXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oPTgwOD12b2lkIHN2bV9lbmFibGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xuYXJjaC94ODYva3ZtL3N2bS9zdm0uaDo4MDk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI5IDA4OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMDMKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogMTYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFZ1bG5lcmFiaWxpdHkgU3VyZmFjZSoqCgpPa2F5LCBhZnRlciByZXZpZXdpbmcgdGhpcyBwYXRjaCwgSSYjMzk7dmUgaWRlbnRpZmllZCBhIGZldyBrZXkgYXJlYXMgdGhhdCB3YXJyYW50IGNsb3NlIGF0dGVudGlvbiBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gU3BlY2lmaWNhbGx5LCBgc3ZtX3VwZGF0ZV9sYnJ2YCwgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYW5kIGBzdm1fc2V0X21zcmAganVtcCBvdXQgYXMgcHJvbWlzaW5nIHRhcmdldHMuIGBzdm1fc2V0X21zcmAgaXMgYSBiaXQgYnJvYWQsIGJ1dCBpdCYjMzk7cyBzdGlsbCBhIHJlbGV2YW50IGVudHJ5IHBvaW50IGZvciBhbmFseXNpcy4KClRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIEtWTSBmb3IgQU1EJiMzOTtzIFNWTSBmdW5jdGlvbmFsaXR5LiBUaGUgZm9jdXMgc2VlbXMgdG8gYmUgb24gc3VwcG9ydGluZyBCdXMgTG9jayBEZXRlY3Qgd2l0aGluIHRoZSBndWVzdCwgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIHVwZGF0ZXMgdG8gTVNSIGhhbmRsaW5nIGFuZCBob3cgbmVzdGVkIFZNQ0JzIGFyZSBwcmVwYXJlZC4gVGhlc2UgYXJlIHNpZ25pZmljYW50IGh5cGVydmlzb3ItbGV2ZWwgY2hhbmdlcywgYW5kIEkmIzM5O20gY29uZmlkZW50IHRoZXkgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBlZmZlY3RpdmVseSB1c2luZyBLVk0gaW9jdGxzLgoKSSBqdXN0IGRvdWJsZSBjaGVja2VkIHRoZSBjb25maWdzLCBhbmQgd2hpbGUgYEtWTV9BTURgIGlzIGV4cGxpY2l0LCBgS1ZNYCBpcyBuYXR1cmFsbHkgaW1wbGllZCwgYW5kIHRoYXQgZG9lc24mIzM5O3QgY2hhbmdlIG15IG9yaWdpbmFsIGFzc2Vzc21lbnQuCgpBbHJpZ2h0LCBJIHRoaW5rIEkmIzM5O20gcmVhZHkgdG8gY2FsbCB0aGlzLiBMZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjkgMDg6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9BTUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZSYjMzQ7LAogICAgJiMzNDtzdm1fdXBkYXRlX2xicnYmIzM0OywKICAgICYjMzQ7c3ZtX3NldF9tc3ImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODozOS42MjgzODk3MTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQ3NzcwNDQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVcIixcbiAgICBcInN2bV91cGRhdGVfbGJydlwiLFxuICAgIFwic3ZtX3NldF9tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6MzkuNjI4NDAwNDY1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTQ0ODA4NjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWMzMGNjM2RjOTgzOTA0MzQ5MGQ1OWM5YzA2ZTIzNDc5MTYzNWIzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1biAyOSAwODoyODozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbmluZGV4IGMxNDg1YzNlNjkxYzQzLi40ZmRjNThkMzhhZmUwNiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xcbkBAIC04MDgsNyArODA4LDggQEAgc3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuIFxcbiBcXHRpZiAodW5saWtlbHkobmV3X3ZtY2IxMiB8fCB2bWNiMTJfaXNfZGlydHkoY29udHJvbCwgVk1DQl9EUikpKSB7XFxuIFxcdFxcdHZtY2IwMi1cXHUwMDNlc2F2ZS5kcjcgPSBzdm0tXFx1MDAzZW5lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xO1xcbi1cXHRcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfQUNUSVZFX0xPVztcXG4rXFx0XFx0LyogRFI2X1JUTSBpcyBhIHJlc2VydmVkIGJpdCBvbiBBTUQgYW5kIGFzIHN1Y2ggbXVzdCBiZSBzZXQgdG8gMSAqL1xcbitcXHRcXHRzdm0tXFx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVxcdTAwM2VuZXN0ZWQuc2F2ZS5kcjYgfCBEUjZfRklYRURfMSB8IERSNl9SVE07XFxuIFxcdFxcdHZtY2JfbWFya19kaXJ0eSh2bWNiMDIsIFZNQ0JfRFIpO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5iNGIwZmE3MzA5MTY3MCAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jXFxuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9zdm0uY1xcbkBAIC04ODQsNiArODg0LDkgQEAgdm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbiBcXHRcXHRcXHQgICAgKGlzX2d1ZXN0X21vZGUodmNwdSkgXFx1MDAyNlxcdTAwMjYgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTEJSVikgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0ICAgIChzdm0tXFx1MDAzZW5lc3RlZC5jdGwubWlzY19jdGwyIFxcdTAwMjYgU1ZNX01JU0MyX0VOQUJMRV9WX0xCUikpO1xcbiBcXG4rXFx0LyogQnVzIExvY2sgRGV0ZWN0IGRlcGVuZHMgb24gTEJSIFZpcnR1YWxpemF0aW9uICovXFxuK1xcdGVuYWJsZV9sYnJ2IHw9IChzdm0tXFx1MDAzZXZtY2ItXFx1MDAzZXNhdmUuZGJnY3RsIFxcdTAwMjYgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKTtcXG4rXFxuIFxcdGlmIChlbmFibGVfbGJydiBcXHUwMDI2XFx1MDAyNiAhY3VycmVudF9lbmFibGVfbGJydilcXG4gXFx0XFx0X19zdm1fZW5hYmxlX2xicnYodmNwdSk7XFxuIFxcdGVsc2UgaWYgKCFlbmFibGVfbGJydiBcXHUwMDI2XFx1MDAyNiBjdXJyZW50X2VuYWJsZV9sYnJ2KVxcbkBAIC0zMTYwLDYgKzMxNjMsMTAgQEAgc3RhdGljIGludCBzdm1fc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKVxcbiBcXHRcXHRcXHRkYXRhIFxcdTAwMjY9IH5ERUJVR0NUTE1TUl9CVEY7XFxuIFxcdFxcdH1cXG4gXFxuK1xcdFxcdGlmICgoZGF0YSBcXHUwMDI2IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFndWVzdF9jcHVfY2FwX2hhcyh2Y3B1LCBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpKVxcbitcXHRcXHRcXHRyZXR1cm4gMTtcXG4rXFxuIFxcdFxcdGlmIChkYXRhIFxcdTAwMjYgREVCVUdDVExfUkVTRVJWRURfQklUUylcXG4gXFx0XFx0XFx0cmV0dXJuIDE7XFxuIFxcbkBAIC01NTkxLDkgKzU1OTgsMTcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHN2bV9zZXRfY3B1X2NhcHModm9pZClcXG4gXFx0ICogQ2xlYXIgY2FwYWJpbGl0aWVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCBieSBjb21tb24gY29kZSxcXG4gXFx0ICogYnV0IHRoYXQgcmVxdWlyZSBleHBsaWNpdCBTVk0gc3VwcG9ydCAodGhhdCBpc24ndCB5ZXQgaW1wbGVtZW50ZWQpLlxcbiBcXHQgKi9cXG4tXFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKTtcXG4gXFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XFxuIFxcbitcXHQvKlxcbitcXHQgKiBMQlIgVmlydHVhbGl6YXRpb24gbXVzdCBiZSBlbmFibGVkIHRvIHN1cHBvcnQgQnVzTG9ja1RyYXAgaW5zaWRlIHRoZVxcbitcXHQgKiBndWVzdCwgc2luY2UgQnVzTG9ja1RyYXAgaXMgZW5hYmxlZCB0aHJvdWdoIE1TUl9JQTMyX0RFQlVHQ1RMTVNSIGFuZFxcbitcXHQgKiBNU1JfSUEzMl9ERUJVR0NUTE1TUiBpcyB2aXJ0dWFsaXplZCBvbmx5IGlmIExCUiBWaXJ0dWFsaXphdGlvbiBpc1xcbitcXHQgKiBlbmFibGVkLlxcbitcXHQgKi9cXG4rXFx0aWYgKCFsYnJ2KVxcbitcXHRcXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xcbitcXG4gXFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XFxuIFxcdGt2bV9maW5hbGl6ZV9jcHVfY2FwcygpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmggYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuaW5kZXggNzE2YmUyMWZiYTMzNTQuLmM2NWRjM2FjYjVkMWQ2IDEwMDY0NFxcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcXG4rKysgYi9hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oXFxuQEAgLTc4Myw3ICs3ODMsNyBAQCBCVUlMRF9TVk1fTVNSX0JJVE1BUF9IRUxQRVJTKGJvb2wsIHRlc3QsIHRlc3QpXFxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgY2xlYXIsIF9fY2xlYXIpXFxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgc2V0LCBfX3NldClcXG4gXFxuLSNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofkRFQlVHQ1RMTVNSX0xCUilcXG4rI2RlZmluZSBERUJVR0NUTF9SRVNFUlZFRF9CSVRTICh+KERFQlVHQ1RMTVNSX0xCUiB8IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkpXFxuIFxcbiAvKiBzdm0uYyAqL1xcbiBleHRlcm4gYm9vbCBkdW1wX2ludmFsaWRfdm1jYjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6NDEuNzc2MDk5ODM1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMyOTk4MDgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fQU1EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVcIixcbiAgICBcInN2bV91cGRhdGVfbGJydlwiLFxuICAgIFwic3ZtX3NldF9tc3JcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBLVk0gU1ZNIChBTUQgdmlydHVhbGl6YXRpb24pIHRvIHN1cHBvcnQgQnVzIExvY2sgRGV0ZWN0IGluc2lkZSB0aGUgZ3Vlc3QuIEl0IHVwZGF0ZXMgTVNSIGhhbmRsaW5nIGFuZCBuZXN0ZWQgVk1DQiBwcmVwYXJhdGlvbiBsb2dpYy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBoeXBlcnZpc29yIGxvZ2ljIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgS1ZNIGlvY3Rscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1YzMwY2MzZGM5ODM5MDQzNDkwZDU5YzljMDZlMjM0NzkxNjM1YjM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdW4gMjkgMDg6Mjg6MzcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuaW5kZXggYzE0ODVjM2U2OTFjNDMuLjRmZGM1OGQzOGFmZTA2IDEwMDY0NFxuLS0tIGEvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuKysrIGIvYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuY1xuQEAgLTgwOCw3ICs4MDgsOCBAQCBzdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZShzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcbiBcbiBcdGlmICh1bmxpa2VseShuZXdfdm1jYjEyIHx8IHZtY2IxMl9pc19kaXJ0eShjb250cm9sLCBWTUNCX0RSKSkpIHtcbiBcdFx0dm1jYjAyLVx1MDAzZXNhdmUuZHI3ID0gc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmRyNyB8IERSN19GSVhFRF8xO1xuLVx0XHRzdm0tXHUwMDNldmNwdS5hcmNoLmRyNiAgPSBzdm0tXHUwMDNlbmVzdGVkLnNhdmUuZHI2IHwgRFI2X0FDVElWRV9MT1c7XG4rXHRcdC8qIERSNl9SVE0gaXMgYSByZXNlcnZlZCBiaXQgb24gQU1EIGFuZCBhcyBzdWNoIG11c3QgYmUgc2V0IHRvIDEgKi9cbitcdFx0c3ZtLVx1MDAzZXZjcHUuYXJjaC5kcjYgID0gc3ZtLVx1MDAzZW5lc3RlZC5zYXZlLmRyNiB8IERSNl9GSVhFRF8xIHwgRFI2X1JUTTtcbiBcdFx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9EUik7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uYyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbmluZGV4IGVmNjlhNTFhYjI3Zjk4Li5iNGIwZmE3MzA5MTY3MCAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmNcbkBAIC04ODQsNiArODg0LDkgQEAgdm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuIFx0XHRcdCAgICAoaXNfZ3Vlc3RfbW9kZSh2Y3B1KSBcdTAwMjZcdTAwMjYgZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfTEJSVikgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIChzdm0tXHUwMDNlbmVzdGVkLmN0bC5taXNjX2N0bDIgXHUwMDI2IFNWTV9NSVNDMl9FTkFCTEVfVl9MQlIpKTtcbiBcbitcdC8qIEJ1cyBMb2NrIERldGVjdCBkZXBlbmRzIG9uIExCUiBWaXJ0dWFsaXphdGlvbiAqL1xuK1x0ZW5hYmxlX2xicnYgfD0gKHN2bS1cdTAwM2V2bWNiLVx1MDAzZXNhdmUuZGJnY3RsIFx1MDAyNiBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1QpO1xuK1xuIFx0aWYgKGVuYWJsZV9sYnJ2IFx1MDAyNlx1MDAyNiAhY3VycmVudF9lbmFibGVfbGJydilcbiBcdFx0X19zdm1fZW5hYmxlX2xicnYodmNwdSk7XG4gXHRlbHNlIGlmICghZW5hYmxlX2xicnYgXHUwMDI2XHUwMDI2IGN1cnJlbnRfZW5hYmxlX2xicnYpXG5AQCAtMzE2MCw2ICszMTYzLDEwIEBAIHN0YXRpYyBpbnQgc3ZtX3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcilcbiBcdFx0XHRkYXRhIFx1MDAyNj0gfkRFQlVHQ1RMTVNSX0JURjtcbiBcdFx0fVxuIFxuK1x0XHRpZiAoKGRhdGEgXHUwMDI2IERFQlVHQ1RMTVNSX0JVU19MT0NLX0RFVEVDVCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZ3Vlc3RfY3B1X2NhcF9oYXModmNwdSwgWDg2X0ZFQVRVUkVfQlVTX0xPQ0tfREVURUNUKSlcbitcdFx0XHRyZXR1cm4gMTtcbitcbiBcdFx0aWYgKGRhdGEgXHUwMDI2IERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMpXG4gXHRcdFx0cmV0dXJuIDE7XG4gXG5AQCAtNTU5MSw5ICs1NTk4LDE3IEBAIHN0YXRpYyBfX2luaXQgdm9pZCBzdm1fc2V0X2NwdV9jYXBzKHZvaWQpXG4gXHQgKiBDbGVhciBjYXBhYmlsaXRpZXMgdGhhdCBhcmUgYXV0b21hdGljYWxseSBjb25maWd1cmVkIGJ5IGNvbW1vbiBjb2RlLFxuIFx0ICogYnV0IHRoYXQgcmVxdWlyZSBleHBsaWNpdCBTVk0gc3VwcG9ydCAodGhhdCBpc24ndCB5ZXQgaW1wbGVtZW50ZWQpLlxuIFx0ICovXG4tXHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuIFx0a3ZtX2NwdV9jYXBfY2xlYXIoWDg2X0ZFQVRVUkVfTVNSX0lNTSk7XG4gXG4rXHQvKlxuK1x0ICogTEJSIFZpcnR1YWxpemF0aW9uIG11c3QgYmUgZW5hYmxlZCB0byBzdXBwb3J0IEJ1c0xvY2tUcmFwIGluc2lkZSB0aGVcbitcdCAqIGd1ZXN0LCBzaW5jZSBCdXNMb2NrVHJhcCBpcyBlbmFibGVkIHRocm91Z2ggTVNSX0lBMzJfREVCVUdDVExNU1IgYW5kXG4rXHQgKiBNU1JfSUEzMl9ERUJVR0NUTE1TUiBpcyB2aXJ0dWFsaXplZCBvbmx5IGlmIExCUiBWaXJ0dWFsaXphdGlvbiBpc1xuK1x0ICogZW5hYmxlZC5cbitcdCAqL1xuK1x0aWYgKCFsYnJ2KVxuK1x0XHRrdm1fY3B1X2NhcF9jbGVhcihYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1QpO1xuK1xuIFx0a3ZtX3NldHVwX3hzc19jYXBzKCk7XG4gXHRrdm1fZmluYWxpemVfY3B1X2NhcHMoKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3N2bS9zdm0uaCBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbmluZGV4IDcxNmJlMjFmYmEzMzU0Li5jNjVkYzNhY2I1ZDFkNiAxMDA2NDRcbi0tLSBhL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbisrKyBiL2FyY2gveDg2L2t2bS9zdm0vc3ZtLmhcbkBAIC03ODMsNyArNzgzLDcgQEAgQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyhib29sLCB0ZXN0LCB0ZXN0KVxuIEJVSUxEX1NWTV9NU1JfQklUTUFQX0hFTFBFUlModm9pZCwgY2xlYXIsIF9fY2xlYXIpXG4gQlVJTERfU1ZNX01TUl9CSVRNQVBfSEVMUEVSUyh2b2lkLCBzZXQsIF9fc2V0KVxuIFxuLSNkZWZpbmUgREVCVUdDVExfUkVTRVJWRURfQklUUyAofkRFQlVHQ1RMTVNSX0xCUilcbisjZGVmaW5lIERFQlVHQ1RMX1JFU0VSVkVEX0JJVFMgKH4oREVCVUdDVExNU1JfTEJSIHwgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUKSlcbiBcbiAvKiBzdm0uYyAqL1xuIGV4dGVybiBib29sIGR1bXBfaW52YWxpZF92bWNiO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjlUMDg6Mjg6NDEuNzc2MTAyNTY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MzgxNDkzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhpcyBLVk0gU1ZNIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgS1ZNJ3MgU1ZNIChTZWN1cmUgVmlydHVhbCBNYWNoaW5lKSBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBBTUQgaGFyZHdhcmUuIE15IGluaXRpYWwgcmVhY3Rpb24gaXMgdGhhdCB0aGlzIGlzIGludGVyZXN0aW5nOyBpdCdzIGFkZGluZyBidXMgbG9jayBkZXRlY3Rpb24sIHdoaWNoIGlzIHVzdWFsbHkgc29tZXRoaW5nIHlvdSB3YW50IHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gZnJvbSBhIHN0YWJpbGl0eSBhbmQgc2VjdXJpdHkgcGVyc3BlY3RpdmUsIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBpcyBhZGRpbmcgdGhpcyBmZWF0dXJlIHRvIHRoZSBoeXBlcnZpc29yLCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBiZWluZyBpbXBsZW1lbnRlZC5cblxuVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhcmUgZm9jdXNlZCBhcm91bmQgYSBmZXcga2V5IGZ1bmN0aW9ucy4gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBpcyBiZWluZyBtb2RpZmllZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aHkgdGhleSdyZSBjaGFuZ2luZyB0aGUgZGVidWcgcmVnaXN0ZXIgRFI2IHNldHRpbmdzLiBTZXR0aW5nIGBEUjZfUlRNYCBhbmQgYERSNl9GSVhFRF8xYCBpbnN0ZWFkIG9mIGBEUjZfQUNUSVZFX0xPV2AgZm9yIGJ1cyBsb2NrIGRldGVjdGlvbiBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aG9yb3VnaGx5LCBhcyBpbmNvcnJlY3QgRFI2IG1hbmlwdWxhdGlvbiBjYW4gbGVhZCB0byBzaWduaWZpY2FudCBpc3N1ZXMuIEkga25vdyB0aGF0IGZ1bmN0aW9uIGlzIHBhcnQgb2YgdGhlIGNvbnRleHQgc2F2ZS9yZXN0b3JlIGxvZ2ljIGZvciBuZXN0ZWQgdmlydHVhbGl6YXRpb24sIGFuZCB0aGF0J3MgYW4gYXJlYSBwcm9uZSB0byBzdWJ0bGUgYnVncy5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBjaGFuZ2VzIHRvIGBzdm1fdXBkYXRlX2xicnZgLiBFbmFibGluZyBMQlJWIChMYXN0IEJyYW5jaCBSZWNvcmQgVmFsaWRhdGlvbikgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIGBERUJVR0NUTE1TUl9CVVNfTE9DS19ERVRFQ1RgIG1ha2VzIHNlbnNlLiBMQlJWIGlzIGFuIGltcG9ydGFudCB0b29sIGZvciBkZWJ1Z2dpbmcsIHBhcnRpY3VsYXJseSB3aGVuIGRlYWxpbmcgd2l0aCBwb3RlbnRpYWwgYnVzIGxvY2sgaXNzdWVzLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgc3BlY2lmaWNhbGx5IGhvdyB0aGUgY2hlY2sgaXMgaW1wbGVtZW50ZWQgdG8gc2VlIGhvdyB0aGV5IGludGVyYWN0LlxuXG5JIGFsc28gc2VlIG1vZGlmaWNhdGlvbnMgaW4gYHN2bV9zZXRfbXNyYC4gVGhlIGZhY3QgdGhhdCBgREVCVUdDVExNU1JfQlVTX0xPQ0tfREVURUNUYCBpcyBiZWluZyBjaGVja2VkIGFnYWluc3QgYFg4Nl9GRUFUVVJFX0JVU19MT0NLX0RFVEVDVGAgaXMgc3RhbmRhcmQgcHJhY3RpY2UuXG5cbkZpbmFsbHksIGBzdm1fc2V0X2NwdV9jYXBzYCBpcyBiZWluZyBjaGFuZ2VkIHRvICpub3QqIGNsZWFyIGBYODZfRkVBVFVSRV9CVVNfTE9DS19ERVRFQ1RgIHdoZW4gTEJSViBpcyBlbmFibGVkLiBUaGlzIGlzIGV4cGVjdGVkLiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlIGRldGVjdGlvbiBmZWF0dXJlIHdvdWxkIGJlIHBvaW50bGVzcyB3aXRob3V0IHRoZSBmZWF0dXJlIGZsYWcuXG5cbk92ZXJhbGwsIHRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGZvciBLVk0gU1ZNLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdGhhdCBpdCAqYWJzb2x1dGVseSogd2FycmFudHMgdGhvcm91Z2ggdGVzdGluZyBhbmQgZnV6emluZywgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgIGZsYWcgaXMgc3BvdCBvbi4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgbXkgaW5pdGlhbCBmdXp6aW5nIGVmZm9ydHMgb24gYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCBhbmQgYHN2bV91cGRhdGVfbGJydmAgc2luY2UgdGhleSB0b3VjaCB0aGUgRFI2IGFuZCBMQlJWLCByZXNwZWN0aXZlbHkuIGBzdm1fc2V0X21zcmAgaXMgbGVzcyBpbnRlcmVzdGluZywgYXMgaXQgaXMganVzdCBjaGVja2luZyBmb3IgYSBmZWF0dXJlLCBhbmQgSSBtaWdodCBza2lwIGZ1enppbmcgYHN2bV9zZXRfY3B1X2NhcHNgIGFzIGFuIGluaXQgZnVuY3Rpb24uXG5cbkJlZm9yZSBJIGRpdmUgZGVlcGVyIGludG8gZnV6emluZyBzdHJhdGVnaWVzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24sIHNvIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgS1ZNX0FNRGAgaXMsIGluIGZhY3QsIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGZvciBBTUQncyBLVk0uIE9uY2UgSSd2ZSB2ZXJpZmllZCB0aGF0LCBJJ2xsIHN0YXJ0IGFuYWx5emluZyB0aGUgY29kZSBpbiBtb3JlIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjQ5LjQyOTkyMjQ1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODIzODYwODMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEtWTV9BTURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MTM0PWNvbmZpZyBLVk1fSU5URUxfVERYXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo0OS43MTIzMTY4MTFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTE1MjUzMjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBLVk1fQU1EIENvbmZpZ3VyYXRpb24gZm9yIE9wdGltaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgS1ZNX0FNRCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIGZvciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMsIGFzIGFsd2F5cy4gVGhlIGZ1bmN0aW9ucyBJJ20gZm9jdXNpbmcgb24gaGVyZSBhcmUgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCwgYHN2bV91cGRhdGVfbGJydmAsIGFuZCBgc3ZtX3NldF9tc3JgLlxuXG5GaXJzdCwgbGV0J3MgY29uc2lkZXIgYHN2bV9zZXRfbXNyYC4gU2V0dGluZyBNb2RlbCBTcGVjaWZpYyBSZWdpc3RlcnMsIG9yIE1TUnMsIGlzIGEgcHJldHR5IGNvbW1vbiBvcGVyYXRpb24sIGFuZCB3aGlsZSBpdCdzIHJlbGF0aXZlbHkgZnJlcXVlbnQsIHRoYXQgbWFrZXMgaXQgYSBnb29kIGNhbmRpZGF0ZSB0byBmdXp6IGFuZCB0ZXN0IHRvIGdldCBhIHNlbnNlIG9mIHN0YWJpbGl0eS4gSXQgY291bGQgYmUgYSBob3QgcGF0aCwgYnV0IGl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHR5cGljYWwgY2FsbCBmcmVxdWVuY3kgYW5kIHdoYXQgZXh0ZXJuYWwgZXZlbnRzIHRyaWdnZXIgaXQsIGFzIGl0IHdpbGwgYmUgaGVhdmlseSByZWxpYW50IG9uIHRoZSBndWVzdC5cblxuTm93LCBgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmVgIGlzIGludHJpZ3VpbmcuIEl0J3MgdGllZCBkaXJlY3RseSB0byBuZXN0ZWQgVk1SVU4sIHdoaWNoIGlzIGEgZmFpcmx5IGNvbXBsZXggb3BlcmF0aW9uLiBUaGUgcGVyZm9ybWFuY2UgaGVyZSBsaWtlbHkgaGFzIGEgaGVhdnkgaW1wYWN0IG9uIGFueSBuZXN0ZWQgdmlydHVhbGl6YXRpb24gc2NlbmFyaW9zLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhlIG92ZXJoZWFkIG9mIHRoaXMgb3BlcmF0aW9uLlxuXG5GaW5hbGx5LCBgc3ZtX3VwZGF0ZV9sYnJ2YCBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IGRlYWxzIHdpdGggdGhlIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSB2ZWN0b3Igc3RhdGUuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gTEJSViBzdGF0ZSBjaGFuZ2VzLiBHaXZlbiB0aGUgbnVhbmNlcyBvZiBicmFuY2ggcHJlZGljdGlvbiBhbmQgZGVidWdnaW5nLCB0aGF0IHNlZW1zIGxpa2UgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IGRpZ2dpbmcgZGVlcGVyLlxuXG5Tbywgb3ZlcmFsbCwgbXkgZm9jdXMgaXMgbm93IG9uIGRpZ2dpbmcgaW50byBgc3ZtX3VwZGF0ZV9sYnJ2YCBhbmQgYG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlYCB0byB1bmRlcnN0YW5kIHdoYXQgdGhleSBhcmUgZG9pbmcgdW5kZXIgdGhlIGhvb2QsIGFuZCB3aGVyZSB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG1pZ2h0IGxpZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDExNiwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo1NC44Mjc1NzM5NjNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQzNTczNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzM5PXN0YXRpYyBib29sIG5lc3RlZF92bWNiMTJfaGFzX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDQtXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzo3NDU6c3RhdGljIHZvaWQgbmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy03NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMDM1PWludCBlbnRlcl9zdm1fZ3Vlc3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCB2bWNiMTJfZ3BhLCBib29sIGZyb21fdm1ydW4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjctXFx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX2NvbnRyb2woc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jOjEwNjg6XFx0bmVzdGVkX3ZtY2IwMl9wcmVwYXJlX3NhdmUoc3ZtKTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEwNjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjU1LjE3MTE1ODE1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNTgzMDc3ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBNZW50YWwgTW9kZWwgb2YgU1ZNIFNhdmUgUHJlcGFyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGEgY2xlYXIgZGVwZW5kZW5jeSBoZXJlIHdpdGhpbiB0aGUgQU1EIFNlY3VyZSBWaXJ0dWFsIE1hY2hpbmUgKFNWTSkgc2V0dXAuIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAgaXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgdGhlIGZ1bmN0aW9uIHRhc2tlZCB3aXRoIGdldHRpbmcgdGhlIG5lc3RlZCBWTUNCIHJlYWR5IGZvciBhIHNhdmUgb3BlcmF0aW9uLiBUaGlzIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIHRoZSBoeXBlcnZpc29yJ3Mgc3RhdGUgYW5kIGVuc3VyaW5nIGEgc2VhbWxlc3MgdHJhbnNpdGlvbiBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSBndWVzdCBhbmQgaG9zdC4gVGhlIGZhY3QgdGhhdCBpdCdzIGJlaW5nIGludm9rZWQgZnJvbSBgZW50ZXJfc3ZtX2d1ZXN0X21vZGVgIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBwcm9jZXNzIHdoZW4gKmVudGVyaW5nKiBhIGd1ZXN0IGVudmlyb25tZW50LiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gc2F2ZSB0aGUgY3VycmVudCBoeXBlcnZpc29yIHN0YXRlIGJlZm9yZSBzd2l0Y2hpbmcgY29udHJvbC5cblxuRnVydGhlcm1vcmUsIEknbSBub3RpY2luZyBhIGRpc3RpbmN0IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBzdm1fdXBkYXRlX2xicnZgIGFuZCB0d28gZGlzdGluY3QgZnVuY3Rpb25zLiBJdCdzIGNhbGxlZCBmcm9tIGJvdGggYHN2bV9zZXRfbXNyYCBhbmQgYHN2bV92Y3B1X2FmdGVyX3NldF9jcHVpZGAuIFRoaXMgc3Ryb25nbHkgaW1wbGllcyB0aGF0IHVwZGF0aW5nIHRoZSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgdmlydHVhbGl6YXRpb24gaW5mb3JtYXRpb24gaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHdlJ3JlIG1vZGlmeWluZyBNb2RlbCBTcGVjaWZpYyBSZWdpc3RlcnMgKE1TUnMpIG9yIGFmdGVyIHNldHRpbmcgdGhlIENQVUlELCB3aGljaCBpcyBhIGtleSBwYXJ0IG9mIHByb3Blcmx5IHZpcnR1YWxpemluZyB0aGUgQ1BVLiBUaGUgTEJSIGlzIGVzc2VudGlhbCBmb3IgYW5hbHl6aW5nIHBlcmZvcm1hbmNlLCB3aGljaCBpcyBhIGtleSBwYXJ0IG9mIHRoZSBndWVzdCBwZXJmb3JtYW5jZS4gSSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk0NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI4OjU5LjMyOTQ3MTM4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAwNjIwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3ZtX3VwZGF0ZV9sYnJ2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9zdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM9NzQ1PXN0YXRpYyB2b2lkIG5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlKHN0cnVjdCB2Y3B1X3N2bSAqc3ZtKVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYy04MjYtXFx0dm1jYl9tYXJrX2RpcnR5KHZtY2IwMiwgVk1DQl9MQlIpO1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6ODI3OlxcdHN2bV91cGRhdGVfbGJydihcXHUwMDI2c3ZtLVxcdTAwM2V2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTgyOC19XFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jPTg1ND1zdGF0aWMgdm9pZCBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfY29udHJvbChzdHJ1Y3QgdmNwdV9zdm0gKnN2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTg4LVxcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmM6OTg5OlxcdC8qIFNWTV9NSVNDMl9FTkFCTEVfVl9MQlIgaXMgY29udHJvbGxlZCBieSBzdm1fdXBkYXRlX2xicnYoKSAqL1xcbmFyY2gveDg2L2t2bS9zdm0vbmVzdGVkLmMtOTkwLVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYz0xMzIzPXZvaWQgbmVzdGVkX3N2bV92bWV4aXQoc3RydWN0IHZjcHVfc3ZtICpzdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzODctXFxuYXJjaC94ODYva3ZtL3N2bS9uZXN0ZWQuYzoxMzg4OlxcdHN2bV91cGRhdGVfbGJydih2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL25lc3RlZC5jLTEzODktXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jPTg3Mz1zdGF0aWMgdm9pZCBfX3N2bV9kaXNhYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy04NzgtXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYzo4Nzk6dm9pZCBzdm1fdXBkYXRlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmMtODgwLXtcXG4tLVxcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM9Mjk3OD1zdGF0aWMgaW50IHN2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5jLTMxNzctXFx0XFx0dm1jYl9tYXJrX2RpcnR5KHN2bS1cXHUwMDNldm1jYiwgVk1DQl9MQlIpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmM6MzE3ODpcXHRcXHRzdm1fdXBkYXRlX2xicnYodmNwdSk7XFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uYy0zMTc5LVxcdFxcdGJyZWFrO1xcbi0tXFxuYXJjaC94ODYva3ZtL3N2bS9zdm0uaD04MDg9dm9pZCBzdm1fZW5hYmxlX2xicnYoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vc3ZtL3N2bS5oOjgwOTp2b2lkIHN2bV91cGRhdGVfbGJydihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpO1xcbmFyY2gveDg2L2t2bS9zdm0vc3ZtLmgtODEwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yOVQwODoyODo1OS41MTk1NDMzNDVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDcwNTM1ODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIFZ1bG5lcmFiaWxpdHkgU3VyZmFjZSoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGlzIHBhdGNoLCBJJ3ZlIGlkZW50aWZpZWQgYSBmZXcga2V5IGFyZWFzIHRoYXQgd2FycmFudCBjbG9zZSBhdHRlbnRpb24gZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuIFNwZWNpZmljYWxseSwgYHN2bV91cGRhdGVfbGJydmAsIGBuZXN0ZWRfdm1jYjAyX3ByZXBhcmVfc2F2ZWAsIGFuZCBgc3ZtX3NldF9tc3JgIGp1bXAgb3V0IGFzIHByb21pc2luZyB0YXJnZXRzLiBgc3ZtX3NldF9tc3JgIGlzIGEgYml0IGJyb2FkLCBidXQgaXQncyBzdGlsbCBhIHJlbGV2YW50IGVudHJ5IHBvaW50IGZvciBhbmFseXNpcy5cblxuVGhpcyBwYXRjaCBpcyBtb2RpZnlpbmcgS1ZNIGZvciBBTUQncyBTVk0gZnVuY3Rpb25hbGl0eS4gVGhlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIHN1cHBvcnRpbmcgQnVzIExvY2sgRGV0ZWN0IHdpdGhpbiB0aGUgZ3Vlc3QsIHdoaWNoIG1lYW5zIHRoZXJlIGFyZSB1cGRhdGVzIHRvIE1TUiBoYW5kbGluZyBhbmQgaG93IG5lc3RlZCBWTUNCcyBhcmUgcHJlcGFyZWQuIFRoZXNlIGFyZSBzaWduaWZpY2FudCBoeXBlcnZpc29yLWxldmVsIGNoYW5nZXMsIGFuZCBJJ20gY29uZmlkZW50IHRoZXkgY2FuIGJlIHJlYWNoZWQgYW5kIHRlc3RlZCBlZmZlY3RpdmVseSB1c2luZyBLVk0gaW9jdGxzLlxuXG5JIGp1c3QgZG91YmxlIGNoZWNrZWQgdGhlIGNvbmZpZ3MsIGFuZCB3aGlsZSBgS1ZNX0FNRGAgaXMgZXhwbGljaXQsIGBLVk1gIGlzIG5hdHVyYWxseSBpbXBsaWVkLCBhbmQgdGhhdCBkb2Vzbid0IGNoYW5nZSBteSBvcmlnaW5hbCBhc3Nlc3NtZW50LlxuXG5BbHJpZ2h0LCBJIHRoaW5rIEknbSByZWFkeSB0byBjYWxsIHRoaXMuIExldCdzIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMDMsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI5VDA4OjI5OjE0LjIyNDkwNjM4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4MTE2NjIzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gICAgXCJzdm1fdXBkYXRlX2xicnZcIixcbiAgICBcInN2bV9zZXRfbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0FNRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5lc3RlZF92bWNiMDJfcHJlcGFyZV9zYXZlXCIsXG4gICAgXCJzdm1fdXBkYXRlX2xicnZcIixcbiAgICBcInN2bV9zZXRfbXNyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgS1ZNIFNWTSAoQU1EIHZpcnR1YWxpemF0aW9uKSB0byBzdXBwb3J0IEJ1cyBMb2NrIERldGVjdCBpbnNpZGUgdGhlIGd1ZXN0LiBJdCB1cGRhdGVzIE1TUiBoYW5kbGluZyBhbmQgbmVzdGVkIFZNQ0IgcHJlcGFyYXRpb24gbG9naWMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gaHlwZXJ2aXNvciBsb2dpYyB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIEtWTSBpb2N0bHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowm5s7n[1] Phase: Succeeded StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 08:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 08:30:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2] Phase: Succeeded StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 08:31:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-29 08:30:51 +0000 UTC FinishedAt: 2026-06-29 08:30:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowm5s7n/series-workflowm5s7n-convert-artifact-786984351/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-29 08:31:01 +0000 UTC FinishedAt: 2026-06-29 08:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-29 08:31:01 +0000 UTC FinishedAt: 2026-06-29 08:59:26 +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:*c32dbf85-93f2-4ed9-b89f-a373b92532f8,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-workflowm5s7n/series-workflowm5s7n-convert-artifact-786984351/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": "927dd867-3e5b-4238-a78d-9b83ff90a1d8", "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-workflowm5s7n/series-workflowm5s7n-build-action-4029734821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-29 08:31:01 +0000 UTC FinishedAt: 2026-06-29 08:55:39 +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:*c32dbf85-93f2-4ed9-b89f-a373b92532f8,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-workflowm5s7n/series-workflowm5s7n-convert-artifact-786984351/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": "927dd867-3e5b-4238-a78d-9b83ff90a1d8", "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-workflowm5s7n/series-workflowm5s7n-build-action-4029734821/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-29 08:59:26 +0000 UTC FinishedAt: 2026-06-29 08:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-29 08:59:26 +0000 UTC FinishedAt: 2026-06-29 08:59:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-29 08:59:26 +0000 UTC FinishedAt: 2026-06-29 09:00:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-29 08:59:26 +0000 UTC FinishedAt: 2026-06-29 08:59:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},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-workflowm5s7n/series-workflowm5s7n-convert-artifact-922288430/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-29 09:00:25 +0000 UTC FinishedAt: 2026-06-29 09:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-29 09:00:25 +0000 UTC FinishedAt: 2026-06-29 09:02:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*927dd867-3e5b-4238-a78d-9b83ff90a1d8,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-workflowm5s7n/series-workflowm5s7n-build-action-4029734821/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-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-29 09:02:44 +0000 UTC FinishedAt: 2026-06-29 09:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-29 09:02:44 +0000 UTC FinishedAt: 2026-06-29 09:02:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-29 09:02:44 +0000 UTC FinishedAt: 2026-06-29 09:26:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-29 09:02:44 +0000 UTC FinishedAt: 2026-06-29 09:26:19 +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:*c32dbf85-93f2-4ed9-b89f-a373b92532f8,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-workflowm5s7n/series-workflowm5s7n-convert-artifact-922288430/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": "e086666b-47d5-4cdd-987f-98eeb115a8ae", "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-workflowm5s7n/series-workflowm5s7n-build-action-1462876226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-29 09:02:44 +0000 UTC FinishedAt: 2026-06-29 09:26:09 +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:*c32dbf85-93f2-4ed9-b89f-a373b92532f8,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-workflowm5s7n/series-workflowm5s7n-convert-artifact-922288430/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": "e086666b-47d5-4cdd-987f-98eeb115a8ae", "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-workflowm5s7n/series-workflowm5s7n-build-action-1462876226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-29 09:26:19 +0000 UTC FinishedAt: 2026-06-29 09:26:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-29 09:26:19 +0000 UTC FinishedAt: 2026-06-29 09:26:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-29 09:26:19 +0000 UTC FinishedAt: 2026-06-29 09:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-29 09:26:19 +0000 UTC FinishedAt: 2026-06-29 09:28:17 +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:*e086666b-47d5-4cdd-987f-98eeb115a8ae,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-workflowm5s7n/series-workflowm5s7n-build-action-1462876226/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-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"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:*927dd867-3e5b-4238-a78d-9b83ff90a1d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e086666b-47d5-4cdd-987f-98eeb115a8ae,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-workflowm5s7n/series-workflowm5s7n-build-action-4029734821/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-workflowm5s7n/series-workflowm5s7n-build-action-1462876226/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 09:28:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 09:28:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"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-workflowm5s7n/series-workflowm5s7n-convert-artifact-3527011539/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 09:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 09:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-29 09:28:27 +0000 UTC FinishedAt: 2026-06-29 09:28:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-29 09:28:56 +0000 UTC FinishedAt: 2026-06-29 10:02:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowm5s7n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["nested_vmcb02_prepare_save","svm_update_lbrv","svm_set_msr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_AMD"],"series_id":"7676c485-370a-464c-bf35-6dd73e0fe45b","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-29 09:28:56 +0000 UTC FinishedAt: 2026-06-29 10:02:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*927dd867-3e5b-4238-a78d-9b83ff90a1d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e086666b-47d5-4cdd-987f-98eeb115a8ae,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-workflowm5s7n/series-workflowm5s7n-build-action-4029734821/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-workflowm5s7n/series-workflowm5s7n-build-action-1462876226/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-workflowm5s7n/series-workflowm5s7n-convert-artifact-3527011539/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,}