Name: series-workfloww6tzb Phase: Succeeded StartedAt: 2026-08-04 20:05:32 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[0] Phase: Succeeded StartedAt: 2026-08-04 20:05:32 +0000 UTC FinishedAt: 2026-08-04 20:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 20:05:32 +0000 UTC FinishedAt: 2026-08-04 20:48:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "828c4a5a9518117f9f7bdc445a7eeca85fc91bf8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "828c4a5a9518117f9f7bdc445a7eeca85fc91bf8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "2b86cc2d-3d94-41af-9422-63fc8aa76bd0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_unpack_cookie", "sctp_auth_verify_cookie_params" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlYWY5YWRjNjFiOTYxMjFkZTkxODM2ZTQyMTk1Mjk5OGM0NmYwM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDIwOjQ3OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDtcbiBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbjtcbiBzdHJ1Y3Qgc2N0cF9hdXRoa2V5O1xuIHN0cnVjdCBzY3RwX2htYWNhbGdvO1xuJiM0MztzdHJ1Y3Qgc2N0cF9jb29raWU7XG4gXG4gLyogRGVmaW5lcyBhbiBITUFDIGFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbiAqL1xuIHN0cnVjdCBzY3RwX2htYWMge1xuQEAgLTcyLDYgJiM0Mzs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXG4gaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdFx0XHRcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHRcdFx0Z2ZwX3QgZ2ZwKTtcbiYjNDM7Ym9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSk7XG4gY29uc3Qgc3RydWN0IHNjdHBfaG1hYyAqc2N0cF9hdXRoX2dldF9obWFjKF9fdTE2IGhtYWNfaWQpO1xuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKlxuIHNjdHBfYXV0aF9hc29jX2dldF9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLmNjNDIyOWVlMTE2ZDEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTM3Nyw2ICYjNDM7Mzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua19pZF9mb3JiaWRkZW4oX191OCBjaHVua19pZClcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoY2h1bmtfaWQpIHtcbiYjNDM7XHRjYXNlIFNDVFBfQ0lEX0lOSVQ6XG4mIzQzO1x0Y2FzZSBTQ1RQX0NJRF9JTklUX0FDSzpcbiYjNDM7XHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxuJiM0MztcdGNhc2UgU0NUUF9DSURfQVVUSDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBWZXJpZnkgQVVUSCBwYXJhbWV0ZXJzIGNvcGllZCBmcm9tIGEgc3RhdGUgY29va2llIGJlZm9yZSB0aGV5IGFyZSByZXN0b3JlZFxuJiM0MzsgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzXG4mIzQzOyAqIGFyZSBwZWVyLWNvbnRyb2xsZWQsIHNvIHRoZXkgbXVzdCBzYXRpc2Z5IHRoZSBzYW1lIGNvbnN0cmFpbnRzIGFzIGxvY2FsbHlcbiYjNDM7ICogZ2VuZXJhdGVkIEFVVEggcGFyYW1ldGVycy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiYjNDM7XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzY3RwX2htYWNfYWxnb19wYXJhbSAqaG1hY3M7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICpjaHVua3M7XG4mIzQzO1x0dTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjtcbiYjNDM7XHR1MTYgbl9obWFjcywgbl9jaHVua3MsIGk7XG4mIzQzO1x0Ym9vbCBoYXNfc2hhMSA9IGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAoc2N0cF9zayhlcC1cdTAwM2ViYXNlLnNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgfHwgIWVwLVx1MDAzZWF1dGhfZW5hYmxlKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHJhbmRvbSA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKWNvb2tpZS1cdTAwM2VhdXRoX3JhbmRvbTtcbiYjNDM7XHRpZiAocmFuZG9tLVx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcbiYjNDM7XHQgICAgbnRvaHMocmFuZG9tLVx1MDAzZWxlbmd0aCkgIT0gc2l6ZW9mKCpyYW5kb20pICYjNDM7IFNDVFBfQVVUSF9SQU5ET01fTEVOR1RIKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRobWFjcyA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKiljb29raWUtXHUwMDNlYXV0aF9obWFjcztcbiYjNDM7XHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbiYjNDM7XHRpZiAoaG1hY3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHxcbiYjNDM7XHQgICAgaG1hY3NfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpICYjNDM7XG4mIzQzO1x0XHRcdHNpemVvZihobWFjcy1cdTAwM2VobWFjX2lkc1swXSkgfHxcbiYjNDM7XHQgICAgaG1hY3NfbGVuIFx1MDAzZSBzaXplb2YoY29va2llLVx1MDAzZWF1dGhfaG1hY3MpIHx8XG4mIzQzO1x0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXG4mIzQzO1x0XHRcdHNpemVvZihobWFjcy1cdTAwM2VobWFjX2lkc1swXSkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdG5faG1hY3MgPSAoaG1hY3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgL1xuJiM0MztcdFx0ICBzaXplb2YoaG1hY3MtXHUwMDNlaG1hY19pZHNbMF0pO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5faG1hY3M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVx1MDAzZWhtYWNfaWRzW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGlmIChobWFjX2lkID09IFNDVFBfQVVUSF9ITUFDX0lEX1NIQTEpXG4mIzQzO1x0XHRcdGhhc19zaGExID0gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFoYXNfc2hhMSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtzID0gKGNvbnN0IHN0cnVjdCBzY3RwX2NodW5rc19wYXJhbSAqKWNvb2tpZS1cdTAwM2VhdXRoX2NodW5rcztcbiYjNDM7XHRjaHVua3NfbGVuID0gbnRvaHMoY2h1bmtzLVx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xuJiM0MztcdGlmIChjaHVua3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcbiYjNDM7XHQgICAgY2h1bmtzX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSB8fFxuJiM0MztcdCAgICBjaHVua3NfbGVuIFx1MDAzZSBzaXplb2YoY29va2llLVx1MDAzZWF1dGhfY2h1bmtzKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bl9jaHVua3MgPSBjaHVua3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2NodW5rczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy1cdTAwM2VjaHVua3NbaV0pKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cbiAgKiBTZWUgY29kZSBhYm92ZSBmb3IgdGhlIGFsZ29yaXRobS5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuQEAgLTE4NTIsNiAmIzQzOzE4NTIsOSBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKFxuIFx0LyogU2V0IHVwIG91ciBwZWVyJiMzOTtzIHBvcnQgbnVtYmVyLiAgKi9cbiBcdHJldHZhbC1cdTAwM2VwZWVyLnBvcnQgPSBudG9ocyhjaHVuay1cdTAwM2VzY3RwX2hkci1cdTAwM2Vzb3VyY2UpO1xuIFxuJiM0MztcdGlmICghc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGVwLCBiZWFyX2Nvb2tpZSkpXG4mIzQzO1x0XHRnb3RvIG1hbGZvcm1lZDtcbiYjNDM7XG4gXHQvKiBQb3B1bGF0ZSB0aGUgYXNzb2NpYXRpb24gZnJvbSB0aGUgY29va2llLiAgKi9cbiBcdG1lbWNweShcdTAwMjZyZXR2YWwtXHUwMDNlYywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfdW5wYWNrX2Nvb2tpZSYjMzQ7LAogICAgJiMzNDtzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2VhZjlhZGM2MWI5NjEyMWRlOTE4MzZlNDIxOTUyOTk4YzQ2ZjAzZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMjA6NDc6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaCBiL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDsKIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uOwogc3RydWN0IHNjdHBfYXV0aGtleTsKIHN0cnVjdCBzY3RwX2htYWNhbGdvOwomIzQzO3N0cnVjdCBzY3RwX2Nvb2tpZTsKIAogLyogRGVmaW5lcyBhbiBITUFDIGFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbiAqLwogc3RydWN0IHNjdHBfaG1hYyB7CkBAIC03Miw2ICYjNDM7NzMsOCBAQCBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzY3RwX2F1dGhfZ2V0X3Noa2V5KAogaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKIAkJCQlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQlnZnBfdCBnZnApOwomIzQzO2Jvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKJiM0MzsJCQkJICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Nvb2tpZSAqY29va2llKTsKIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTsKIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKgogc2N0cF9hdXRoX2Fzb2NfZ2V0X2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGM5MDFkMzczYWY4MDMuLmNjNDIyOWVlMTE2ZDEgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hdXRoLmMKQEAgLTM3Nyw2ICYjNDM7Mzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKF9fdTggY2h1bmtfaWQpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNodW5rX2lkKSB7CiYjNDM7CWNhc2UgU0NUUF9DSURfSU5JVDoKJiM0MzsJY2FzZSBTQ1RQX0NJRF9JTklUX0FDSzoKJiM0MzsJY2FzZSBTQ1RQX0NJRF9TSFVURE9XTl9DT01QTEVURToKJiM0MzsJY2FzZSBTQ1RQX0NJRF9BVVRIOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWQKJiM0MzsgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzCiYjNDM7ICogYXJlIHBlZXItY29udHJvbGxlZCwgc28gdGhleSBtdXN0IHNhdGlzZnkgdGhlIHNhbWUgY29uc3RyYWludHMgYXMgbG9jYWxseQomIzQzOyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuCiYjNDM7ICovCiYjNDM7Ym9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKmNodW5rczsKJiM0MzsJdTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjsKJiM0MzsJdTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpOwomIzQzOwlib29sIGhhc19zaGExID0gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChzY3RwX3NrKGVwLSZndDtiYXNlLnNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlIHx8ICFlcC0mZ3Q7YXV0aF9lbmFibGUpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmFuZG9tID0gKGNvbnN0IHN0cnVjdCBzY3RwX3BhcmFtaGRyICopY29va2llLSZndDthdXRoX3JhbmRvbTsKJiM0MzsJaWYgKHJhbmRvbS0mZ3Q7dHlwZSAhPSBTQ1RQX1BBUkFNX1JBTkRPTSB8fAomIzQzOwkgICAgbnRvaHMocmFuZG9tLSZndDtsZW5ndGgpICE9IHNpemVvZigqcmFuZG9tKSAmIzQzOyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLSZndDthdXRoX2htYWNzOwomIzQzOwlobWFjc19sZW4gPSBudG9ocyhobWFjcy0mZ3Q7cGFyYW1faGRyLmxlbmd0aCk7CiYjNDM7CWlmIChobWFjcy0mZ3Q7cGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHwKJiM0MzsJICAgIGhtYWNzX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgJiM0MzsKJiM0MzsJCQlzaXplb2YoaG1hY3MtJmd0O2htYWNfaWRzWzBdKSB8fAomIzQzOwkgICAgaG1hY3NfbGVuICZndDsgc2l6ZW9mKGNvb2tpZS0mZ3Q7YXV0aF9obWFjcykgfHwKJiM0MzsJICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlCiYjNDM7CQkJc2l6ZW9mKGhtYWNzLSZndDtobWFjX2lkc1swXSkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5faG1hY3MgPSAoaG1hY3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgLwomIzQzOwkJICBzaXplb2YoaG1hY3MtJmd0O2htYWNfaWRzWzBdKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5faG1hY3M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLSZndDtobWFjX2lkc1tpXSk7CiYjNDM7CiYjNDM7CQlpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJaWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSkKJiM0MzsJCQloYXNfc2hhMSA9IHRydWU7CiYjNDM7CX0KJiM0MzsJaWYgKCFoYXNfc2hhMSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY2h1bmtzID0gKGNvbnN0IHN0cnVjdCBzY3RwX2NodW5rc19wYXJhbSAqKWNvb2tpZS0mZ3Q7YXV0aF9jaHVua3M7CiYjNDM7CWNodW5rc19sZW4gPSBudG9ocyhjaHVua3MtJmd0O3BhcmFtX2hkci5sZW5ndGgpOwomIzQzOwlpZiAoY2h1bmtzLSZndDtwYXJhbV9oZHIudHlwZSAhPSBTQ1RQX1BBUkFNX0NIVU5LUyB8fAomIzQzOwkgICAgY2h1bmtzX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgfHwKJiM0MzsJICAgIGNodW5rc19sZW4gJmd0OyBzaXplb2YoY29va2llLSZndDthdXRoX2NodW5rcykpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5fY2h1bmtzID0gY2h1bmtzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuX2NodW5rczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy0mZ3Q7Y2h1bmtzW2ldKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogCiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS4KICAqIFNlZSBjb2RlIGFib3ZlIGZvciB0aGUgYWxnb3JpdGhtLgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTE4NTIsNiAmIzQzOzE4NTIsOSBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKAogCS8qIFNldCB1cCBvdXIgcGVlciYjMzk7cyBwb3J0IG51bWJlci4gICovCiAJcmV0dmFsLSZndDtwZWVyLnBvcnQgPSBudG9ocyhjaHVuay0mZ3Q7c2N0cF9oZHItJmd0O3NvdXJjZSk7CiAKJiM0MzsJaWYgKCFzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoZXAsIGJlYXJfY29va2llKSkKJiM0MzsJCWdvdG8gbWFsZm9ybWVkOwomIzQzOwogCS8qIFBvcHVsYXRlIHRoZSBhc3NvY2lhdGlvbiBmcm9tIHRoZSBjb29raWUuICAqLwogCW1lbWNweSgmYW1wO3JldHZhbC0mZ3Q7YywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBsb2dpYy4gU2VlbXMgbGlrZSB0aGUga2V5IGFkZGl0aW9uIGhlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb24sIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCB0dWNrZWQgYXdheSBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gQW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBzY3RwX3VucGFja19jb29raWVgIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgdmVyaWZ5aW5nIHRoZSBBVVRIIHBhcmFtZXRlcnMgZXh0cmFjdGVkIGZyb20gYSBzdGF0ZSBjb29raWUgYmVmb3JlIHdlIGdvIGFuZCByZXN0b3JlIHRoZW0gaW50byBhbiBhc3NvY2lhdGlvbi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3BvdCB0byBhZGQgYSBjaGVjaywgbWFrZXMgc2Vuc2UuCgpSaWdodCwgdGltZSB0byBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfSVBfU0NUUGAgaXMgdGhlIGJpZyBvbmUsIHRoZSBtYXN0ZXIgc3dpdGNoLCBuYXR1cmFsbHkuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHNldCBwcm9wZXJseS4KCkxldCBtZSBwaW5wb2ludCB3aGljaCBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGltcGFjdGVkOiBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBpcyB0aGUgbmV3YmllLCBhbmQgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFNDVFAgYXV0aGVudGljYXRpb24gY29uZmlncy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgbmV0L3NjdHAvS2NvbmZpZ2AgZm9yIHRoYXQuIEdlbmVyYWxseSwgU0NUUCBhdXRoZW50aWNhdGlvbiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpbmRpcmVjdGx5IHRocm91Z2ggYENPTkZJR19JUF9TQ1RQYC4gQWgsIGhvbGQgb24uLi4gbGV0IG1lIGRvIGEgcXVpY2sgZ3JlcC4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX0lQX1NDVFBgIGFuZCBgY29va2llX2F1dGhfZW5hYmxlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU0NUUCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIFNDVFAgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBuZXQvc2N0cGAgZGlyZWN0b3J5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gYW55dGhpbmcgZWxzZSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyBpbiB0aGVzZSBsYXJnZSBjb2RlYmFzZXMsIGFuZCBhIHF1aWNrIGNoZWNrIGhlcmUgY291bGQgc2F2ZSBtZSBzb21lIGJhY2t0cmFja2luZyBsYXRlciBvbi4gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBnb29kIGhhbmRsZSBvbiB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBTbywgYmVmb3JlIGFuYWx5emluZyBhbnl0aGluZyBlbHNlLCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBtb21lbnQgdG8gbG9vayBvdmVyIHRoZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz0zOT1pZiBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxubmV0L3NjdHAvS2NvbmZpZzo0MTpjb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz01Mj1jaG9pY2Vcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxubmV0L3NjdHAvS2NvbmZpZzo2Mjpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxubmV0L3NjdHAvS2NvbmZpZy02My1cdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTQ1RQIENvb2tpZSBQYXJhbWV0ZXIgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGZvciB2ZXJpZnlpbmcgU0NUUCBjb29raWUgcGFyYW1ldGVycy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBkZWZpbml0ZWx5IHRvIGdldCB0aGlzIGZ1enplZC4gVGhhdCYjMzk7cyB3aGVyZSB3ZSBjYW4gZmluZCB0aGUgcmVhbCBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyBhcmUgZ29pbmcgdG8gYmUgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kLCBpbXBvcnRhbnRseSwgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AuIEV2ZW4gdGhvdWdoIHRoZSBsYXR0ZXIgaXMgYSBuZXcgZnVuY3Rpb24sIGl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBzY3RwX3VucGFja19jb29raWVgLCBtYWtpbmcgaXQgY3JpdGljYWwuCgpJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgIGlzIGp1c3QgYSBnbG9iYWwgb3IgaWYgaXQmIzM5O3MgZXhwb3J0ZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCBgaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhgIHJldmVhbHMgYGJvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKC4uLilgLCBzbyB5ZXMsIGl0JiMzOTtzIGEgZ2xvYmFsLCB3aGljaCBtYWtlcyBvdXIgZnV6emluZyBlZmZvcnRzIGVhc2llci4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbnRleHQgb2YgYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIEkmIzM5O2xsIGZpbmQgaXQgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fbWFrZV9jaHVuay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNjQ1PXN0YXRpYyBzdHJ1Y3Qgc2N0cF9jb29raWVfcGFyYW0gKnNjdHBfcGFja19jb29raWUoXG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3MjEtLyogVW5wYWNrIHRoZSBjb29raWUgZnJvbSBDT09LSUUgRUNITyBjaHVuaywgcmVjcmVhdGluZyB0aGUgYXNzb2NpYXRpb24uICAqL1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MjI6c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0xNzIzLVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFNDVFAgQ29va2llIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBhcyBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWx2aW5nIGludG8gdGhlIFNDVFAgY29va2llIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIGVudHJ5IHBvaW50cywgYW5kIGdpdmVuIG15IGV4cGVydGlzZSwgdGhleSBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGlubmVyIHdvcmtpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcsIHNvIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIGluIHRoaXMgYXJlYSB0byBhZGQgdG8gdGhlIGZvY3VzLgoKQWgsIGBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuYCBpcyBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0IGZvciBub3csIEkgd29uJiMzOTt0IG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBmb2N1cyBsaXN0LgoKTmV4dCBzdGVwIC0gbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcyBjb2RlLiBUaGUgYElQX1NDVFBgIGNvbmZpZyBzZWVtcyB0byBiZSB0aGUgbWFpbiBkcml2ZXIgaGVyZSwgc28gSSYjMzk7bGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG5uZXQvc2N0cC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY3RwL0tjb25maWctOS1cdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcbi0tXG5uZXQvc2N0cC9LY29uZmlnPTQxPWNvbmZpZyBTQ1RQX0RCR19PQkpDTlRcbm5ldC9zY3RwL0tjb25maWctNDItXHRib29sIFwmIzM0O1NDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcJiMzNDtcbm5ldC9zY3RwL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIFBST0NfRlNcbm5ldC9zY3RwL0tjb25maWctNDQtXHRoZWxwXG4tLVxubmV0L3NjdHAvS2NvbmZpZz03MD1jb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIElORVRfRElBR1xubmV0L3NjdHAvS2NvbmZpZy03Mi1cdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0OQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGRlcGVuZGVuY2Ugb24gYElQX1NDVFBgIGltcGxpZXMgYElORVRgIGlzIGFscmVhZHkgZW5hYmxlZCwgbWFraW5nIHRoaXMgYSByZWFzb25hYmx5IHN0cmFpZ2h0Zm9yd2FyZCBpbmNsdXNpb24uIGBJUF9TQ1RQYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZXZlcnl0aGluZyB0byB3b3JrLgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gYSBjb3VwbGUgb2YgdGhpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzY3RwX3VucGFja19jb29raWVgIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gWWVzLCBnb29kLCBpdCBpcyBub3QuIEl0JiMzOTtzIGRlZmluZWQgYXMgYHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoLi4uKWAuIFRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkLiBBbmQgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0aGF0IG9uZSB0b28uIE9rYXksIG5vdCBzdGF0aWMgZWl0aGVyLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCBhcyBgYm9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoLi4uKWAuIEV4Y2VsbGVudC4gVGhpcyBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gdmFsaWRhdGluZyBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24sIHdoaWNoIGlzIHRyaWdnZXJlZCB2aWEgbmV0d29yayB0cmFmZmljLCBzcGVjaWZpY2FsbHkgQ09PS0lFIEVDSE8gY2h1bmtzLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHNvdW5kLiBUaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBmdXp6IHRoaXMgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGVyZSBhcmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLgoKVG8gYmUgdmVyeSBjbGVhciwgSSYjMzk7bGwgZmxhZyB0aGVzZSBrZXkgc3ltYm9scyBmb3IgZnV0dXJlIGZvY3VzOiBgc2N0cF91bnBhY2tfY29va2llYCBhbmQgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AuIFRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IGlzIGBJUF9TQ1RQYC4gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIFNDVFAgQVVUSCBwYXJhbWV0ZXJzIGNvcGllZCBmcm9tIGEgc3RhdGUgY29va2llIGR1cmluZyBhc3NvY2lhdGlvbiBjcmVhdGlvbi4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFNDVFAgbmV0d29yayB0cmFmZmljIChzcGVjaWZpY2FsbHkgQ09PS0lFIEVDSE8gY2h1bmtzKS4gSXQgaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGNvb2tpZXMgd2l0aG91dCByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjI3LjQxMjg5NTA4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mjc3NjAxMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgICBcInNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MjcuNDEyOTA0OTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ1MjkyNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2VhZjlhZGM2MWI5NjEyMWRlOTE4MzZlNDIxOTUyOTk4YzQ2ZjAzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDIwOjQ3OjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG5pbmRleCA2ZjJjZDU2MmIxZGU2Li43NGIzNzkwZTJhM2Q1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG5AQCAtMjIsNiArMjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDtcXG4gc3RydWN0IHNjdHBfYXNzb2NpYXRpb247XFxuIHN0cnVjdCBzY3RwX2F1dGhrZXk7XFxuIHN0cnVjdCBzY3RwX2htYWNhbGdvO1xcbitzdHJ1Y3Qgc2N0cF9jb29raWU7XFxuIFxcbiAvKiBEZWZpbmVzIGFuIEhNQUMgYWxnb3JpdGhtIHN1cHBvcnRlZCBieSBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uICovXFxuIHN0cnVjdCBzY3RwX2htYWMge1xcbkBAIC03Miw2ICs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXFxuIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXHRcXHRcXHRcXHRnZnBfdCBnZnApO1xcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSk7XFxuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTtcXG4gY29uc3Qgc3RydWN0IHNjdHBfaG1hYyAqXFxuIHNjdHBfYXV0aF9hc29jX2dldF9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jXFxuaW5kZXggYzkwMWQzNzNhZjgwMy4uY2M0MjI5ZWUxMTZkMSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcXG4rKysgYi9uZXQvc2N0cC9hdXRoLmNcXG5AQCAtMzc3LDYgKzM3Nyw4MSBAQCBpbnQgc2N0cF9hdXRoX2Fzb2NfY29weV9zaGtleXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbiBcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihfX3U4IGNodW5rX2lkKVxcbit7XFxuK1xcdHN3aXRjaCAoY2h1bmtfaWQpIHtcXG4rXFx0Y2FzZSBTQ1RQX0NJRF9JTklUOlxcbitcXHRjYXNlIFNDVFBfQ0lEX0lOSVRfQUNLOlxcbitcXHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxcbitcXHRjYXNlIFNDVFBfQ0lEX0FVVEg6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWRcXG4rICogaW50byBhbiBhc3NvY2lhdGlvbi4gIFdoZW4gY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGRpc2FibGVkIHRoZXNlIGZpZWxkc1xcbisgKiBhcmUgcGVlci1jb250cm9sbGVkLCBzbyB0aGV5IG11c3Qgc2F0aXNmeSB0aGUgc2FtZSBjb25zdHJhaW50cyBhcyBsb2NhbGx5XFxuKyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuXFxuKyAqL1xcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKmNodW5rcztcXG4rXFx0dTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjtcXG4rXFx0dTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpO1xcbitcXHRib29sIGhhc19zaGExID0gZmFsc2U7XFxuK1xcbitcXHRpZiAoc2N0cF9zayhlcC1cXHUwMDNlYmFzZS5zayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSB8fCAhZXAtXFx1MDAzZWF1dGhfZW5hYmxlKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJhbmRvbSA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKWNvb2tpZS1cXHUwMDNlYXV0aF9yYW5kb207XFxuK1xcdGlmIChyYW5kb20tXFx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcXG4rXFx0ICAgIG50b2hzKHJhbmRvbS1cXHUwMDNlbGVuZ3RoKSAhPSBzaXplb2YoKnJhbmRvbSkgKyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLVxcdTAwM2VhdXRoX2htYWNzO1xcbitcXHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XFxuK1xcdGlmIChobWFjcy1cXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHxcXG4rXFx0ICAgIGhtYWNzX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgK1xcbitcXHRcXHRcXHRzaXplb2YoaG1hY3MtXFx1MDAzZWhtYWNfaWRzWzBdKSB8fFxcbitcXHQgICAgaG1hY3NfbGVuIFxcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cXHUwMDNlYXV0aF9obWFjcykgfHxcXG4rXFx0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXFxuK1xcdFxcdFxcdHNpemVvZihobWFjcy1cXHUwMDNlaG1hY19pZHNbMF0pKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRuX2htYWNzID0gKGhtYWNzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIC9cXG4rXFx0XFx0ICBzaXplb2YoaG1hY3MtXFx1MDAzZWhtYWNfaWRzWzBdKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faG1hY3M7IGkrKykge1xcbitcXHRcXHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVxcdTAwM2VobWFjX2lkc1tpXSk7XFxuK1xcbitcXHRcXHRpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0aWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSlcXG4rXFx0XFx0XFx0aGFzX3NoYTEgPSB0cnVlO1xcbitcXHR9XFxuK1xcdGlmICghaGFzX3NoYTEpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNodW5rcyA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKiljb29raWUtXFx1MDAzZWF1dGhfY2h1bmtzO1xcbitcXHRjaHVua3NfbGVuID0gbnRvaHMoY2h1bmtzLVxcdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcXG4rXFx0aWYgKGNodW5rcy1cXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcXG4rXFx0ICAgIGNodW5rc19sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpIHx8XFxuK1xcdCAgICBjaHVua3NfbGVuIFxcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cXHUwMDNlYXV0aF9jaHVua3MpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRuX2NodW5rcyA9IGNodW5rc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl9jaHVua3M7IGkrKykge1xcbitcXHRcXHRpZiAoc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihjaHVua3MtXFx1MDAzZWNodW5rc1tpXSkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIFxcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cXG4gICogU2VlIGNvZGUgYWJvdmUgZm9yIHRoZSBhbGdvcml0aG0uXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXFxuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXFxuQEAgLTE4NTIsNiArMTg1Miw5IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXFxuIFxcdC8qIFNldCB1cCBvdXIgcGVlcidzIHBvcnQgbnVtYmVyLiAgKi9cXG4gXFx0cmV0dmFsLVxcdTAwM2VwZWVyLnBvcnQgPSBudG9ocyhjaHVuay1cXHUwMDNlc2N0cF9oZHItXFx1MDAzZXNvdXJjZSk7XFxuIFxcbitcXHRpZiAoIXNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhlcCwgYmVhcl9jb29raWUpKVxcbitcXHRcXHRnb3RvIG1hbGZvcm1lZDtcXG4rXFxuIFxcdC8qIFBvcHVsYXRlIHRoZSBhc3NvY2lhdGlvbiBmcm9tIHRoZSBjb29raWUuICAqL1xcbiBcXHRtZW1jcHkoXFx1MDAyNnJldHZhbC1cXHUwMDNlYywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjI4LjY1ODc1Mzg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjUwMzE3MzQzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZWFmOWFkYzYxYjk2MTIxZGU5MTgzNmU0MjE5NTI5OThjNDZmMDNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAyMDo0NzoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC0yMiw2ICsyMiw3IEBAIHN0cnVjdCBzY3RwX2VuZHBvaW50O1xuIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uO1xuIHN0cnVjdCBzY3RwX2F1dGhrZXk7XG4gc3RydWN0IHNjdHBfaG1hY2FsZ287XG4rc3RydWN0IHNjdHBfY29va2llO1xuIFxuIC8qIERlZmluZXMgYW4gSE1BQyBhbGdvcml0aG0gc3VwcG9ydGVkIGJ5IFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24gKi9cbiBzdHJ1Y3Qgc2N0cF9obWFjIHtcbkBAIC03Miw2ICs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXG4gaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdFx0XHRcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHRcdFx0Z2ZwX3QgZ2ZwKTtcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4rXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpO1xuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTtcbiBjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjICpcbiBzY3RwX2F1dGhfYXNvY19nZXRfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jXG5pbmRleCBjOTAxZDM3M2FmODAzLi5jYzQyMjllZTExNmQxIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXV0aC5jXG4rKysgYi9uZXQvc2N0cC9hdXRoLmNcbkBAIC0zNzcsNiArMzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihfX3U4IGNodW5rX2lkKVxuK3tcbitcdHN3aXRjaCAoY2h1bmtfaWQpIHtcbitcdGNhc2UgU0NUUF9DSURfSU5JVDpcbitcdGNhc2UgU0NUUF9DSURfSU5JVF9BQ0s6XG4rXHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxuK1x0Y2FzZSBTQ1RQX0NJRF9BVVRIOlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbit9XG4rXG4rLyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWRcbisgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzXG4rICogYXJlIHBlZXItY29udHJvbGxlZCwgc28gdGhleSBtdXN0IHNhdGlzZnkgdGhlIHNhbWUgY29uc3RyYWludHMgYXMgbG9jYWxseVxuKyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuXG4rICovXG4rYm9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Nvb2tpZSAqY29va2llKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBzY3RwX3BhcmFtaGRyICpyYW5kb207XG4rXHRjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzO1xuK1x0Y29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICpjaHVua3M7XG4rXHR1MTYgaG1hY3NfbGVuLCBjaHVua3NfbGVuO1xuK1x0dTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpO1xuK1x0Ym9vbCBoYXNfc2hhMSA9IGZhbHNlO1xuK1xuK1x0aWYgKHNjdHBfc2soZXAtXHUwMDNlYmFzZS5zayktXHUwMDNlY29va2llX2F1dGhfZW5hYmxlIHx8ICFlcC1cdTAwM2VhdXRoX2VuYWJsZSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyYW5kb20gPSAoY29uc3Qgc3RydWN0IHNjdHBfcGFyYW1oZHIgKiljb29raWUtXHUwMDNlYXV0aF9yYW5kb207XG4rXHRpZiAocmFuZG9tLVx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcbitcdCAgICBudG9ocyhyYW5kb20tXHUwMDNlbGVuZ3RoKSAhPSBzaXplb2YoKnJhbmRvbSkgKyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLVx1MDAzZWF1dGhfaG1hY3M7XG4rXHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbitcdGlmIChobWFjcy1cdTAwM2VwYXJhbV9oZHIudHlwZSAhPSBTQ1RQX1BBUkFNX0hNQUNfQUxHTyB8fFxuK1x0ICAgIGhtYWNzX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSArXG4rXHRcdFx0c2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKSB8fFxuK1x0ICAgIGhtYWNzX2xlbiBcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cdTAwM2VhdXRoX2htYWNzKSB8fFxuK1x0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXG4rXHRcdFx0c2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0bl9obWFjcyA9IChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAvXG4rXHRcdCAgc2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5faG1hY3M7IGkrKykge1xuK1x0XHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVx1MDAzZWhtYWNfaWRzW2ldKTtcbitcbitcdFx0aWYgKCFzY3RwX2htYWNfc3VwcG9ydGVkKGhtYWNfaWQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0aWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSlcbitcdFx0XHRoYXNfc2hhMSA9IHRydWU7XG4rXHR9XG4rXHRpZiAoIWhhc19zaGExKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRjaHVua3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICopY29va2llLVx1MDAzZWF1dGhfY2h1bmtzO1xuK1x0Y2h1bmtzX2xlbiA9IG50b2hzKGNodW5rcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbitcdGlmIChjaHVua3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcbitcdCAgICBjaHVua3NfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpIHx8XG4rXHQgICAgY2h1bmtzX2xlbiBcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cdTAwM2VhdXRoX2NodW5rcykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG5fY2h1bmtzID0gY2h1bmtzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2NodW5rczsgaSsrKSB7XG4rXHRcdGlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy1cdTAwM2VjaHVua3NbaV0pKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cbiAgKiBTZWUgY29kZSBhYm92ZSBmb3IgdGhlIGFsZ29yaXRobS5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbisrKyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuQEAgLTE4NTIsNiArMTg1Miw5IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXG4gXHQvKiBTZXQgdXAgb3VyIHBlZXIncyBwb3J0IG51bWJlci4gICovXG4gXHRyZXR2YWwtXHUwMDNlcGVlci5wb3J0ID0gbnRvaHMoY2h1bmstXHUwMDNlc2N0cF9oZHItXHUwMDNlc291cmNlKTtcbiBcbitcdGlmICghc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGVwLCBiZWFyX2Nvb2tpZSkpXG4rXHRcdGdvdG8gbWFsZm9ybWVkO1xuK1xuIFx0LyogUG9wdWxhdGUgdGhlIGFzc29jaWF0aW9uIGZyb20gdGhlIGNvb2tpZS4gICovXG4gXHRtZW1jcHkoXHUwMDI2cmV0dmFsLVx1MDAzZWMsIGJlYXJfY29va2llLCBzaXplb2YoKmJlYXJfY29va2llKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0NzoyOC42NTg3NTQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjkyMjkwMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTQ1RQIEF1dGhlbnRpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBsb2dpYy4gU2VlbXMgbGlrZSB0aGUga2V5IGFkZGl0aW9uIGhlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb24sIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCB0dWNrZWQgYXdheSBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gQW5kIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEVzc2VudGlhbGx5LCBpdCdzIHZlcmlmeWluZyB0aGUgQVVUSCBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tIGEgc3RhdGUgY29va2llIGJlZm9yZSB3ZSBnbyBhbmQgcmVzdG9yZSB0aGVtIGludG8gYW4gYXNzb2NpYXRpb24uIFRoYXQncyBhIGdvb2Qgc3BvdCB0byBhZGQgYSBjaGVjaywgbWFrZXMgc2Vuc2UuXG5cblJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIG5hdHVyYWxseS4gSSBzaG91bGQgbWFrZSBzdXJlIHRoYXQncyBzZXQgcHJvcGVybHkuXG5cbkxldCBtZSBwaW5wb2ludCB3aGljaCBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGltcGFjdGVkOiBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBpcyB0aGUgbmV3YmllLCBhbmQgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgdGhlIG9uZSB0aGF0J3MgYmVlbiBtb2RpZmllZC4gR290IGl0LlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFNDVFAgYXV0aGVudGljYXRpb24gY29uZmlncy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBuZXQvc2N0cC9LY29uZmlnYCBmb3IgdGhhdC4gR2VuZXJhbGx5LCBTQ1RQIGF1dGhlbnRpY2F0aW9uIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBgQ09ORklHX0lQX1NDVFBgLiBBaCwgaG9sZCBvbi4uLiBsZXQgbWUgZG8gYSBxdWljayBncmVwLiBJJ2xsIHNlYXJjaCBmb3IgYENPTkZJR19JUF9TQ1RQYCBhbmQgYGNvb2tpZV9hdXRoX2VuYWJsZWAsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjMzLjg4Nzk4NTY4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1NzUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MzMuOTMxMjQ1MzI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTE5OTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNDVFAgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgU0NUUCBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYG5ldC9zY3RwYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQncyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCdzIGVhc3kgdG8gb3Zlcmxvb2sgdGhpbmdzIGluIHRoZXNlIGxhcmdlIGNvZGViYXNlcywgYW5kIGEgcXVpY2sgY2hlY2sgaGVyZSBjb3VsZCBzYXZlIG1lIHNvbWUgYmFja3RyYWNraW5nIGxhdGVyIG9uLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgaGFuZGxlIG9uIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFNvLCBiZWZvcmUgYW5hbHl6aW5nIGFueXRoaW5nIGVsc2UsIEknbSBnb2luZyB0byB0YWtlIGEgbW9tZW50IHRvIGxvb2sgb3ZlciB0aGUgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MzcuMDU2NDQ3NTA3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzcwNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTM5PWlmIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxcbm5ldC9zY3RwL0tjb25maWc6NDE6Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NTI9Y2hvaWNlXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxcbm5ldC9zY3RwL0tjb25maWc6NjI6Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG5uZXQvc2N0cC9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY4PWVuZGNob2ljZVxcbm5ldC9zY3RwL0tjb25maWctNjktXFxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcxLVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjM3LjExODIyMDYwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTc4MDMzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTQ1RQIENvb2tpZSBQYXJhbWV0ZXIgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgZm9yIHZlcmlmeWluZyBTQ1RQIGNvb2tpZSBwYXJhbWV0ZXJzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIGRlZmluaXRlbHkgdG8gZ2V0IHRoaXMgZnV6emVkLiBUaGF0J3Mgd2hlcmUgd2UgY2FuIGZpbmQgdGhlIHJlYWwgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy4gVGhlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIGBzY3RwX3VucGFja19jb29raWVgIGFuZCwgaW1wb3J0YW50bHksIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLiBFdmVuIHRob3VnaCB0aGUgbGF0dGVyIGlzIGEgbmV3IGZ1bmN0aW9uLCBpdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBzY3RwX3VucGFja19jb29raWVgLCBtYWtpbmcgaXQgY3JpdGljYWwuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AgaXMganVzdCBhIGdsb2JhbCBvciBpZiBpdCdzIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCBgaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhgIHJldmVhbHMgYGJvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKC4uLilgLCBzbyB5ZXMsIGl0J3MgYSBnbG9iYWwsIHdoaWNoIG1ha2VzIG91ciBmdXp6aW5nIGVmZm9ydHMgZWFzaWVyLlxuXG5Ob3csIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbnRleHQgb2YgYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIEknbGwgZmluZCBpdCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo0Mi4yMTYwMjU0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzUyNjIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNjQ1PXN0YXRpYyBzdHJ1Y3Qgc2N0cF9jb29raWVfcGFyYW0gKnNjdHBfcGFja19jb29raWUoXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcyMS0vKiBVbnBhY2sgdGhlIGNvb2tpZSBmcm9tIENPT0tJRSBFQ0hPIGNodW5rLCByZWNyZWF0aW5nIHRoZSBhc3NvY2lhdGlvbi4gICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MjI6c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcyMy1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjQyLjI1OTU1NDIyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDMxNjc4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gU0NUUCBDb29raWUgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBhcyBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWx2aW5nIGludG8gdGhlIFNDVFAgY29va2llIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIGVudHJ5IHBvaW50cywgYW5kIGdpdmVuIG15IGV4cGVydGlzZSwgdGhleSBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGlubmVyIHdvcmtpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZywgc28gSSdsbCBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdG8gYWRkIHRvIHRoZSBmb2N1cy5cblxuQWgsIGBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuYCBpcyBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0IGZvciBub3csIEkgd29uJ3QgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGZvY3VzIGxpc3QuXG5cbk5leHQgc3RlcCAtIGxldCdzIHNlZSB3aGF0J3MgZHJpdmluZyB0aGlzIGNvZGUuIFRoZSBgSVBfU0NUUGAgY29uZmlnIHNlZW1zIHRvIGJlIHRoZSBtYWluIGRyaXZlciBoZXJlLCBzbyBJJ2xsIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIHVzZWZ1bCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzgyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6NDcuNDYyNzI0NzA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA3OTQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvS2NvbmZpZz02PW1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxubmV0L3NjdHAvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9zY3RwL0tjb25maWctOS1cXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTQxPWNvbmZpZyBTQ1RQX0RCR19PQkpDTlRcXG5uZXQvc2N0cC9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIlNDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcXFwiXFxubmV0L3NjdHAvS2NvbmZpZzo0MzpcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5uZXQvc2N0cC9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NzA9Y29uZmlnIElORVRfU0NUUF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIElORVRfRElBR1xcbm5ldC9zY3RwL0tjb25maWctNzItXFx0ZGVmX3RyaXN0YXRlIElORVRfRElBR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo0Ny41MDU4MDY2ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExMTQwNzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIEF1dGhlbnRpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGRlcGVuZGVuY2Ugb24gYElQX1NDVFBgIGltcGxpZXMgYElORVRgIGlzIGFscmVhZHkgZW5hYmxlZCwgbWFraW5nIHRoaXMgYSByZWFzb25hYmx5IHN0cmFpZ2h0Zm9yd2FyZCBpbmNsdXNpb24uIGBJUF9TQ1RQYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZXZlcnl0aGluZyB0byB3b3JrLlxuXG5Ob3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgc2N0cF91bnBhY2tfY29va2llYCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gWWVzLCBnb29kLCBpdCBpcyBub3QuIEl0J3MgZGVmaW5lZCBhcyBgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZSguLi4pYC4gVGhhdCdzIHdoYXQgSSBleHBlY3RlZC4gQW5kIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCBJJ2xsIGRvdWJsZSBjaGVjayB0aGF0IG9uZSB0b28uIE9rYXksIG5vdCBzdGF0aWMgZWl0aGVyLCBhbmQgaXQncyBkZWZpbmVkIGFzIGBib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyguLi4pYC4gRXhjZWxsZW50LiBUaGlzIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBjZW50ZXJzIG9uIHZhbGlkYXRpbmcgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIG5ldHdvcmsgdHJhZmZpYywgc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcy4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltcG9ydGFudCBuZXh0IHN0ZXAgaXMgdG8gZnV6eiB0aGlzIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcy4gV2UgbmVlZCB0byB2ZXJpZnkgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cblxuVG8gYmUgdmVyeSBjbGVhciwgSSdsbCBmbGFnIHRoZXNlIGtleSBzeW1ib2xzIGZvciBmdXR1cmUgZm9jdXM6IGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYC4gVGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnQgaXMgYElQX1NDVFBgLiBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQ5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo1My42MTcyMTc5MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI2Nzk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgICBcInNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workfloww6tzb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 20:05:32 +0000 UTC FinishedAt: 2026-08-04 20:47:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "828c4a5a9518117f9f7bdc445a7eeca85fc91bf8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "828c4a5a9518117f9f7bdc445a7eeca85fc91bf8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "2b86cc2d-3d94-41af-9422-63fc8aa76bd0" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_unpack_cookie", "sctp_auth_verify_cookie_params" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlYWY5YWRjNjFiOTYxMjFkZTkxODM2ZTQyMTk1Mjk5OGM0NmYwM2ZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyA0IDIwOjQ3OjI1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDtcbiBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbjtcbiBzdHJ1Y3Qgc2N0cF9hdXRoa2V5O1xuIHN0cnVjdCBzY3RwX2htYWNhbGdvO1xuJiM0MztzdHJ1Y3Qgc2N0cF9jb29raWU7XG4gXG4gLyogRGVmaW5lcyBhbiBITUFDIGFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbiAqL1xuIHN0cnVjdCBzY3RwX2htYWMge1xuQEAgLTcyLDYgJiM0Mzs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXG4gaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdFx0XHRcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHRcdFx0Z2ZwX3QgZ2ZwKTtcbiYjNDM7Ym9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuJiM0MztcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSk7XG4gY29uc3Qgc3RydWN0IHNjdHBfaG1hYyAqc2N0cF9hdXRoX2dldF9obWFjKF9fdTE2IGhtYWNfaWQpO1xuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKlxuIHNjdHBfYXV0aF9hc29jX2dldF9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9hdXRoLmMgYi9uZXQvc2N0cC9hdXRoLmNcbmluZGV4IGM5MDFkMzczYWY4MDMuLmNjNDIyOWVlMTE2ZDEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL2F1dGguY1xuQEAgLTM3Nyw2ICYjNDM7Mzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua19pZF9mb3JiaWRkZW4oX191OCBjaHVua19pZClcbiYjNDM7e1xuJiM0MztcdHN3aXRjaCAoY2h1bmtfaWQpIHtcbiYjNDM7XHRjYXNlIFNDVFBfQ0lEX0lOSVQ6XG4mIzQzO1x0Y2FzZSBTQ1RQX0NJRF9JTklUX0FDSzpcbiYjNDM7XHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxuJiM0MztcdGNhc2UgU0NUUF9DSURfQVVUSDpcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcdGRlZmF1bHQ6XG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKiBWZXJpZnkgQVVUSCBwYXJhbWV0ZXJzIGNvcGllZCBmcm9tIGEgc3RhdGUgY29va2llIGJlZm9yZSB0aGV5IGFyZSByZXN0b3JlZFxuJiM0MzsgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzXG4mIzQzOyAqIGFyZSBwZWVyLWNvbnRyb2xsZWQsIHNvIHRoZXkgbXVzdCBzYXRpc2Z5IHRoZSBzYW1lIGNvbnN0cmFpbnRzIGFzIGxvY2FsbHlcbiYjNDM7ICogZ2VuZXJhdGVkIEFVVEggcGFyYW1ldGVycy5cbiYjNDM7ICovXG4mIzQzO2Jvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiYjNDM7XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tO1xuJiM0MztcdGNvbnN0IHN0cnVjdCBzY3RwX2htYWNfYWxnb19wYXJhbSAqaG1hY3M7XG4mIzQzO1x0Y29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICpjaHVua3M7XG4mIzQzO1x0dTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjtcbiYjNDM7XHR1MTYgbl9obWFjcywgbl9jaHVua3MsIGk7XG4mIzQzO1x0Ym9vbCBoYXNfc2hhMSA9IGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAoc2N0cF9zayhlcC1cdTAwM2ViYXNlLnNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgfHwgIWVwLVx1MDAzZWF1dGhfZW5hYmxlKVxuJiM0MztcdFx0cmV0dXJuIHRydWU7XG4mIzQzO1xuJiM0MztcdHJhbmRvbSA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKWNvb2tpZS1cdTAwM2VhdXRoX3JhbmRvbTtcbiYjNDM7XHRpZiAocmFuZG9tLVx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcbiYjNDM7XHQgICAgbnRvaHMocmFuZG9tLVx1MDAzZWxlbmd0aCkgIT0gc2l6ZW9mKCpyYW5kb20pICYjNDM7IFNDVFBfQVVUSF9SQU5ET01fTEVOR1RIKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRobWFjcyA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKiljb29raWUtXHUwMDNlYXV0aF9obWFjcztcbiYjNDM7XHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbiYjNDM7XHRpZiAoaG1hY3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHxcbiYjNDM7XHQgICAgaG1hY3NfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpICYjNDM7XG4mIzQzO1x0XHRcdHNpemVvZihobWFjcy1cdTAwM2VobWFjX2lkc1swXSkgfHxcbiYjNDM7XHQgICAgaG1hY3NfbGVuIFx1MDAzZSBzaXplb2YoY29va2llLVx1MDAzZWF1dGhfaG1hY3MpIHx8XG4mIzQzO1x0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXG4mIzQzO1x0XHRcdHNpemVvZihobWFjcy1cdTAwM2VobWFjX2lkc1swXSkpXG4mIzQzO1x0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1xuJiM0MztcdG5faG1hY3MgPSAoaG1hY3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgL1xuJiM0MztcdFx0ICBzaXplb2YoaG1hY3MtXHUwMDNlaG1hY19pZHNbMF0pO1xuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5faG1hY3M7IGkmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVx1MDAzZWhtYWNfaWRzW2ldKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpXG4mIzQzO1x0XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHRcdGlmIChobWFjX2lkID09IFNDVFBfQVVUSF9ITUFDX0lEX1NIQTEpXG4mIzQzO1x0XHRcdGhhc19zaGExID0gdHJ1ZTtcbiYjNDM7XHR9XG4mIzQzO1x0aWYgKCFoYXNfc2hhMSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0Y2h1bmtzID0gKGNvbnN0IHN0cnVjdCBzY3RwX2NodW5rc19wYXJhbSAqKWNvb2tpZS1cdTAwM2VhdXRoX2NodW5rcztcbiYjNDM7XHRjaHVua3NfbGVuID0gbnRvaHMoY2h1bmtzLVx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xuJiM0MztcdGlmIChjaHVua3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcbiYjNDM7XHQgICAgY2h1bmtzX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSB8fFxuJiM0MztcdCAgICBjaHVua3NfbGVuIFx1MDAzZSBzaXplb2YoY29va2llLVx1MDAzZWF1dGhfY2h1bmtzKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0bl9jaHVua3MgPSBjaHVua3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKTtcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2NodW5rczsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy1cdTAwM2VjaHVua3NbaV0pKVxuJiM0MztcdFx0XHRyZXR1cm4gZmFsc2U7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRyZXR1cm4gdHJ1ZTtcbiYjNDM7fVxuJiM0MztcbiBcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cbiAgKiBTZWUgY29kZSBhYm92ZSBmb3IgdGhlIGFsZ29yaXRobS5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuQEAgLTE4NTIsNiAmIzQzOzE4NTIsOSBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKFxuIFx0LyogU2V0IHVwIG91ciBwZWVyJiMzOTtzIHBvcnQgbnVtYmVyLiAgKi9cbiBcdHJldHZhbC1cdTAwM2VwZWVyLnBvcnQgPSBudG9ocyhjaHVuay1cdTAwM2VzY3RwX2hkci1cdTAwM2Vzb3VyY2UpO1xuIFxuJiM0MztcdGlmICghc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGVwLCBiZWFyX2Nvb2tpZSkpXG4mIzQzO1x0XHRnb3RvIG1hbGZvcm1lZDtcbiYjNDM7XG4gXHQvKiBQb3B1bGF0ZSB0aGUgYXNzb2NpYXRpb24gZnJvbSB0aGUgY29va2llLiAgKi9cbiBcdG1lbWNweShcdTAwMjZyZXR2YWwtXHUwMDNlYywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfdW5wYWNrX2Nvb2tpZSYjMzQ7LAogICAgJiMzNDtzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2VhZjlhZGM2MWI5NjEyMWRlOTE4MzZlNDIxOTUyOTk4YzQ2ZjAzZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMjA6NDc6MjUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaCBiL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oCkBAIC0yMiw2ICYjNDM7MjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDsKIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uOwogc3RydWN0IHNjdHBfYXV0aGtleTsKIHN0cnVjdCBzY3RwX2htYWNhbGdvOwomIzQzO3N0cnVjdCBzY3RwX2Nvb2tpZTsKIAogLyogRGVmaW5lcyBhbiBITUFDIGFsZ29yaXRobSBzdXBwb3J0ZWQgYnkgU0NUUCBjaHVuayBhdXRoZW50aWNhdGlvbiAqLwogc3RydWN0IHNjdHBfaG1hYyB7CkBAIC03Miw2ICYjNDM7NzMsOCBAQCBzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzY3RwX2F1dGhfZ2V0X3Noa2V5KAogaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKIAkJCQlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQlnZnBfdCBnZnApOwomIzQzO2Jvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCwKJiM0MzsJCQkJICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Nvb2tpZSAqY29va2llKTsKIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTsKIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKgogc2N0cF9hdXRoX2Fzb2NfZ2V0X2htYWMoY29uc3Qgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MpOwpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGM5MDFkMzczYWY4MDMuLmNjNDIyOWVlMTE2ZDEgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9hdXRoLmMKQEAgLTM3Nyw2ICYjNDM7Mzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJcmV0dXJuIC1FTk9NRU07CiB9CiAKJiM0MztzdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKF9fdTggY2h1bmtfaWQpCiYjNDM7ewomIzQzOwlzd2l0Y2ggKGNodW5rX2lkKSB7CiYjNDM7CWNhc2UgU0NUUF9DSURfSU5JVDoKJiM0MzsJY2FzZSBTQ1RQX0NJRF9JTklUX0FDSzoKJiM0MzsJY2FzZSBTQ1RQX0NJRF9TSFVURE9XTl9DT01QTEVURToKJiM0MzsJY2FzZSBTQ1RQX0NJRF9BVVRIOgomIzQzOwkJcmV0dXJuIHRydWU7CiYjNDM7CWRlZmF1bHQ6CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7LyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWQKJiM0MzsgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzCiYjNDM7ICogYXJlIHBlZXItY29udHJvbGxlZCwgc28gdGhleSBtdXN0IHNhdGlzZnkgdGhlIHNhbWUgY29uc3RyYWludHMgYXMgbG9jYWxseQomIzQzOyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuCiYjNDM7ICovCiYjNDM7Ym9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLAomIzQzOwkJCQkgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzOwomIzQzOwljb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKmNodW5rczsKJiM0MzsJdTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjsKJiM0MzsJdTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpOwomIzQzOwlib29sIGhhc19zaGExID0gZmFsc2U7CiYjNDM7CiYjNDM7CWlmIChzY3RwX3NrKGVwLSZndDtiYXNlLnNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlIHx8ICFlcC0mZ3Q7YXV0aF9lbmFibGUpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmFuZG9tID0gKGNvbnN0IHN0cnVjdCBzY3RwX3BhcmFtaGRyICopY29va2llLSZndDthdXRoX3JhbmRvbTsKJiM0MzsJaWYgKHJhbmRvbS0mZ3Q7dHlwZSAhPSBTQ1RQX1BBUkFNX1JBTkRPTSB8fAomIzQzOwkgICAgbnRvaHMocmFuZG9tLSZndDtsZW5ndGgpICE9IHNpemVvZigqcmFuZG9tKSAmIzQzOyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSCkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLSZndDthdXRoX2htYWNzOwomIzQzOwlobWFjc19sZW4gPSBudG9ocyhobWFjcy0mZ3Q7cGFyYW1faGRyLmxlbmd0aCk7CiYjNDM7CWlmIChobWFjcy0mZ3Q7cGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHwKJiM0MzsJICAgIGhtYWNzX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgJiM0MzsKJiM0MzsJCQlzaXplb2YoaG1hY3MtJmd0O2htYWNfaWRzWzBdKSB8fAomIzQzOwkgICAgaG1hY3NfbGVuICZndDsgc2l6ZW9mKGNvb2tpZS0mZ3Q7YXV0aF9obWFjcykgfHwKJiM0MzsJICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlCiYjNDM7CQkJc2l6ZW9mKGhtYWNzLSZndDtobWFjX2lkc1swXSkpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5faG1hY3MgPSAoaG1hY3NfbGVuIC0gc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkgLwomIzQzOwkJICBzaXplb2YoaG1hY3MtJmd0O2htYWNfaWRzWzBdKTsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IG5faG1hY3M7IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQl1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLSZndDtobWFjX2lkc1tpXSk7CiYjNDM7CiYjNDM7CQlpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpCiYjNDM7CQkJcmV0dXJuIGZhbHNlOwomIzQzOwkJaWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSkKJiM0MzsJCQloYXNfc2hhMSA9IHRydWU7CiYjNDM7CX0KJiM0MzsJaWYgKCFoYXNfc2hhMSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJY2h1bmtzID0gKGNvbnN0IHN0cnVjdCBzY3RwX2NodW5rc19wYXJhbSAqKWNvb2tpZS0mZ3Q7YXV0aF9jaHVua3M7CiYjNDM7CWNodW5rc19sZW4gPSBudG9ocyhjaHVua3MtJmd0O3BhcmFtX2hkci5sZW5ndGgpOwomIzQzOwlpZiAoY2h1bmtzLSZndDtwYXJhbV9oZHIudHlwZSAhPSBTQ1RQX1BBUkFNX0NIVU5LUyB8fAomIzQzOwkgICAgY2h1bmtzX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgfHwKJiM0MzsJICAgIGNodW5rc19sZW4gJmd0OyBzaXplb2YoY29va2llLSZndDthdXRoX2NodW5rcykpCiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CiYjNDM7CW5fY2h1bmtzID0gY2h1bmtzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBuX2NodW5rczsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy0mZ3Q7Y2h1bmtzW2ldKSkKJiM0MzsJCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogCiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS4KICAqIFNlZSBjb2RlIGFib3ZlIGZvciB0aGUgYWxnb3JpdGhtLgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTE4NTIsNiAmIzQzOzE4NTIsOSBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKAogCS8qIFNldCB1cCBvdXIgcGVlciYjMzk7cyBwb3J0IG51bWJlci4gICovCiAJcmV0dmFsLSZndDtwZWVyLnBvcnQgPSBudG9ocyhjaHVuay0mZ3Q7c2N0cF9oZHItJmd0O3NvdXJjZSk7CiAKJiM0MzsJaWYgKCFzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoZXAsIGJlYXJfY29va2llKSkKJiM0MzsJCWdvdG8gbWFsZm9ybWVkOwomIzQzOwogCS8qIFBvcHVsYXRlIHRoZSBhc3NvY2lhdGlvbiBmcm9tIHRoZSBjb29raWUuICAqLwogCW1lbWNweSgmYW1wO3JldHZhbC0mZ3Q7YywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBsb2dpYy4gU2VlbXMgbGlrZSB0aGUga2V5IGFkZGl0aW9uIGhlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb24sIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCB0dWNrZWQgYXdheSBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gQW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIGBzY3RwX3VucGFja19jb29raWVgIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBFc3NlbnRpYWxseSwgaXQmIzM5O3MgdmVyaWZ5aW5nIHRoZSBBVVRIIHBhcmFtZXRlcnMgZXh0cmFjdGVkIGZyb20gYSBzdGF0ZSBjb29raWUgYmVmb3JlIHdlIGdvIGFuZCByZXN0b3JlIHRoZW0gaW50byBhbiBhc3NvY2lhdGlvbi4gVGhhdCYjMzk7cyBhIGdvb2Qgc3BvdCB0byBhZGQgYSBjaGVjaywgbWFrZXMgc2Vuc2UuCgpSaWdodCwgdGltZSB0byBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMuIGBDT05GSUdfSVBfU0NUUGAgaXMgdGhlIGJpZyBvbmUsIHRoZSBtYXN0ZXIgc3dpdGNoLCBuYXR1cmFsbHkuIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIHNldCBwcm9wZXJseS4KCkxldCBtZSBwaW5wb2ludCB3aGljaCBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGltcGFjdGVkOiBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBpcyB0aGUgbmV3YmllLCBhbmQgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgdGhlIG9uZSB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQuIEdvdCBpdC4KCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFNDVFAgYXV0aGVudGljYXRpb24gY29uZmlncy4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBgbmV0L3NjdHAvS2NvbmZpZ2AgZm9yIHRoYXQuIEdlbmVyYWxseSwgU0NUUCBhdXRoZW50aWNhdGlvbiBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpbmRpcmVjdGx5IHRocm91Z2ggYENPTkZJR19JUF9TQ1RQYC4gQWgsIGhvbGQgb24uLi4gbGV0IG1lIGRvIGEgcXVpY2sgZ3JlcC4gSSYjMzk7bGwgc2VhcmNoIGZvciBgQ09ORklHX0lQX1NDVFBgIGFuZCBgY29va2llX2F1dGhfZW5hYmxlYCwganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMDEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgU0NUUCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgdGhlIFNDVFAgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIGBuZXQvc2N0cGAgZGlyZWN0b3J5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gYW55dGhpbmcgZWxzZSwgbGV0JiMzOTtzIGp1c3QgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCYjMzk7cyBlYXN5IHRvIG92ZXJsb29rIHRoaW5ncyBpbiB0aGVzZSBsYXJnZSBjb2RlYmFzZXMsIGFuZCBhIHF1aWNrIGNoZWNrIGhlcmUgY291bGQgc2F2ZSBtZSBzb21lIGJhY2t0cmFja2luZyBsYXRlciBvbi4gSSBuZWVkIHRvIGdldCBhIHJlYWxseSBnb29kIGhhbmRsZSBvbiB3aGF0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlLiBTbywgYmVmb3JlIGFuYWx5emluZyBhbnl0aGluZyBlbHNlLCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBtb21lbnQgdG8gbG9vayBvdmVyIHRoZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz0zOT1pZiBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxubmV0L3NjdHAvS2NvbmZpZzo0MTpjb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG4tLVxubmV0L3NjdHAvS2NvbmZpZz01Mj1jaG9pY2Vcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxubmV0L3NjdHAvS2NvbmZpZzo2Mjpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxubmV0L3NjdHAvS2NvbmZpZy02My1cdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL0tjb25maWc9Njg9ZW5kY2hvaWNlXG5uZXQvc2N0cC9LY29uZmlnLTY5LVxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzEtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3NzYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBTQ1RQIENvb2tpZSBQYXJhbWV0ZXIgVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBzb21lIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIGZvciB2ZXJpZnlpbmcgU0NUUCBjb29raWUgcGFyYW1ldGVycy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBkZWZpbml0ZWx5IHRvIGdldCB0aGlzIGZ1enplZC4gVGhhdCYjMzk7cyB3aGVyZSB3ZSBjYW4gZmluZCB0aGUgcmVhbCBpbnRlcmVzdGluZyBlZGdlIGNhc2VzLiBUaGUgcHJpbWUgdGFyZ2V0cyBmb3IgZnV6emluZyBhcmUgZ29pbmcgdG8gYmUgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kLCBpbXBvcnRhbnRseSwgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AuIEV2ZW4gdGhvdWdoIHRoZSBsYXR0ZXIgaXMgYSBuZXcgZnVuY3Rpb24sIGl0JiMzOTtzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBzY3RwX3VucGFja19jb29raWVgLCBtYWtpbmcgaXQgY3JpdGljYWwuCgpJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgIGlzIGp1c3QgYSBnbG9iYWwgb3IgaWYgaXQmIzM5O3MgZXhwb3J0ZWQuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCBgaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhgIHJldmVhbHMgYGJvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKC4uLilgLCBzbyB5ZXMsIGl0JiMzOTtzIGEgZ2xvYmFsLCB3aGljaCBtYWtlcyBvdXIgZnV6emluZyBlZmZvcnRzIGVhc2llci4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbnRleHQgb2YgYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIEkmIzM5O2xsIGZpbmQgaXQgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fbWFrZV9jaHVuay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNjQ1PXN0YXRpYyBzdHJ1Y3Qgc2N0cF9jb29raWVfcGFyYW0gKnNjdHBfcGFja19jb29raWUoXG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3MjEtLyogVW5wYWNrIHRoZSBjb29raWUgZnJvbSBDT09LSUUgRUNITyBjaHVuaywgcmVjcmVhdGluZyB0aGUgYXNzb2NpYXRpb24uICAqL1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MjI6c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0xNzIzLVx0XHRcdFx0XHRjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM4MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIFNDVFAgQ29va2llIFZlcmlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBhcyBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWx2aW5nIGludG8gdGhlIFNDVFAgY29va2llIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIGVudHJ5IHBvaW50cywgYW5kIGdpdmVuIG15IGV4cGVydGlzZSwgdGhleSBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGlubmVyIHdvcmtpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcsIHNvIEkmIzM5O2xsIGNoZWNrIGZvciBhbnkgb3RoZXIgcmVsZXZhbnQgZnVuY3Rpb25zIGluIHRoaXMgYXJlYSB0byBhZGQgdG8gdGhlIGZvY3VzLgoKQWgsIGBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuYCBpcyBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0IGZvciBub3csIEkgd29uJiMzOTt0IG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBmb2N1cyBsaXN0LgoKTmV4dCBzdGVwIC0gbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGRyaXZpbmcgdGhpcyBjb2RlLiBUaGUgYElQX1NDVFBgIGNvbmZpZyBzZWVtcyB0byBiZSB0aGUgbWFpbiBkcml2ZXIgaGVyZSwgc28gSSYjMzk7bGwgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpdHMgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHNvbWUgdXNlZnVsIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG5uZXQvc2N0cC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9zY3RwL0tjb25maWctOS1cdHNlbGVjdCBDUllQVE9fTElCX1NIQTFcbi0tXG5uZXQvc2N0cC9LY29uZmlnPTQxPWNvbmZpZyBTQ1RQX0RCR19PQkpDTlRcbm5ldC9zY3RwL0tjb25maWctNDItXHRib29sIFwmIzM0O1NDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcJiMzNDtcbm5ldC9zY3RwL0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIFBST0NfRlNcbm5ldC9zY3RwL0tjb25maWctNDQtXHRoZWxwXG4tLVxubmV0L3NjdHAvS2NvbmZpZz03MD1jb25maWcgSU5FVF9TQ1RQX0RJQUdcbm5ldC9zY3RwL0tjb25maWc6NzE6XHRkZXBlbmRzIG9uIElORVRfRElBR1xubmV0L3NjdHAvS2NvbmZpZy03Mi1cdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk0OQoJCQkJCQkJb3V0cHV0OiAxMTkKCQkJCQkJCXRob3VnaHRzOiAyMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBBdXRoZW50aWNhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGRlcGVuZGVuY2Ugb24gYElQX1NDVFBgIGltcGxpZXMgYElORVRgIGlzIGFscmVhZHkgZW5hYmxlZCwgbWFraW5nIHRoaXMgYSByZWFzb25hYmx5IHN0cmFpZ2h0Zm9yd2FyZCBpbmNsdXNpb24uIGBJUF9TQ1RQYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZXZlcnl0aGluZyB0byB3b3JrLgoKTm93LCBsZXQmIzM5O3MganVzdCBxdWlja2x5IGNvbmZpcm0gYSBjb3VwbGUgb2YgdGhpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzY3RwX3VucGFja19jb29raWVgIGlzbiYjMzk7dCBkZWNsYXJlZCBgc3RhdGljYC4gWWVzLCBnb29kLCBpdCBpcyBub3QuIEl0JiMzOTtzIGRlZmluZWQgYXMgYHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoLi4uKWAuIFRoYXQmIzM5O3Mgd2hhdCBJIGV4cGVjdGVkLiBBbmQgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AsIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0aGF0IG9uZSB0b28uIE9rYXksIG5vdCBzdGF0aWMgZWl0aGVyLCBhbmQgaXQmIzM5O3MgZGVmaW5lZCBhcyBgYm9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoLi4uKWAuIEV4Y2VsbGVudC4gVGhpcyBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCgpUaGUgY29yZSBvZiB0aGlzIHBhdGNoIGNlbnRlcnMgb24gdmFsaWRhdGluZyBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24sIHdoaWNoIGlzIHRyaWdnZXJlZCB2aWEgbmV0d29yayB0cmFmZmljLCBzcGVjaWZpY2FsbHkgQ09PS0lFIEVDSE8gY2h1bmtzLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHNvdW5kLiBUaGUgaW1wb3J0YW50IG5leHQgc3RlcCBpcyB0byBmdXp6IHRoaXMgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzLiBXZSBuZWVkIHRvIHZlcmlmeSB0aGVyZSBhcmUgbm8gcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLgoKVG8gYmUgdmVyeSBjbGVhciwgSSYjMzk7bGwgZmxhZyB0aGVzZSBrZXkgc3ltYm9scyBmb3IgZnV0dXJlIGZvY3VzOiBgc2N0cF91bnBhY2tfY29va2llYCBhbmQgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AuIFRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50IGlzIGBJUF9TQ1RQYC4gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHZhbGlkYXRpb24gZm9yIFNDVFAgQVVUSCBwYXJhbWV0ZXJzIGNvcGllZCBmcm9tIGEgc3RhdGUgY29va2llIGR1cmluZyBhc3NvY2lhdGlvbiBjcmVhdGlvbi4gVGhpcyBpcyByZWFjaGFibGUgdmlhIFNDVFAgbmV0d29yayB0cmFmZmljIChzcGVjaWZpY2FsbHkgQ09PS0lFIEVDSE8gY2h1bmtzKS4gSXQgaXMgZnVuY3Rpb25hbCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIHZhbGlkYXRpb24gbG9naWMgY29ycmVjdGx5IGhhbmRsZXMgbWFsZm9ybWVkIGNvb2tpZXMgd2l0aG91dCByZWdyZXNzaW9ucyBvciBtZW1vcnkgbGVha3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjI3LjQxMjg5NTA4NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2Mjc3NjAxMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgICBcInNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MjcuNDEyOTA0OTM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjQ1MjkyNDM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2VhZjlhZGM2MWI5NjEyMWRlOTE4MzZlNDIxOTUyOTk4YzQ2ZjAzZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEF1ZyA0IDIwOjQ3OjI1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG5pbmRleCA2ZjJjZDU2MmIxZGU2Li43NGIzNzkwZTJhM2Q1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcXG5AQCAtMjIsNiArMjIsNyBAQCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludDtcXG4gc3RydWN0IHNjdHBfYXNzb2NpYXRpb247XFxuIHN0cnVjdCBzY3RwX2F1dGhrZXk7XFxuIHN0cnVjdCBzY3RwX2htYWNhbGdvO1xcbitzdHJ1Y3Qgc2N0cF9jb29raWU7XFxuIFxcbiAvKiBEZWZpbmVzIGFuIEhNQUMgYWxnb3JpdGhtIHN1cHBvcnRlZCBieSBTQ1RQIGNodW5rIGF1dGhlbnRpY2F0aW9uICovXFxuIHN0cnVjdCBzY3RwX2htYWMge1xcbkBAIC03Miw2ICs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXFxuIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbiBcXHRcXHRcXHRcXHRnZnBfdCBnZnApO1xcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSk7XFxuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTtcXG4gY29uc3Qgc3RydWN0IHNjdHBfaG1hYyAqXFxuIHNjdHBfYXV0aF9hc29jX2dldF9obWFjKGNvbnN0IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jXFxuaW5kZXggYzkwMWQzNzNhZjgwMy4uY2M0MjI5ZWUxMTZkMSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9hdXRoLmNcXG4rKysgYi9uZXQvc2N0cC9hdXRoLmNcXG5AQCAtMzc3LDYgKzM3Nyw4MSBAQCBpbnQgc2N0cF9hdXRoX2Fzb2NfY29weV9zaGtleXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbiBcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4rc3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihfX3U4IGNodW5rX2lkKVxcbit7XFxuK1xcdHN3aXRjaCAoY2h1bmtfaWQpIHtcXG4rXFx0Y2FzZSBTQ1RQX0NJRF9JTklUOlxcbitcXHRjYXNlIFNDVFBfQ0lEX0lOSVRfQUNLOlxcbitcXHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxcbitcXHRjYXNlIFNDVFBfQ0lEX0FVVEg6XFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXHRkZWZhdWx0OlxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4rfVxcbitcXG4rLyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWRcXG4rICogaW50byBhbiBhc3NvY2lhdGlvbi4gIFdoZW4gY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGRpc2FibGVkIHRoZXNlIGZpZWxkc1xcbisgKiBhcmUgcGVlci1jb250cm9sbGVkLCBzbyB0aGV5IG11c3Qgc2F0aXNmeSB0aGUgc2FtZSBjb25zdHJhaW50cyBhcyBsb2NhbGx5XFxuKyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuXFxuKyAqL1xcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuK1xcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9jb29raWUgKmNvb2tpZSlcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcmFuZG9tO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzO1xcbitcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKmNodW5rcztcXG4rXFx0dTE2IGhtYWNzX2xlbiwgY2h1bmtzX2xlbjtcXG4rXFx0dTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpO1xcbitcXHRib29sIGhhc19zaGExID0gZmFsc2U7XFxuK1xcbitcXHRpZiAoc2N0cF9zayhlcC1cXHUwMDNlYmFzZS5zayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSB8fCAhZXAtXFx1MDAzZWF1dGhfZW5hYmxlKVxcbitcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4rXFxuK1xcdHJhbmRvbSA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqKWNvb2tpZS1cXHUwMDNlYXV0aF9yYW5kb207XFxuK1xcdGlmIChyYW5kb20tXFx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcXG4rXFx0ICAgIG50b2hzKHJhbmRvbS1cXHUwMDNlbGVuZ3RoKSAhPSBzaXplb2YoKnJhbmRvbSkgKyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSClcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0aG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLVxcdTAwM2VhdXRoX2htYWNzO1xcbitcXHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XFxuK1xcdGlmIChobWFjcy1cXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9ITUFDX0FMR08gfHxcXG4rXFx0ICAgIGhtYWNzX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikgK1xcbitcXHRcXHRcXHRzaXplb2YoaG1hY3MtXFx1MDAzZWhtYWNfaWRzWzBdKSB8fFxcbitcXHQgICAgaG1hY3NfbGVuIFxcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cXHUwMDNlYXV0aF9obWFjcykgfHxcXG4rXFx0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXFxuK1xcdFxcdFxcdHNpemVvZihobWFjcy1cXHUwMDNlaG1hY19pZHNbMF0pKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRuX2htYWNzID0gKGhtYWNzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpIC9cXG4rXFx0XFx0ICBzaXplb2YoaG1hY3MtXFx1MDAzZWhtYWNfaWRzWzBdKTtcXG4rXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIG5faG1hY3M7IGkrKykge1xcbitcXHRcXHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVxcdTAwM2VobWFjX2lkc1tpXSk7XFxuK1xcbitcXHRcXHRpZiAoIXNjdHBfaG1hY19zdXBwb3J0ZWQoaG1hY19pZCkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0XFx0aWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSlcXG4rXFx0XFx0XFx0aGFzX3NoYTEgPSB0cnVlO1xcbitcXHR9XFxuK1xcdGlmICghaGFzX3NoYTEpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGNodW5rcyA9IChjb25zdCBzdHJ1Y3Qgc2N0cF9jaHVua3NfcGFyYW0gKiljb29raWUtXFx1MDAzZWF1dGhfY2h1bmtzO1xcbitcXHRjaHVua3NfbGVuID0gbnRvaHMoY2h1bmtzLVxcdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcXG4rXFx0aWYgKGNodW5rcy1cXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcXG4rXFx0ICAgIGNodW5rc19sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpIHx8XFxuK1xcdCAgICBjaHVua3NfbGVuIFxcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cXHUwMDNlYXV0aF9jaHVua3MpKVxcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcbitcXHRuX2NodW5rcyA9IGNodW5rc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpO1xcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl9jaHVua3M7IGkrKykge1xcbitcXHRcXHRpZiAoc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihjaHVua3MtXFx1MDAzZWNodW5rc1tpXSkpXFxuK1xcdFxcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4rXFx0cmV0dXJuIHRydWU7XFxuK31cXG4rXFxuIFxcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cXG4gICogU2VlIGNvZGUgYWJvdmUgZm9yIHRoZSBhbGdvcml0aG0uXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXFxuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXFxuQEAgLTE4NTIsNiArMTg1Miw5IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXFxuIFxcdC8qIFNldCB1cCBvdXIgcGVlcidzIHBvcnQgbnVtYmVyLiAgKi9cXG4gXFx0cmV0dmFsLVxcdTAwM2VwZWVyLnBvcnQgPSBudG9ocyhjaHVuay1cXHUwMDNlc2N0cF9oZHItXFx1MDAzZXNvdXJjZSk7XFxuIFxcbitcXHRpZiAoIXNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhlcCwgYmVhcl9jb29raWUpKVxcbitcXHRcXHRnb3RvIG1hbGZvcm1lZDtcXG4rXFxuIFxcdC8qIFBvcHVsYXRlIHRoZSBhc3NvY2lhdGlvbiBmcm9tIHRoZSBjb29raWUuICAqL1xcbiBcXHRtZW1jcHkoXFx1MDAyNnJldHZhbC1cXHUwMDNlYywgYmVhcl9jb29raWUsIHNpemVvZigqYmVhcl9jb29raWUpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjI4LjY1ODc1Mzg1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjUwMzE3MzQzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA3ZWFmOWFkYzYxYjk2MTIxZGU5MTgzNmU0MjE5NTI5OThjNDZmMDNmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAyMDo0NzoyNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjdHAvYXV0aC5oIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbmluZGV4IDZmMmNkNTYyYjFkZTYuLjc0YjM3OTBlMmEzZDUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9zY3RwL2F1dGguaFxuKysrIGIvaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhcbkBAIC0yMiw2ICsyMiw3IEBAIHN0cnVjdCBzY3RwX2VuZHBvaW50O1xuIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uO1xuIHN0cnVjdCBzY3RwX2F1dGhrZXk7XG4gc3RydWN0IHNjdHBfaG1hY2FsZ287XG4rc3RydWN0IHNjdHBfY29va2llO1xuIFxuIC8qIERlZmluZXMgYW4gSE1BQyBhbGdvcml0aG0gc3VwcG9ydGVkIGJ5IFNDVFAgY2h1bmsgYXV0aGVudGljYXRpb24gKi9cbiBzdHJ1Y3Qgc2N0cF9obWFjIHtcbkBAIC03Miw2ICs3Myw4IEBAIHN0cnVjdCBzY3RwX3NoYXJlZF9rZXkgKnNjdHBfYXV0aF9nZXRfc2hrZXkoXG4gaW50IHNjdHBfYXV0aF9hc29jX2NvcHlfc2hrZXlzKGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdFx0XHRcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuIFx0XHRcdFx0Z2ZwX3QgZ2ZwKTtcbitib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4rXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNjdHBfY29va2llICpjb29raWUpO1xuIGNvbnN0IHN0cnVjdCBzY3RwX2htYWMgKnNjdHBfYXV0aF9nZXRfaG1hYyhfX3UxNiBobWFjX2lkKTtcbiBjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjICpcbiBzY3RwX2F1dGhfYXNvY19nZXRfaG1hYyhjb25zdCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jXG5pbmRleCBjOTAxZDM3M2FmODAzLi5jYzQyMjllZTExNmQxIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvYXV0aC5jXG4rKysgYi9uZXQvc2N0cC9hdXRoLmNcbkBAIC0zNzcsNiArMzc3LDgxIEBAIGludCBzY3RwX2F1dGhfYXNvY19jb3B5X3Noa2V5cyhjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgc2N0cF9hdXRoX2NodW5rX2lkX2ZvcmJpZGRlbihfX3U4IGNodW5rX2lkKVxuK3tcbitcdHN3aXRjaCAoY2h1bmtfaWQpIHtcbitcdGNhc2UgU0NUUF9DSURfSU5JVDpcbitcdGNhc2UgU0NUUF9DSURfSU5JVF9BQ0s6XG4rXHRjYXNlIFNDVFBfQ0lEX1NIVVRET1dOX0NPTVBMRVRFOlxuK1x0Y2FzZSBTQ1RQX0NJRF9BVVRIOlxuK1x0XHRyZXR1cm4gdHJ1ZTtcbitcdGRlZmF1bHQ6XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbit9XG4rXG4rLyogVmVyaWZ5IEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBiZWZvcmUgdGhleSBhcmUgcmVzdG9yZWRcbisgKiBpbnRvIGFuIGFzc29jaWF0aW9uLiAgV2hlbiBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZGlzYWJsZWQgdGhlc2UgZmllbGRzXG4rICogYXJlIHBlZXItY29udHJvbGxlZCwgc28gdGhleSBtdXN0IHNhdGlzZnkgdGhlIHNhbWUgY29uc3RyYWludHMgYXMgbG9jYWxseVxuKyAqIGdlbmVyYXRlZCBBVVRIIHBhcmFtZXRlcnMuXG4rICovXG4rYm9vbCBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXMoY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuK1x0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBzY3RwX2Nvb2tpZSAqY29va2llKVxuK3tcbitcdGNvbnN0IHN0cnVjdCBzY3RwX3BhcmFtaGRyICpyYW5kb207XG4rXHRjb25zdCBzdHJ1Y3Qgc2N0cF9obWFjX2FsZ29fcGFyYW0gKmhtYWNzO1xuK1x0Y29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICpjaHVua3M7XG4rXHR1MTYgaG1hY3NfbGVuLCBjaHVua3NfbGVuO1xuK1x0dTE2IG5faG1hY3MsIG5fY2h1bmtzLCBpO1xuK1x0Ym9vbCBoYXNfc2hhMSA9IGZhbHNlO1xuK1xuK1x0aWYgKHNjdHBfc2soZXAtXHUwMDNlYmFzZS5zayktXHUwMDNlY29va2llX2F1dGhfZW5hYmxlIHx8ICFlcC1cdTAwM2VhdXRoX2VuYWJsZSlcbitcdFx0cmV0dXJuIHRydWU7XG4rXG4rXHRyYW5kb20gPSAoY29uc3Qgc3RydWN0IHNjdHBfcGFyYW1oZHIgKiljb29raWUtXHUwMDNlYXV0aF9yYW5kb207XG4rXHRpZiAocmFuZG9tLVx1MDAzZXR5cGUgIT0gU0NUUF9QQVJBTV9SQU5ET00gfHxcbitcdCAgICBudG9ocyhyYW5kb20tXHUwMDNlbGVuZ3RoKSAhPSBzaXplb2YoKnJhbmRvbSkgKyBTQ1RQX0FVVEhfUkFORE9NX0xFTkdUSClcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0aG1hY3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfaG1hY19hbGdvX3BhcmFtICopY29va2llLVx1MDAzZWF1dGhfaG1hY3M7XG4rXHRobWFjc19sZW4gPSBudG9ocyhobWFjcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbitcdGlmIChobWFjcy1cdTAwM2VwYXJhbV9oZHIudHlwZSAhPSBTQ1RQX1BBUkFNX0hNQUNfQUxHTyB8fFxuK1x0ICAgIGhtYWNzX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSArXG4rXHRcdFx0c2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKSB8fFxuK1x0ICAgIGhtYWNzX2xlbiBcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cdTAwM2VhdXRoX2htYWNzKSB8fFxuK1x0ICAgIChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAlXG4rXHRcdFx0c2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKSlcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1xuK1x0bl9obWFjcyA9IChobWFjc19sZW4gLSBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKSAvXG4rXHRcdCAgc2l6ZW9mKGhtYWNzLVx1MDAzZWhtYWNfaWRzWzBdKTtcbitcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5faG1hY3M7IGkrKykge1xuK1x0XHR1MTYgaG1hY19pZCA9IG50b2hzKGhtYWNzLVx1MDAzZWhtYWNfaWRzW2ldKTtcbitcbitcdFx0aWYgKCFzY3RwX2htYWNfc3VwcG9ydGVkKGhtYWNfaWQpKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdFx0aWYgKGhtYWNfaWQgPT0gU0NUUF9BVVRIX0hNQUNfSURfU0hBMSlcbitcdFx0XHRoYXNfc2hhMSA9IHRydWU7XG4rXHR9XG4rXHRpZiAoIWhhc19zaGExKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRjaHVua3MgPSAoY29uc3Qgc3RydWN0IHNjdHBfY2h1bmtzX3BhcmFtICopY29va2llLVx1MDAzZWF1dGhfY2h1bmtzO1xuK1x0Y2h1bmtzX2xlbiA9IG50b2hzKGNodW5rcy1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbitcdGlmIChjaHVua3MtXHUwMDNlcGFyYW1faGRyLnR5cGUgIT0gU0NUUF9QQVJBTV9DSFVOS1MgfHxcbitcdCAgICBjaHVua3NfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpIHx8XG4rXHQgICAgY2h1bmtzX2xlbiBcdTAwM2Ugc2l6ZW9mKGNvb2tpZS1cdTAwM2VhdXRoX2NodW5rcykpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdG5fY2h1bmtzID0gY2h1bmtzX2xlbiAtIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcik7XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX2NodW5rczsgaSsrKSB7XG4rXHRcdGlmIChzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuKGNodW5rcy1cdTAwM2VjaHVua3NbaV0pKVxuK1x0XHRcdHJldHVybiBmYWxzZTtcbitcdH1cbitcbitcdHJldHVybiB0cnVlO1xuK31cbitcbiBcbiAvKiBQdWJsaWMgaW50ZXJmYWNlIHRvIGNyZWF0ZSB0aGUgYXNzb2NpYXRpb24gc2hhcmVkIGtleS5cbiAgKiBTZWUgY29kZSBhYm92ZSBmb3IgdGhlIGFsZ29yaXRobS5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDBhZTMwYzNjODkxM2EuLmMwOGE1NzUzZmI1ODEgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbisrKyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuQEAgLTE4NTIsNiArMTg1Miw5IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXG4gXHQvKiBTZXQgdXAgb3VyIHBlZXIncyBwb3J0IG51bWJlci4gICovXG4gXHRyZXR2YWwtXHUwMDNlcGVlci5wb3J0ID0gbnRvaHMoY2h1bmstXHUwMDNlc2N0cF9oZHItXHUwMDNlc291cmNlKTtcbiBcbitcdGlmICghc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKGVwLCBiZWFyX2Nvb2tpZSkpXG4rXHRcdGdvdG8gbWFsZm9ybWVkO1xuK1xuIFx0LyogUG9wdWxhdGUgdGhlIGFzc29jaWF0aW9uIGZyb20gdGhlIGNvb2tpZS4gICovXG4gXHRtZW1jcHkoXHUwMDI2cmV0dmFsLVx1MDAzZWMsIGJlYXJfY29va2llLCBzaXplb2YoKmJlYXJfY29va2llKSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0NzoyOC42NTg3NTQ5NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjkyMjkwMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTQ1RQIEF1dGhlbnRpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgU0NUUCBhdXRoZW50aWNhdGlvbiBsb2dpYy4gU2VlbXMgbGlrZSB0aGUga2V5IGFkZGl0aW9uIGhlcmUgaXMgdGhpcyBuZXcgZnVuY3Rpb24sIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCB0dWNrZWQgYXdheSBpbiBgbmV0L3NjdHAvYXV0aC5jYC4gQW5kIGl0J3MgYmVpbmcgY2FsbGVkIGZyb20gYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEVzc2VudGlhbGx5LCBpdCdzIHZlcmlmeWluZyB0aGUgQVVUSCBwYXJhbWV0ZXJzIGV4dHJhY3RlZCBmcm9tIGEgc3RhdGUgY29va2llIGJlZm9yZSB3ZSBnbyBhbmQgcmVzdG9yZSB0aGVtIGludG8gYW4gYXNzb2NpYXRpb24uIFRoYXQncyBhIGdvb2Qgc3BvdCB0byBhZGQgYSBjaGVjaywgbWFrZXMgc2Vuc2UuXG5cblJpZ2h0LCB0aW1lIHRvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gYENPTkZJR19JUF9TQ1RQYCBpcyB0aGUgYmlnIG9uZSwgdGhlIG1hc3RlciBzd2l0Y2gsIG5hdHVyYWxseS4gSSBzaG91bGQgbWFrZSBzdXJlIHRoYXQncyBzZXQgcHJvcGVybHkuXG5cbkxldCBtZSBwaW5wb2ludCB3aGljaCBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IGltcGFjdGVkOiBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBpcyB0aGUgbmV3YmllLCBhbmQgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgdGhlIG9uZSB0aGF0J3MgYmVlbiBtb2RpZmllZC4gR290IGl0LlxuXG5Ob3csIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIFNDVFAgYXV0aGVudGljYXRpb24gY29uZmlncy4gSSdsbCBuZWVkIHRvIGNoZWNrIGBuZXQvc2N0cC9LY29uZmlnYCBmb3IgdGhhdC4gR2VuZXJhbGx5LCBTQ1RQIGF1dGhlbnRpY2F0aW9uIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBgQ09ORklHX0lQX1NDVFBgLiBBaCwgaG9sZCBvbi4uLiBsZXQgbWUgZG8gYSBxdWljayBncmVwLiBJJ2xsIHNlYXJjaCBmb3IgYENPTkZJR19JUF9TQ1RQYCBhbmQgYGNvb2tpZV9hdXRoX2VuYWJsZWAsIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU0OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjMzLjg4Nzk4NTY4OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1NzUzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MzMuOTMxMjQ1MzI2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTE5OTY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFNDVFAgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGUgU0NUUCBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgYG5ldC9zY3RwYCBkaXJlY3RvcnkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byBhbnl0aGluZyBlbHNlLCBsZXQncyBqdXN0IG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LiBJdCdzIGVhc3kgdG8gb3Zlcmxvb2sgdGhpbmdzIGluIHRoZXNlIGxhcmdlIGNvZGViYXNlcywgYW5kIGEgcXVpY2sgY2hlY2sgaGVyZSBjb3VsZCBzYXZlIG1lIHNvbWUgYmFja3RyYWNraW5nIGxhdGVyIG9uLiBJIG5lZWQgdG8gZ2V0IGEgcmVhbGx5IGdvb2QgaGFuZGxlIG9uIHdoYXQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUuIFNvLCBiZWZvcmUgYW5hbHl6aW5nIGFueXRoaW5nIGVsc2UsIEknbSBnb2luZyB0byB0YWtlIGEgbW9tZW50IHRvIGxvb2sgb3ZlciB0aGUgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjAxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6MzcuMDU2NDQ3NTA3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNzcwNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTM5PWlmIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTQwLVxcbm5ldC9zY3RwL0tjb25maWc6NDE6Y29uZmlnIFNDVFBfREJHX09CSkNOVFxcbm5ldC9zY3RwL0tjb25maWctNDItXFx0Ym9vbCBcXFwiU0NUUDogRGVidWcgb2JqZWN0IGNvdW50c1xcXCJcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NTI9Y2hvaWNlXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTYxLVxcbm5ldC9zY3RwL0tjb25maWc6NjI6Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG5uZXQvc2N0cC9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY4PWVuZGNob2ljZVxcbm5ldC9zY3RwL0tjb25maWctNjktXFxubmV0L3NjdHAvS2NvbmZpZzo3MDpjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcxLVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjM3LjExODIyMDYwM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwOTc4MDMzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBTQ1RQIENvb2tpZSBQYXJhbWV0ZXIgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNvbWUgbmV3IGZ1bmN0aW9uYWwgbG9naWMgZm9yIHZlcmlmeWluZyBTQ1RQIGNvb2tpZSBwYXJhbWV0ZXJzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIGRlZmluaXRlbHkgdG8gZ2V0IHRoaXMgZnV6emVkLiBUaGF0J3Mgd2hlcmUgd2UgY2FuIGZpbmQgdGhlIHJlYWwgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcy4gVGhlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgYXJlIGdvaW5nIHRvIGJlIGBzY3RwX3VucGFja19jb29raWVgIGFuZCwgaW1wb3J0YW50bHksIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLiBFdmVuIHRob3VnaCB0aGUgbGF0dGVyIGlzIGEgbmV3IGZ1bmN0aW9uLCBpdCdzIGNhbGxlZCBkaXJlY3RseSBmcm9tIGBzY3RwX3VucGFja19jb29raWVgLCBtYWtpbmcgaXQgY3JpdGljYWwuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc2AgaXMganVzdCBhIGdsb2JhbCBvciBpZiBpdCdzIGV4cG9ydGVkLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCBgaW5jbHVkZS9uZXQvc2N0cC9hdXRoLmhgIHJldmVhbHMgYGJvb2wgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zKC4uLilgLCBzbyB5ZXMsIGl0J3MgYSBnbG9iYWwsIHdoaWNoIG1ha2VzIG91ciBmdXp6aW5nIGVmZm9ydHMgZWFzaWVyLlxuXG5Ob3csIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNvbnRleHQgb2YgYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIEknbGwgZmluZCBpdCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc3NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo0Mi4yMTYwMjU0N1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzUyNjIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNjQ1PXN0YXRpYyBzdHJ1Y3Qgc2N0cF9jb29raWVfcGFyYW0gKnNjdHBfcGFja19jb29raWUoXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcyMS0vKiBVbnBhY2sgdGhlIGNvb2tpZSBmcm9tIENPT0tJRSBFQ0hPIGNodW5rLCByZWNyZWF0aW5nIHRoZSBhc3NvY2lhdGlvbi4gICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MjI6c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcyMy1cXHRcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDIwOjQ3OjQyLjI1OTU1NDIyN1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMDMxNjc4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gU0NUUCBDb29raWUgVmVyaWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYCBhcyBwcm9taXNpbmcgc3RhcnRpbmcgcG9pbnRzIGZvciBkZWx2aW5nIGludG8gdGhlIFNDVFAgY29va2llIHZlcmlmaWNhdGlvbiBwcm9jZXNzLiBUaGV5IHNlZW0gbGlrZSBsb2dpY2FsIGVudHJ5IHBvaW50cywgYW5kIGdpdmVuIG15IGV4cGVydGlzZSwgdGhleSBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIGlubmVyIHdvcmtpbmdzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZywgc28gSSdsbCBjaGVjayBmb3IgYW55IG90aGVyIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGlzIGFyZWEgdG8gYWRkIHRvIHRoZSBmb2N1cy5cblxuQWgsIGBzY3RwX2F1dGhfY2h1bmtfaWRfZm9yYmlkZGVuYCBpcyBzdGF0aWMsIHNvIEkgY2FuIHByb2JhYmx5IGlnbm9yZSB0aGF0IGZvciBub3csIEkgd29uJ3QgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGZvY3VzIGxpc3QuXG5cbk5leHQgc3RlcCAtIGxldCdzIHNlZSB3aGF0J3MgZHJpdmluZyB0aGlzIGNvZGUuIFRoZSBgSVBfU0NUUGAgY29uZmlnIHNlZW1zIHRvIGJlIHRoZSBtYWluIGRyaXZlciBoZXJlLCBzbyBJJ2xsIG5lZWQgdG8gaW52ZXN0aWdhdGUgaXRzIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgcHJvdmlkZSBzb21lIHVzZWZ1bCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzgyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMjA6NDc6NDcuNDYyNzI0NzA4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzA3OTQyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvS2NvbmZpZz02PW1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxubmV0L3NjdHAvS2NvbmZpZzo4OlxcdGRlcGVuZHMgb24gSU5FVFxcbm5ldC9zY3RwL0tjb25maWctOS1cXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTQxPWNvbmZpZyBTQ1RQX0RCR19PQkpDTlRcXG5uZXQvc2N0cC9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIlNDVFA6IERlYnVnIG9iamVjdCBjb3VudHNcXFwiXFxubmV0L3NjdHAvS2NvbmZpZzo0MzpcXHRkZXBlbmRzIG9uIFBST0NfRlNcXG5uZXQvc2N0cC9LY29uZmlnLTQ0LVxcdGhlbHBcXG4tLVxcbm5ldC9zY3RwL0tjb25maWc9NzA9Y29uZmlnIElORVRfU0NUUF9ESUFHXFxubmV0L3NjdHAvS2NvbmZpZzo3MTpcXHRkZXBlbmRzIG9uIElORVRfRElBR1xcbm5ldC9zY3RwL0tjb25maWctNzItXFx0ZGVmX3RyaXN0YXRlIElORVRfRElBR1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo0Ny41MDU4MDY2ODVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjExMTQwNzk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIEF1dGhlbnRpY2F0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlIGRlcGVuZGVuY2Ugb24gYElQX1NDVFBgIGltcGxpZXMgYElORVRgIGlzIGFscmVhZHkgZW5hYmxlZCwgbWFraW5nIHRoaXMgYSByZWFzb25hYmx5IHN0cmFpZ2h0Zm9yd2FyZCBpbmNsdXNpb24uIGBJUF9TQ1RQYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgZXZlcnl0aGluZyB0byB3b3JrLlxuXG5Ob3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIGEgY291cGxlIG9mIHRoaW5ncy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgc2N0cF91bnBhY2tfY29va2llYCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gWWVzLCBnb29kLCBpdCBpcyBub3QuIEl0J3MgZGVmaW5lZCBhcyBgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZSguLi4pYC4gVGhhdCdzIHdoYXQgSSBleHBlY3RlZC4gQW5kIGBzY3RwX2F1dGhfdmVyaWZ5X2Nvb2tpZV9wYXJhbXNgLCBJJ2xsIGRvdWJsZSBjaGVjayB0aGF0IG9uZSB0b28uIE9rYXksIG5vdCBzdGF0aWMgZWl0aGVyLCBhbmQgaXQncyBkZWZpbmVkIGFzIGBib29sIHNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtcyguLi4pYC4gRXhjZWxsZW50LiBUaGlzIGNvbmZpcm1zIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZC5cblxuVGhlIGNvcmUgb2YgdGhpcyBwYXRjaCBjZW50ZXJzIG9uIHZhbGlkYXRpbmcgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgdmlhIG5ldHdvcmsgdHJhZmZpYywgc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcy4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZC4gVGhlIGltcG9ydGFudCBuZXh0IHN0ZXAgaXMgdG8gZnV6eiB0aGlzIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcy4gV2UgbmVlZCB0byB2ZXJpZnkgdGhlcmUgYXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cblxuVG8gYmUgdmVyeSBjbGVhciwgSSdsbCBmbGFnIHRoZXNlIGtleSBzeW1ib2xzIGZvciBmdXR1cmUgZm9jdXM6IGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zYC4gVGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnQgaXMgYElQX1NDVFBgLiBJJ2xsIGdvIGFoZWFkIGFuZCBzZXQgdGhlIHJlc3VsdHMgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTQ5LCJPdXRwdXRUb2tlbnMiOjExOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQyMDo0Nzo1My42MTcyMTc5MzVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzI2Nzk1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF9hdXRoX3ZlcmlmeV9jb29raWVfcGFyYW1zXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyB2YWxpZGF0aW9uIGZvciBTQ1RQIEFVVEggcGFyYW1ldGVycyBjb3BpZWQgZnJvbSBhIHN0YXRlIGNvb2tpZSBkdXJpbmcgYXNzb2NpYXRpb24gY3JlYXRpb24uIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBTQ1RQIG5ldHdvcmsgdHJhZmZpYyAoc3BlY2lmaWNhbGx5IENPT0tJRSBFQ0hPIGNodW5rcykuIEl0IGlzIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSB2YWxpZGF0aW9uIGxvZ2ljIGNvcnJlY3RseSBoYW5kbGVzIG1hbGZvcm1lZCBjb29raWVzIHdpdGhvdXQgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGxlYWtzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3VucGFja19jb29raWVcIixcbiAgICBcInNjdHBfYXV0aF92ZXJpZnlfY29va2llX3BhcmFtc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgdmFsaWRhdGlvbiBmb3IgU0NUUCBBVVRIIHBhcmFtZXRlcnMgY29waWVkIGZyb20gYSBzdGF0ZSBjb29raWUgZHVyaW5nIGFzc29jaWF0aW9uIGNyZWF0aW9uLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgU0NUUCBuZXR3b3JrIHRyYWZmaWMgKHNwZWNpZmljYWxseSBDT09LSUUgRUNITyBjaHVua3MpLiBJdCBpcyBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgdmFsaWRhdGlvbiBsb2dpYyBjb3JyZWN0bHkgaGFuZGxlcyBtYWxmb3JtZWQgY29va2llcyB3aXRob3V0IHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBsZWFrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workfloww6tzb[1] Phase: Succeeded StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-04 20:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-04 20:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2] Phase: Succeeded StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-04 20:48:14 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 20:48:04 +0000 UTC FinishedAt: 2026-08-04 20:48:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww6tzb/series-workfloww6tzb-convert-artifact-3592740747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 20:48:14 +0000 UTC FinishedAt: 2026-08-04 21:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 20:48:14 +0000 UTC FinishedAt: 2026-08-04 21:04:22 +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:*928a5032-6aa6-4eaa-b039-63b5ba58a019,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-workfloww6tzb/series-workfloww6tzb-convert-artifact-3592740747/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": "766ca368-61cf-46f5-8861-9c47a4fd80d2", "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-workfloww6tzb/series-workfloww6tzb-build-action-1802033801/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 20:48:14 +0000 UTC FinishedAt: 2026-08-04 21:04:12 +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:*928a5032-6aa6-4eaa-b039-63b5ba58a019,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-workfloww6tzb/series-workfloww6tzb-convert-artifact-3592740747/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": "766ca368-61cf-46f5-8861-9c47a4fd80d2", "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-workfloww6tzb/series-workfloww6tzb-build-action-1802033801/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 21:04:22 +0000 UTC FinishedAt: 2026-08-04 21:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 21:04:22 +0000 UTC FinishedAt: 2026-08-04 21:04:22 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 21:04:22 +0000 UTC FinishedAt: 2026-08-04 21:04:32 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 21:04:22 +0000 UTC FinishedAt: 2026-08-04 21:04:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workfloww6tzb/series-workfloww6tzb-convert-artifact-2122597346/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 21:04:32 +0000 UTC FinishedAt: 2026-08-04 21:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 21:04:32 +0000 UTC FinishedAt: 2026-08-04 21:06:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*766ca368-61cf-46f5-8861-9c47a4fd80d2,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-workfloww6tzb/series-workfloww6tzb-build-action-1802033801/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-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 21:06:32 +0000 UTC FinishedAt: 2026-08-04 21:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 21:06:32 +0000 UTC FinishedAt: 2026-08-04 21:06:32 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 21:06:32 +0000 UTC FinishedAt: 2026-08-04 21:25:38 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 21:06:32 +0000 UTC FinishedAt: 2026-08-04 21:25:38 +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:*928a5032-6aa6-4eaa-b039-63b5ba58a019,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-workfloww6tzb/series-workfloww6tzb-convert-artifact-2122597346/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": "8ee6e923-cc2f-4908-99d8-02702b5ab3b4", "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-workfloww6tzb/series-workfloww6tzb-build-action-3733368886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 21:06:32 +0000 UTC FinishedAt: 2026-08-04 21:25:28 +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:*928a5032-6aa6-4eaa-b039-63b5ba58a019,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-workfloww6tzb/series-workfloww6tzb-convert-artifact-2122597346/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": "8ee6e923-cc2f-4908-99d8-02702b5ab3b4", "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-workfloww6tzb/series-workfloww6tzb-build-action-3733368886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 21:25:38 +0000 UTC FinishedAt: 2026-08-04 21:25:38 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 21:25:38 +0000 UTC FinishedAt: 2026-08-04 21:25:38 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 21:25:38 +0000 UTC FinishedAt: 2026-08-04 21:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 21:25:38 +0000 UTC FinishedAt: 2026-08-04 21:27:29 +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:*8ee6e923-cc2f-4908-99d8-02702b5ab3b4,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-workfloww6tzb/series-workfloww6tzb-build-action-3733368886/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-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"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:*766ca368-61cf-46f5-8861-9c47a4fd80d2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ee6e923-cc2f-4908-99d8-02702b5ab3b4,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-workfloww6tzb/series-workfloww6tzb-build-action-1802033801/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-workfloww6tzb/series-workfloww6tzb-build-action-3733368886/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-04 21:27:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-04 21:27:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"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-workfloww6tzb/series-workfloww6tzb-convert-artifact-1728904727/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-04 21:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-04 21:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 21:27:39 +0000 UTC FinishedAt: 2026-08-04 21:27:39 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 21:27:49 +0000 UTC FinishedAt: 2026-08-05 00:29:20 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww6tzb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_unpack_cookie","sctp_auth_verify_cookie_params"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"828c4a5a9518117f9f7bdc445a7eeca85fc91bf8","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2b86cc2d-3d94-41af-9422-63fc8aa76bd0","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 21:27:49 +0000 UTC FinishedAt: 2026-08-05 00:29:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*766ca368-61cf-46f5-8861-9c47a4fd80d2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8ee6e923-cc2f-4908-99d8-02702b5ab3b4,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-workfloww6tzb/series-workfloww6tzb-build-action-1802033801/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-workfloww6tzb/series-workfloww6tzb-build-action-3733368886/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-workfloww6tzb/series-workfloww6tzb-convert-artifact-1728904727/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,}