Name: series-workflowkphtl Phase: Succeeded StartedAt: 2026-08-01 00:22:04 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[0] Phase: Succeeded StartedAt: 2026-08-01 00:22:05 +0000 UTC FinishedAt: 2026-08-01 00:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 00:22:05 +0000 UTC FinishedAt: 2026-08-01 00:43:39 +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": "3441aa6109ac6eff5a28894dc5855e8af6513277", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_CONG_BBR", "BPF_SYSCALL", "BPF_JIT" ], "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": "3441aa6109ac6eff5a28894dc5855e8af6513277", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_CONG_BBR", "BPF_SYSCALL", "BPF_JIT" ], "series_id": "c3916940-8df5-4e68-af58-2a91c932b264" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_tso_autosize", "bbr_tso_segs", "bpf_tcp_ca_tso_segs" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9DT05HX0JCUiYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Rzb19hdXRvc2l6ZSYjMzQ7LAogICAgJiMzNDtiYnJfdHNvX3NlZ3MmIzM0OywKICAgICYjMzQ7YnBmX3RjcF9jYV90c29fc2VncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGJ5IHJlcGxhY2luZyBtaW5fdHNvX3NlZ3Mgd2l0aCB0c29fc2VncyBjYWxsYmFjaywgYWxsb3dpbmcgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgdG8gZGlyZWN0bHkgZGljdGF0ZSB0aGUgVFNPIHNlZ21lbnQgc2l6ZS4gSXQgaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY5ZjI2N2ZhYmJiZDAxOTJhNWM3ZGM2NDY0YWQwMzc0NGFlYWI5NzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjQyOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC04MjQsNiAmIzQzOzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7XG4gdW5zaWduZWQgaW50IHRjcF9jdXJyZW50X21zcyhzdHJ1Y3Qgc29jayAqc2spO1xuIHUzMiB0Y3BfY2xhbXBfcHJvYmUwX3RvX3VzZXJfdGltZW91dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHUzMiB3aGVuKTtcbiBcbiYjNDM7dTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbiYjNDM7XHRcdCAgICAgaW50IG1pbl90c29fc2Vncyk7XG4mIzQzO1xuIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi9cbiBzdGF0aWMgaW5saW5lIGludCB0Y3BfYm91bmRfdG9faGFsZl93bmQoc3RydWN0IHRjcF9zb2NrICp0cCwgaW50IHBrdHNpemUpXG4ge1xuQEAgLTEzNjEsOCAmIzQzOzEzNjQsMTMgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7XG4gXHQvKiBob29rIGZvciBwYWNrZXQgYWNrIGFjY291bnRpbmcgKG9wdGlvbmFsKSAqL1xuIFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XG4gXG4tXHQvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAob3B0aW9uYWwpICovXG4tXHR1MzIgKCptaW5fdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzayk7XG4mIzQzO1x0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBJZiBwcm92aWRlZCwgdGhpcyBjYWxsYmFjayByZXR1cm5zIHRoZSBmaW5hbCBUU08gc2VnbWVudCBudW1iZXJcbiYjNDM7XHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cbiYjNDM7XHQgKiBtdXN0IGRlcml2ZSBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBhbmQgZW5zdXJlIHRoZSByZXN1bHQgaXMgdmFsaWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xuIFxuIFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXG4gXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXG5AQCAtMjg0LDkgJiM0MzsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBcbiB7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrKVxuJiM0MztzdGF0aWMgdTMyIGJwZl90Y3BfY2FfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiB7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxuJiM0MztcdFx0LyogTm8gVFNPIHNpemluZyBkZWNpc2lvbi4gTGV0IGNhbGxlciBhcHBseSBpdHMgbGltaXRzLiAqL1xuJiM0MztcdFx0cmV0dXJuIFUzMl9NQVg7XG4mIzQzO1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLFxuQEAgLTMyMCw3ICYjNDM7MzIzLDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgX19icGZfb3BzX3RjcF9jb25nZXN0aW9uX29wcyA9IHtcbiBcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LFxuIFx0LmluX2Fja19ldmVudCA9IGJwZl90Y3BfY2FfaW5fYWNrX2V2ZW50LFxuIFx0LnBrdHNfYWNrZWQgPSBicGZfdGNwX2NhX3BrdHNfYWNrZWQsXG4tXHQubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsXG4mIzQzO1x0LnRzb19zZWdzID0gYnBmX3RjcF9jYV90c29fc2VncyxcbiBcdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcbiBcdC51bmRvX2N3bmQgPSBicGZfdGNwX2NhX3VuZG9fY3duZCxcbiBcdC5zbmRidWZfZXhwYW5kID0gYnBmX3RjcF9jYV9zbmRidWZfZXhwYW5kLFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9iYnIuYyBiL25ldC9pcHY0L3RjcF9iYnIuY1xuaW5kZXggODIzNzhhMmJmZDFlMS4uZWNmMTFiZTQ2ZjM4MiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9iYnIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2Jici5jXG5AQCAtMjk3LDExICYjNDM7Mjk3LDE4IEBAIHN0YXRpYyB2b2lkIGJicl9zZXRfcGFjaW5nX3JhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgYncsIGludCBnYWluKVxuIH1cbiBcbiAvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAqL1xuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0cmV0dXJuIFJFQURfT05DRShzay1cdTAwM2Vza19wYWNpbmdfcmF0ZSkgXHUwMDNjIChiYnJfbWluX3Rzb19yYXRlIFx1MDAzZVx1MDAzZSAzKSA/IDEgOiAyO1xuIH1cbiBcbiYjNDM7X19icGZfa2Z1bmMgc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiYjNDM7e1xuJiM0MztcdGlmICh1bmxpa2VseSghbXNzX25vdykpXG4mIzQzO1x0XHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XG4mIzQzO1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIGJicl9taW5fdHNvX3NlZ3Moc2spKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIGJicl90c29fc2Vnc19nb2FsKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbkBAIC0xMTUxLDcgJiM0MzsxMTU4LDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2Jicl9jb25nX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0LnVuZG9fY3duZFx0PSBiYnJfdW5kb19jd25kLFxuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnRcdD0gYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuc3N0aHJlc2hcdD0gYmJyX3NzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSBiYnJfbWluX3Rzb19zZWdzLFxuJiM0MztcdC50c29fc2Vnc1x0PSBiYnJfdHNvX3NlZ3MsXG4gXHQuZ2V0X2luZm9cdD0gYmJyX2dldF9pbmZvLFxuIFx0LnNldF9zdGF0ZVx0PSBiYnJfc2V0X3N0YXRlLFxuIH07XG5AQCAtMTE2Myw3ICYjNDM7MTE3MCw3IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc25kYnVmX2V4cGFuZClcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3VuZG9fY3duZClcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zc3RocmVzaClcbi1CVEZfSURfRkxBR1MoZnVuYywgYmJyX21pbl90c29fc2VncylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NldF9zdGF0ZSlcbiBCVEZfS0ZVTkNTX0VORCh0Y3BfYmJyX2NoZWNrX2tmdW5jX2lkcylcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbmluZGV4IGQ3YzE0NDRiNWUzMDQuLmQ5YmRhM2E4NGYyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuY1xuQEAgLTIyNTMsOCAmIzQzOzIyNTMsOCBAQCBzdGF0aWMgYm9vbCB0Y3BfbmFnbGVfY2hlY2soYm9vbCBwYXJ0aWFsLCBjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwLFxuICAqIGZvciBldmVyeSAyXjkgdXNlYyAoYWthIDUxMiB1cykgb2YgUlRULCBzbyB0aGF0IHRoZSBSVFQtYmFzZWQgYWxsb3dhbmNlXG4gICogaXMgYmVsb3cgMTUwMCBieXRlcyBhZnRlciA2ICogfjUwMCB1c2VjID0gM21zLlxuICAqL1xuLXN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxuLVx0XHRcdCAgICBpbnQgbWluX3Rzb19zZWdzKVxuJiM0Mzt1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxuJiM0MztcdFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgYnl0ZXM7XG4gXHR1MzIgcjtcbkBAIC0yMjY5LDYgJiM0MzsyMjY5LDcgQEAgc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4gXG4gXHRyZXR1cm4gbWF4X3QodTMyLCBieXRlcyAvIG1zc19ub3csIG1pbl90c29fc2Vncyk7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKHRjcF90c29fYXV0b3NpemUpO1xuIFxuIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlZ21lbnRzIHdlIHdhbnQgaW4gdGhlIHNrYiB3ZSBhcmUgdHJhbnNtaXR0aW5nLlxuICAqIFNlZSBpZiBjb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlIHdhbnRzIHRvIGRlY2lkZTsgb3RoZXJ3aXNlLCBhdXRvc2l6ZS5cbkBAIC0yMjc4LDEyICYjNDM7MjI3OSwxMiBAQCBzdGF0aWMgdTMyIHRjcF90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93KVxuIFx0Y29uc3Qgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2Ffb3BzID0gaW5ldF9jc2soc2spLVx1MDAzZWljc2tfY2Ffb3BzO1xuIFx0dTMyIG1pbl90c28sIHRzb19zZWdzO1xuIFxuLVx0bWluX3RzbyA9IGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3MgP1xuLVx0XHRcdGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3Moc2spIDpcbi1cdFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuJiM0MztcdG1pbl90c28gPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuIFxuLVx0dHNvX3NlZ3MgPSB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBtaW5fdHNvKTtcbi1cdHJldHVybiBtaW5fdCh1MzIsIHRzb19zZWdzLCBzay1cdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xuJiM0MztcdHRzb19zZWdzID0gY2Ffb3BzLVx1MDAzZXRzb19zZWdzID9cbiYjNDM7XHRcdFx0Y2Ffb3BzLVx1MDAzZXRzb19zZWdzKHNrLCBtc3Nfbm93KSA6XG4mIzQzO1x0XHRcdHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xuJiM0MztcdHJldHVybiBjbGFtcF90KHUzMiwgdHNvX3NlZ3MsIDEsIHNrLVx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XG4gfVxuIFxuIC8qIFJldHVybnMgdGhlIHBvcnRpb24gb2Ygc2tiIHdoaWNoIGNhbiBiZSBzZW50IHJpZ2h0IGF3YXkgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbmluZGV4IDBhM2U5ZDM1YmY2ZjAuLjU4MjYyZTQ5MDMzNjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuY1xuQEAgLTEwLDcgJiM0MzsxMCw3IEBAIGV4dGVybiB1MzIgYmJyX3NuZGJ1Zl9leHBhbmQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB1MzIgYmJyX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcbiYjNDM7ZXh0ZXJuIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9zZXRfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCB1OCBuZXdfc3RhdGUpIF9fa3N5bTtcbiBcbiBleHRlcm4gdm9pZCBkY3RjcF9pbml0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuQEAgLTkwLDkgJiM0Mzs5MCw5IEBAIHUzMiBCUEZfUFJPRyhzc3RocmVzaCwgc3RydWN0IHNvY2sgKnNrKVxuIH1cbiBcbiBTRUMoXCYjMzQ7c3RydWN0X29wc1wmIzM0Oylcbi11MzIgQlBGX1BST0cobWluX3Rzb19zZWdzLCBzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiB7XG4tXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XG4mIzQzO1x0cmV0dXJuIGJicl90c29fc2VncyhzaywgbXNzX25vdyk7XG4gfVxuIFxuIFNFQyhcJiMzNDtzdHJ1Y3Rfb3BzXCYjMzQ7KVxuQEAgLTEyMCw3ICYjNDM7MTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XG4gXHQuY3duZF9ldmVudFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXG4gXHQuY3duZF9ldmVudF90eF9zdGFydCA9ICh2b2lkICopY3duZF9ldmVudF90eF9zdGFydCxcbiBcdC5zc3RocmVzaFx0PSAodm9pZCAqKXNzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSAodm9pZCAqKW1pbl90c29fc2VncyxcbiYjNDM7XHQudHNvX3NlZ3NcdD0gKHZvaWQgKil0c29fc2VncyxcbiBcdC5zZXRfc3RhdGVcdD0gKHZvaWQgKilzZXRfc3RhdGUsXG4gXHQucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O3RjcF9jYV9rZnVuY1wmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VENQX0NPTkdfQkJSJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdHNvX2F1dG9zaXplJiMzNDssCiAgICAmIzM0O2Jicl90c29fc2VncyYjMzQ7LAogICAgJiMzNDticGZfdGNwX2NhX3Rzb19zZWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlmMjY3ZmFiYmJkMDE5MmE1YzdkYzY0NjRhZDAzNzQ0YWVhYjk3MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDA6NDI6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oCkBAIC04MjQsNiAmIzQzOzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7CiB1bnNpZ25lZCBpbnQgdGNwX2N1cnJlbnRfbXNzKHN0cnVjdCBzb2NrICpzayk7CiB1MzIgdGNwX2NsYW1wX3Byb2JlMF90b191c2VyX3RpbWVvdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1MzIgd2hlbik7CiAKJiM0Mzt1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAomIzQzOwkJICAgICBpbnQgbWluX3Rzb19zZWdzKTsKJiM0MzsKIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHRjcF9ib3VuZF90b19oYWxmX3duZChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCBpbnQgcGt0c2l6ZSkKIHsKQEAgLTEzNjEsOCAmIzQzOzEzNjQsMTMgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7CiAJLyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi8KIAl2b2lkICgqcGt0c19hY2tlZCkoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKTsKIAotCS8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi8KLQl1MzIgKCptaW5fdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzayk7CiYjNDM7CS8qIE92ZXJyaWRlIHRjcF90c29fYXV0b3NpemUgKG9wdGlvbmFsKQomIzQzOwkgKgomIzQzOwkgKiBJZiBwcm92aWRlZCwgdGhpcyBjYWxsYmFjayByZXR1cm5zIHRoZSBmaW5hbCBUU08gc2VnbWVudCBudW1iZXIKJiM0MzsJICogYW5kIHdpbGwgYnlwYXNzIHRjcF90c29fYXV0b3NpemUoKSBlbnRpcmVseS4gVGhlIGltcGxlbWVudGF0aW9uCiYjNDM7CSAqIG11c3QgZGVyaXZlIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGFuZCBlbnN1cmUgdGhlIHJlc3VsdCBpcyB2YWxpZC4KJiM0MzsJICovCiYjNDM7CXUzMiAoKnRzb19zZWdzKShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KTsKIAogCS8qIG5ldyB2YWx1ZSBvZiBjd25kIGFmdGVyIGxvc3MgKHJlcXVpcmVkKSAqLwogCXUzMiAgKCp1bmRvX2N3bmQpKHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9icGZfdGNwX2NhLmMgYi9uZXQvaXB2NC9icGZfdGNwX2NhLmMKaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvYnBmX3RjcF9jYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuYwpAQCAtMjg0LDkgJiM0MzsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXAKIHsKIH0KIAotc3RhdGljIHUzMiBicGZfdGNwX2NhX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spCiYjNDM7c3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpCiB7Ci0JcmV0dXJuIDA7CiYjNDM7CWlmICh1bmxpa2VseSghbXNzX25vdykpCiYjNDM7CQkvKiBObyBUU08gc2l6aW5nIGRlY2lzaW9uLiBMZXQgY2FsbGVyIGFwcGx5IGl0cyBsaW1pdHMuICovCiYjNDM7CQlyZXR1cm4gVTMyX01BWDsKJiM0MzsJcmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApOwogfQogCiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLApAQCAtMzIwLDcgJiM0MzszMjMsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0gewogCS5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5pbl9hY2tfZXZlbnQgPSBicGZfdGNwX2NhX2luX2Fja19ldmVudCwKIAkucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCwKLQkubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsCiYjNDM7CS50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsCiAJLmNvbmdfY29udHJvbCA9IGJwZl90Y3BfY2FfY29uZ19jb250cm9sLAogCS51bmRvX2N3bmQgPSBicGZfdGNwX2NhX3VuZG9fY3duZCwKIAkuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCwKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9iYnIuYyBiL25ldC9pcHY0L3RjcF9iYnIuYwppbmRleCA4MjM3OGEyYmZkMWUxLi5lY2YxMWJlNDZmMzgyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2Jici5jCkBAIC0yOTcsMTEgJiM0MzsyOTcsMTggQEAgc3RhdGljIHZvaWQgYmJyX3NldF9wYWNpbmdfcmF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBidywgaW50IGdhaW4pCiB9CiAKIC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzICovCi1fX2JwZl9rZnVuYyBzdGF0aWMgdTMyIGJicl9taW5fdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrKQomIzQzO3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spCiB7CiAJcmV0dXJuIFJFQURfT05DRShzay0mZ3Q7c2tfcGFjaW5nX3JhdGUpICZsdDsgKGJicl9taW5fdHNvX3JhdGUgJmd0OyZndDsgMykgPyAxIDogMjsKIH0KIAomIzQzO19fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpCiYjNDM7ewomIzQzOwlpZiAodW5saWtlbHkoIW1zc19ub3cpKQomIzQzOwkJcmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spOwomIzQzOwlyZXR1cm4gdGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgYmJyX21pbl90c29fc2VncyhzaykpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzX2dvYWwoc3RydWN0IHNvY2sgKnNrKQogewogCXN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOwpAQCAtMTE1MSw3ICYjNDM7MTE1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRjcF9iYnJfY29uZ19vcHMgX19yZWFkX21vc3RseSA9IHsKIAkudW5kb19jd25kCT0gYmJyX3VuZG9fY3duZCwKIAkuY3duZF9ldmVudF90eF9zdGFydAk9IGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5zc3RocmVzaAk9IGJicl9zc3RocmVzaCwKLQkubWluX3Rzb19zZWdzCT0gYmJyX21pbl90c29fc2VncywKJiM0MzsJLnRzb19zZWdzCT0gYmJyX3Rzb19zZWdzLAogCS5nZXRfaW5mbwk9IGJicl9nZXRfaW5mbywKIAkuc2V0X3N0YXRlCT0gYmJyX3NldF9zdGF0ZSwKIH07CkBAIC0xMTYzLDcgJiM0MzsxMTcwLDcgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zbmRidWZfZXhwYW5kKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl91bmRvX2N3bmQpCiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQpCiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NzdGhyZXNoKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9taW5fdHNvX3NlZ3MpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncykKIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc2V0X3N0YXRlKQogQlRGX0tGVU5DU19FTkQodGNwX2Jicl9jaGVja19rZnVuY19pZHMpCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwppbmRleCBkN2MxNDQ0YjVlMzA0Li5kOWJkYTNhODRmMjYxIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX291dHB1dC5jCkBAIC0yMjUzLDggJiM0MzsyMjUzLDggQEAgc3RhdGljIGJvb2wgdGNwX25hZ2xlX2NoZWNrKGJvb2wgcGFydGlhbCwgY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCwKICAqIGZvciBldmVyeSAyXjkgdXNlYyAoYWthIDUxMiB1cykgb2YgUlRULCBzbyB0aGF0IHRoZSBSVFQtYmFzZWQgYWxsb3dhbmNlCiAgKiBpcyBiZWxvdyAxNTAwIGJ5dGVzIGFmdGVyIDYgKiB+NTAwIHVzZWMgPSAzbXMuCiAgKi8KLXN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAotCQkJICAgIGludCBtaW5fdHNvX3NlZ3MpCiYjNDM7dTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdywKJiM0MzsJCSAgICAgaW50IG1pbl90c29fc2VncykKIHsKIAl1bnNpZ25lZCBsb25nIGJ5dGVzOwogCXUzMiByOwpAQCAtMjI2OSw2ICYjNDM7MjI2OSw3IEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAogCiAJcmV0dXJuIG1heF90KHUzMiwgYnl0ZXMgLyBtc3Nfbm93LCBtaW5fdHNvX3NlZ3MpOwogfQomIzQzO0VYUE9SVF9TWU1CT0wodGNwX3Rzb19hdXRvc2l6ZSk7CiAKIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlZ21lbnRzIHdlIHdhbnQgaW4gdGhlIHNrYiB3ZSBhcmUgdHJhbnNtaXR0aW5nLgogICogU2VlIGlmIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgd2FudHMgdG8gZGVjaWRlOyBvdGhlcndpc2UsIGF1dG9zaXplLgpAQCAtMjI3OCwxMiAmIzQzOzIyNzksMTIgQEAgc3RhdGljIHUzMiB0Y3BfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdykKIAljb25zdCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpjYV9vcHMgPSBpbmV0X2NzayhzayktJmd0O2ljc2tfY2Ffb3BzOwogCXUzMiBtaW5fdHNvLCB0c29fc2VnczsKIAotCW1pbl90c28gPSBjYV9vcHMtJmd0O21pbl90c29fc2VncyA/Ci0JCQljYV9vcHMtJmd0O21pbl90c29fc2VncyhzaykgOgotCQkJUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS0mZ3Q7aXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7CiYjNDM7CW1pbl90c28gPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLSZndDtpcHY0LnN5c2N0bF90Y3BfbWluX3Rzb19zZWdzKTsKIAotCXRzb19zZWdzID0gdGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7Ci0JcmV0dXJuIG1pbl90KHUzMiwgdHNvX3NlZ3MsIHNrLSZndDtza19nc29fbWF4X3NlZ3MpOwomIzQzOwl0c29fc2VncyA9IGNhX29wcy0mZ3Q7dHNvX3NlZ3MgPwomIzQzOwkJCWNhX29wcy0mZ3Q7dHNvX3NlZ3Moc2ssIG1zc19ub3cpIDoKJiM0MzsJCQl0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBtaW5fdHNvKTsKJiM0MzsJcmV0dXJuIGNsYW1wX3QodTMyLCB0c29fc2VncywgMSwgc2stJmd0O3NrX2dzb19tYXhfc2Vncyk7CiB9CiAKIC8qIFJldHVybnMgdGhlIHBvcnRpb24gb2Ygc2tiIHdoaWNoIGNhbiBiZSBzZW50IHJpZ2h0IGF3YXkgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYwppbmRleCAwYTNlOWQzNWJmNmYwLi41ODI2MmU0OTAzMzY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jCkBAIC0xMCw3ICYjNDM7MTAsNyBAQCBleHRlcm4gdTMyIGJicl9zbmRidWZfZXhwYW5kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltOwogZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltOwogZXh0ZXJuIHZvaWQgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07CiBleHRlcm4gdTMyIGJicl9zc3RocmVzaChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTsKLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTsKJiM0MztleHRlcm4gdTMyIGJicl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KSBfX2tzeW07CiBleHRlcm4gdm9pZCBiYnJfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKSBfX2tzeW07CiAKIGV4dGVybiB2b2lkIGRjdGNwX2luaXQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07CkBAIC05MCw5ICYjNDM7OTAsOSBAQCB1MzIgQlBGX1BST0coc3N0aHJlc2gsIHN0cnVjdCBzb2NrICpzaykKIH0KIAogU0VDKCYjMzQ7c3RydWN0X29wcyYjMzQ7KQotdTMyIEJQRl9QUk9HKG1pbl90c29fc2Vncywgc3RydWN0IHNvY2sgKnNrKQomIzQzO3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykKIHsKLQlyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7CiYjNDM7CXJldHVybiBiYnJfdHNvX3NlZ3Moc2ssIG1zc19ub3cpOwogfQogCiBTRUMoJiMzNDtzdHJ1Y3Rfb3BzJiMzNDspCkBAIC0xMjAsNyAmIzQzOzEyMCw3IEBAIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2NhX2tmdW5jID0gewogCS5jd25kX2V2ZW50CT0gKHZvaWQgKiljd25kX2V2ZW50LAogCS5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gKHZvaWQgKiljd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5zc3RocmVzaAk9ICh2b2lkICopc3N0aHJlc2gsCi0JLm1pbl90c29fc2Vncwk9ICh2b2lkICopbWluX3Rzb19zZWdzLAomIzQzOwkudHNvX3NlZ3MJPSAodm9pZCAqKXRzb19zZWdzLAogCS5zZXRfc3RhdGUJPSAodm9pZCAqKXNldF9zdGF0ZSwKIAkucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsCiAJLm5hbWUJCT0gJiMzNDt0Y3BfY2Ffa2Z1bmMmIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBjb2RlLCB3aGljaCBhbHdheXMgd2FycmFudHMgY2xvc2UgYXR0ZW50aW9uLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlcGxhY2luZyBgbWluX3Rzb19zZWdzYCB3aXRoIGB0c29fc2Vnc2Agd2l0aGluIHRoZSBgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wc2AuIFRoYXQgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGludGVyYWN0LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzd2FwIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyBtb2RpZmllZCBzZXZlcmFsIGtleSBmaWxlczogYGJwZl90Y3BfY2EuY2AsIGB0Y3BfYmJyLmNgLCBhbmQgYHRjcF9vdXRwdXQuY2AsIHBsdXMgYSBCUEYgc2VsZnRlc3QuIFRoZSBwYXRjaCBhbHNvIGV4cG9zZXMgYHRjcF90c29fYXV0b3NpemVgIGFuZCBhZGp1c3RzIGB0Y3BfdHNvX3NlZ3NgIHRvIHVzZSBgdHNvX3NlZ3NgIHdoZW4gaXQmIzM5O3MgYXZhaWxhYmxlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICp1c2VkKj8gSXMgdGhpcyBmdW5jdGlvbmFsbHkgY29ycmVjdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBpbiB0aGUgY29kZSBhbmQgdGhhdCBpdCBiZWhhdmVzIGFzIGV4cGVjdGVkLiBRdWlja2x5IGNoZWNraW5nLCBJIHNlZSB0aGF0IGB0Y3BfdHNvX3NlZ3NgICppcyogY2FsbGVkIGluIHRoZSBUQ1Agb3V0cHV0IHBhdGgsIHdoaWNoIGlzIGdvb2QuIFRoYXQgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBhIHJlbGV2YW50IHBhcnQgb2YgdGhlIGZsb3cuIEFuZCBpdCBsb29rcyBsaWtlIGBiYnJfdHNvX3NlZ3NgIGhhcyBiZWVuIGludHJvZHVjZWQgYXMgdGhlIG5ldyBjYWxsYmFjayBmb3IgQkJSLCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIHRoZSBuZXcgY2FsbGJhY2sgZm9yIEJQRi4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBUQ1BfQ09OR19CQlJgIHRvIHNlZSBob3cgQkJSIGlzIGVuYWJsZWQgYW5kIGFsc28gYEJQRl9TWVNDQUxMYCAob3Igc29tZXRoaW5nIHNpbWlsYXIpIHRvIGNvbmZpcm0gaG93IEJQRiBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGlzIGhhbmRsZWQuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyBwcmV2YWxlbnQgdGhlc2UgY2hhbmdlcyBhcmUsIGFuZCBob3cgdGhleSBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVENQX0NPTkdfQkJSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTY2NS1cbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcbm5ldC9pcHY0L0tjb25maWctNjY3LVx0dHJpc3RhdGUgXCYjMzQ7QkJSIFRDUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3OTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBCQlIgYW5kIEJQRiBpbiB0aGUgTGludXggS2VybmVsKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGJwZl90Y3BfY2EuY2AgYW5kIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBqdW1wIGludG8gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9ucyBvZiBib3RoIGBUQ1BfQ09OR19CQlJgICh3aGljaCBlbmFibGVzIEJCUiBhcyBhIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0pIGFuZCBgQlBGX1NZU0NBTExgLCBzaW5jZSBCUEYgaXMgZXNzZW50aWFsIHRvIHRoZSBgYnBmX3RjcF9jYS5jYCBjb2RlLCBhcyBJIHN1c3BlY3QuIElmIGBUQ1BfQ09OR19CQlJgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGUgZmlsZSB3b24mIzM5O3QgYmUgdXNlZCwgYnV0IGlmIGl0IGlzLCBJIGNhbiBkZXRlcm1pbmUgaG93IHRoaXMgaXMgbGlua2VkLiBBbmQgaWYgYEJQRl9TWVNDQUxMYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBJIG5lZWQgdG8ga25vdyB3aHkgdGhlIGBicGZfdGNwX2NhLmNgIGNvZGUgc3RpbGwgZXhpc3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZ2F0ZXMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUsIHNvIHRoYXQgSSBjYW4gc2VlIGhvdyB0aGVzZSB0d28gYXJlIGxpbmtlZCB0b2dldGhlciBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIHByb3BlciBjb250ZXh0IGZvciB0aGUgcmVzdCBvZiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90Y3BfY2FcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTcxPWlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5uZXQvaXB2NC9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfdGNwX2NhLm9cbm5ldC9pcHY0L01ha2VmaWxlLTczLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBCUEYgYW5kIEJCUiBNb2R1bGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBidWlsZGluZyB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBJIGtub3cgSSBuZWVkIGEgY291cGxlIG9mIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGVkLiBGaXJzdCBhbmQgZm9yZW1vc3QsIGZvciB0aGF0IGBicGZfdGNwX2NhLmNgIG1vZHVsZSwgSSBhYnNvbHV0ZWx5IHJlcXVpcmUgYm90aCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIG5vbi1uZWdvdGlhYmxlOyBubyBCUEYgd2l0aG91dCB0aG9zZS4KCkFuZCB0aGVuIGZvciB0aGUgYHRjcF9iYnIuY2AgbW9kdWxlLCBgQ09ORklHX1RDUF9DT05HX0JCUmAgaXMsIG9mIGNvdXJzZSwgZXNzZW50aWFsLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uCgpOb3csIEkmIzM5O20ganVzdCBxdWlja2x5IGNoZWNraW5nIHNvbWV0aGluZyBlbHNlLCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgdGNwX3Rzb19zZWdzYCB2YXJpYWJsZSBpbiBgbmV0L2lwdjQvdGNwX291dHB1dC5jYC4gSnVzdCB3YW50IHRvIGNvbmZpcm0gdGhhdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJiMzOTttIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF90c29fc2VncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9jb25uZWN0aW9uX3NvY2sucnN0PTIxPXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljc2tfcG10dV9jb29raWUgICAgICAgcmVhZF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9zeW5jX21zcyx0Y3BfY3VycmVudF9tc3MsdGNwXy4uLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfY29ubmVjdGlvbl9zb2NrLnJzdDoyMjpzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICAgICAgICAgICBpY3NrX2NhX29wcyAgICAgICAgICAgIHJlYWRfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfY3duZF92YWxpZGF0ZSx0Y3BfdHNvX3NlZ3MsdGMuLi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9pbmV0X2Nvbm5lY3Rpb25fc29jay5yc3QtMjMtc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyAgaWNza19hZl9vcHMgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2ZpbmlzaF9jb25uZWN0LHRjcF9zZW5kX3N5bl9kLi4uXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTIyNzI9RVhQT1JUX1NZTUJPTCh0Y3BfdHNvX2F1dG9zaXplKTtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3Ni0gKi9cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyMjc3OnN0YXRpYyB1MzIgdGNwX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3cpXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3OC17XG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTI5NjU9c3RhdGljIGJvb2wgdGNwX3dyaXRlX3htaXQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdywgaW50IG5vbmFnbGUsXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI5OTItXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6Mjk5MzpcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCBtc3Nfbm93KTtcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0yOTk0LVx0d2hpbGUgKChza2IgPSB0Y3Bfc2VuZF9oZWFkKHNrKSkpIHtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzcyNj12b2lkIHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWUoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNzM5LVx0c2tiID0gdHAtXHUwMDNlcmV0cmFuc21pdF9za2JfaGludCA/OiBydHhfaGVhZDtcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzozNzQwOlx0bWF4X3NlZ3MgPSB0Y3BfdHNvX3NlZ3Moc2ssIHRjcF9jdXJyZW50X21zcyhzaykpO1xubmV0L2lwdjQvdGNwX291dHB1dC5jLTM3NDEtXHRza2JfcmJ0cmVlX3dhbGtfZnJvbShza2IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTE0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uIGZvciBUQ1AgVFNPIFNlZ21lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbW9kaWZpY2F0aW9ucyB0byB0aGUgVENQIFRTTyBzZWdtZW50YXRpb24gY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgdGNwX3Rzb19zZWdzYC4gVGhpcyBmdW5jdGlvbiwgYW5kIGl0cyByZWxhdGl2ZXMsIGdldCBjYWxsZWQgZnJvbSBzb21lIHJlYWxseSBob3QgY29kZSBwYXRocyDigJMgYHRjcF93cml0ZV94bWl0YCBhbmQgYHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWVgIOKAkyBzbyBhbnkgYnVncyBoZXJlIGFyZSBnb2luZyB0byBiZSBpbXBhY3RmdWwuCgpUaGUgcGF0Y2ggdG91Y2hlcyBgdGNwX3Rzb19hdXRvc2l6ZWAsIGBiYnJfdHNvX3NlZ3NgLCBgYnBmX3RjcF9jYV90c29fc2Vnc2AsIGFuZCBgdGNwX3Rzb19zZWdzYCBkaXJlY3RseS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcHJpb3JpdGl6ZSBmdXp6aW5nIHRob3NlIGZ1bmN0aW9ucy4gQnV0IHdhaXQsIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGlzIHN0cmF0ZWdpY2FsbHkuCgpgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWFrZXMgaXQgYSBkaXN0aW5jdCBzeW1ib2wgYW5kIHRoZXJlZm9yZSBhbiBlYXNpZXIgdGFyZ2V0IGZvciBmdXp6ZXJzLiBgYmJyX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHVzdWFsbHkgYSBwYWluLCBidXQgaXQmIzM5O3MgbWFya2VkIGFzIGBfX2JwZl9rZnVuY2AsIHdoaWNoIG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGF0JiMzOTtzIGEgaHVnZSB3aW4g4oCTIGl0JiMzOTtzIGEgZGlzdGluY3Qgc3ltYm9sLCBqdXN0IGxpa2UgdGhlIGV4cG9ydGVkIG9uZSEgQW5kIHRoZW4gd2UgaGF2ZSBgYnBmX3RjcF9jYV90c29fc2Vnc2AsIHdoaWNoIGlzIHN0YXRpYy4gRmluYWxseSwgYHRjcF90c29fc2Vnc2AgaXMgc3RhdGljIGFzIHdlbGwuCgpTbywgbGV0JiMzOTtzIHplcm8gaW4gb24gYGJicl90c29fc2Vnc2AgYW5kIGB0Y3BfdHNvX2F1dG9zaXplYCBwcmltYXJpbHkuIEJlY2F1c2UsIHdoaWxlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGhhcmRlciB0byBkaXJlY3RseSB0YXJnZXQsIHRoZSBgX19icGZfa2Z1bmNgIG1lYW5zIGBiYnJfdHNvX3NlZ3NgIGlzbiYjMzk7dCBpbmxpbmVkLCBzbyBpdCYjMzk7cyB0YXJnZXRhYmxlLiBOb3csIHRoYXQgbGVhdmVzIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBhcyB0aGUgZmluYWwgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90Y3BfY2FfdHNvX3NlZ3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvYnBmX3RjcF9jYS5jPTI4Mz1zdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKVxuLS1cbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0yODYtXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6Mjg3OnN0YXRpYyB1MzIgYnBmX3RjcF9jYV90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KVxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTI4OC17XG4tLVxubmV0L2lwdjQvYnBmX3RjcF9jYS5jPTMxOD1zdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xuLS1cbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0zMjUtXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcbm5ldC9pcHY0L2JwZl90Y3BfY2EuYzozMjY6XHQudHNvX3NlZ3MgPSBicGZfdGNwX2NhX3Rzb19zZWdzLFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNy1cdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRTTyBTZWdtZW50IENhbGN1bGF0aW9uIGluIFRDUCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVENQIFRTTyBzZWdtZW50IHNpemluZyBsb2dpYy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkLCBvciBhdCBsZWFzdCBhIHN0YW5kYWxvbmUgdmVyc2lvbiB3aWxsIGV4aXN0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlLgoKVGhlcmVmb3JlLCBJIHRob3VnaHQgdGhlIG1haW4gYXJlYXMgdG8gbG9vayBhdCB3ZXJlIGluaXRpYWxseSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGBiYnJfdHNvX3NlZ3NgLCBhbmQgb2YgY291cnNlLCBgYnBmX3RjcF9jYV90c29fc2Vnc2AuCgpUaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgY2FsbGVkIGZyb20gYHRjcF90c29fc2Vnc2AgYW5kIGluIHR1cm4sIGB0Y3Bfd3JpdGVfeG1pdGAuIGB0Y3Bfd3JpdGVfeG1pdGAgaXMgYSBob3RzcG90LCBhbmQgd2hpbGUgYHRjcF90c29fYXV0b3NpemVgIGlzIFRTTyBzaXppbmcgc3BlY2lmaWMsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBza2V3LiBXaGlsZSBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgc3BlY2lmaWMgdG8gVFNPIHNpemluZywgSSBkZWNpZGVkIHRvIGNoZWNrLiBIb3dldmVyLCBJdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHBhY2tldCBpZiBUU08gaXMgZW5hYmxlZC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gYSBob3QgcGF0aC4KCkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGJ5IGV4cG9ydGluZyBpdC4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uLCB0aG91Z2gsIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgcmVhbCBjaGFuZ2VzIGFyZSBpbiBgdGNwX3Rzb19zZWdzYCB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sJiMzOTtzIGBtaW5fdHNvX3NlZ3NgIGlzIGhhbmRsZWQuICBOb3csIHRoZSBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGZ1bmN0aW9ucyBhcmUgbmV3LgoKQ29uc2lkZXJpbmcgdGhpcywgdGhlIGZvY3VzIHJlYWxseSBzaG91bGQgYmUgb24gYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gYGJicl90c29fc2Vnc2AgaXMgZm9yIEJCUiBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIGZvciBCUEYgY29uZ2VzdGlvbiBjb250cm9sLCB3aGljaCBtYWtlcyB0aGVtIGxlc3MgZ2VuZXJpYy4KCmBiYnJfdHNvX3NlZ3NgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYywgYnV0IHRoZSBgX19icGZfa2Z1bmNgIHNwZWNpZmllciBjYW4gcHJldmVudCBpbmxpbmluZy4gSG93ZXZlciwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkIGVpdGhlci4KCkJlY2F1c2UgYHRjcF90c29fYXV0b3NpemVgIGlzbiYjMzk7dCBmdW5jdGlvbmFsbHkgY2hhbmdlZCwgbGV0JiMzOTtzIGtlZXAgdGhlIHByaW1hcnkgZm9jdXMgb24gYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gSSYjMzk7bGwgYWxzbyBhZGQgYHRjcF90c29fc2Vnc2AgYXMgd2VsbC4gU2luY2UgYHRjcF90c29fc2Vnc2AgaXMgc3RhdGljLCBpdCBtaWdodCBiZSBpbmxpbmVkIGludG8gYHRjcF93cml0ZV94bWl0YCBhbmQgYHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWVgLCBhbmQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gb2JzZXJ2ZS4KClNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBhbmFseXNpczogYFRDUF9DT05HX0JCUmAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgQlBGX0pJVGAuIEkgc2hvdWxkIGFsc28gdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRDUF9DT05HX0JCUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQ1BfQ09OR19CQlImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02NDk9Y29uZmlnIFRDUF9DT05HX0NER1xuLS1cbm5ldC9pcHY0L0tjb25maWctNjY1LVxubmV0L2lwdjQvS2NvbmZpZzo2NjY6Y29uZmlnIFRDUF9DT05HX0JCUlxubmV0L2lwdjQvS2NvbmZpZy02NjctXHR0cmlzdGF0ZSBcJiMzNDtCQlIgVENQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqRGVsdmluZyBpbnRvIHRoZSBJUHY0IEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBJUHY0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBuZXQvaXB2NC9LY29uZmlnYCDigJMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbXByZWhlbnNpdmUgc291cmNlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHNvbWV0aGluZywgc28gSSYjMzk7bSBuYXZpZ2F0aW5nIHRvIGxpbmUgNjY2IChvciB0aGVyZWFib3V0cykgYXMgYSBzdGFydGluZyBwb2ludC4gVGhhdCBnZW5lcmFsIGFyZWEgb2Z0ZW4gaG91c2VzIHNvbWUganVpY3kgZGV0YWlscy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBzb21ldGhpbmcgc3BlY2lmaWMgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBhdCB0aGF0IGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MDpcdFxuIDY2MTpcdFx0ICBGb3IgZnVydGhlciBkZXRhaWxzIHNlZTpcbiA2NjI6XHRcdCAgICBELkEuIEhheWVzIGFuZCBHLiBBcm1pdGFnZS4gXCYjMzQ7UmV2aXNpdGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIHVzaW5nXG4gNjYzOlx0XHQgICAgZGVsYXkgZ3JhZGllbnRzLlwmIzM0OyBJbiBOZXR3b3JraW5nIDIwMTEuIFByZXByaW50OlxuIDY2NDpcdFx0ICAgIGh0dHA6Ly9jYWlhLnN3aW4uZWR1LmF1L2N2L2RhaGF5ZXMvY29udGVudC9uZXR3b3JraW5nMjAxMS1jZGctcHJlcHJpbnQucGRmXG4gNjY1Olx0XG4gNjY2Olx0Y29uZmlnIFRDUF9DT05HX0JCUlxuIDY2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QkJSIFRDUFwmIzM0O1xuIDY2ODpcdFx0ZGVmYXVsdCBuXG4gNjY5Olx0XHRoZWxwXG4gNjcwOlx0XG4gNjcxOlx0XHQgIEJCUiAoQm90dGxlbmVjayBCYW5kd2lkdGggYW5kIFJUVCkgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhaW1zIHRvXG4gNjcyOlx0XHQgIG1heGltaXplIG5ldHdvcmsgdXRpbGl6YXRpb24gYW5kIG1pbmltaXplIHF1ZXVlcy4gSXQgYnVpbGRzIGFuIGV4cGxpY2l0XG4gNjczOlx0XHQgIG1vZGVsIG9mIHRoZSBib3R0bGVuZWNrIGRlbGl2ZXJ5IHJhdGUgYW5kIHBhdGggcm91bmQtdHJpcCBwcm9wYWdhdGlvblxuIDY3NDpcdFx0ICBkZWxheS4gSXQgdG9sZXJhdGVzIHBhY2tldCBsb3NzIGFuZCBkZWxheSB1bnJlbGF0ZWQgdG8gY29uZ2VzdGlvbi4gSXRcbiA2NzU6XHRcdCAgY2FuIG9wZXJhdGUgb3ZlciBMQU4sIFdBTiwgY2VsbHVsYXIsIHdpZmksIG9yIGNhYmxlIG1vZGVtIGxpbmtzLiBJdCBjYW5cbiA2NzY6XHRcdCAgY29leGlzdCB3aXRoIGZsb3dzIHRoYXQgdXNlIGxvc3MtYmFzZWQgY29uZ2VzdGlvbiBjb250cm9sLCBhbmQgY2FuXG4gNjc3Olx0XHQgIG9wZXJhdGUgd2l0aCBzaGFsbG93IGJ1ZmZlcnMsIGRlZXAgYnVmZmVycywgYnVmZmVyYmxvYXQsIHBvbGljZXJzLCBvclxuIDY3ODpcdFx0ICBBUU0gc2NoZW1lcyB0aGF0IGRvIG5vdCBwcm92aWRlIGEgZGVsYXkgc2lnbmFsLiBJdCByZXF1aXJlcyB0aGUgZnFcbiA2Nzk6XHRcdCAgKFwmIzM0O0ZhaXIgUXVldWVcJiMzNDspIHBhY2luZyBwYWNrZXQgc2NoZWR1bGVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc1MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBCUEYgYW5kIFRDUCBDb25nZXN0aW9uIENvbnRyb2wqKgoKUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGZvY3VzaW5nIG9uIHRoZSBgVENQX0NPTkdfQkJSYCBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IGFueSB1bnVzdWFsIG9yIHNwZWNpYWxpemVkIGRlcGVuZGVuY2llcyBmb3IgKnRoYXQqIHNwZWNpZmljYWxseS4gSXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgc2VsZi1jb250YWluZWQsIGFuZCBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBpdCBlbm91Z2ggdG8ga25vdyB0aGUgY29tbW9uIHBpdGZhbGxzIGFuZCBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbi4uLiBsZXQmIzM5O3Mgc2hpZnQgZ2VhcnMgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBzcGVjaWZpYyBCUEYgaGVscGVycywgb3IgYW55dGhpbmcgZWxzZSB0aGF0ICptaWdodCogYmUgcmVxdWlyZWQ/IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBwb3RlbnRpYWwgZ290Y2hhcyBhcmUgYmVmb3JlIEkgdHJ5IHRvIGludGVncmF0ZSBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHQjIFVzZWQgYnkgYXJjaHMgdG8gdGVsbCB0aGF0IHRoZXkgd2FudCB0aGUgQlBGIEpJVCBjb21waWxlciBlbmFibGVkIGJ5XG4gIDIxOlx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cbiAgMjI6XHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuICAyMzpcdFx0Ym9vbFxuICAyNDpcdFxuICAyNTpcdG1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTU0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIEJQRiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBoYW5kbGUgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIEJQRiBtb2R1bGUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgQlBGX1NZU0NBTExgIGZ1bmN0aW9uYWxpdHkgaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBubyBuZWVkIGZvciBhbnkgZXh0ZXJuYWwgbGlicmFyaWVzIG9yIHNwZWNpYWwgY29uZmlndXJhdGlvbnMgdGhlcmUuIEdvb2QuIE1ha2VzIGRlcGxveW1lbnQgYSBsaXR0bGUgZWFzaWVyLCBhbHdheXMgYSBwbHVzLiBOb3csIHRoZSBtb3JlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIGFyb3VuZCB0aGUgSklUIGNvbXBpbGVyLCBgQlBGX0pJVGAuIFRoYXTigJlzIHdoZXJlIHRoaW5ncyBjb3VsZCBwb3RlbnRpYWxseSBnZXQgYSBiaXQgbW9yZSBjb21wbGV4LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGZvciB0aGF0LiBUaW1lIHRvIHNjcnV0aW5pemUgdGhvc2UgSklUIGRlcGVuZGVuY2llcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwmIzM5O3MgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEJQRiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBrZXJuZWwvYnBmL0tjb25maWdgLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBsaW5lIDQyIGZlZWxzIGxpa2UgYSBnb29kIGluaXRpYWwgcG9pbnQsIG1heWJlIHdoZXJlIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gYmxvY2sgc3RhcnRzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSB0b3AtbGV2ZWwgb3B0aW9ucyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZmVhdHVyZXMsIG9yIHBlcmhhcHMgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgQlBGIGludGVycHJldGVyLiBNeSBnb2FsIGlzIHRvIGdldCBhIHNvbGlkIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgQlBGIHN1YnN5c3RlbSwgd2hpY2ggd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcyBpbiBpbnZlc3RpZ2F0aW5nIGl0cyBmdW5jdGlvbmFsaXR5IG9yIGRlYnVnZ2luZyBhIHJlbGF0ZWQgaXNzdWUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4gIDQwOlx0XHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBCUEZfSklUXG4gIDQzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIEJQRlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcbiAgNDY6XHRcdHNlbGVjdCBFWEVDTUVNXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEJQRiBwcm9ncmFtcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSBhIEJQRiBpbnRlcnByZXRlci4gVGhpcyBvcHRpb25cbiAgNDk6XHRcdCAgYWxsb3dzIHRoZSBrZXJuZWwgdG8gZ2VuZXJhdGUgbmF0aXZlIGNvZGUgd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkXG4gIDUwOlx0XHQgIGludG8gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc3BlZWQtdXAgcHJvY2Vzc2luZyBvZiBCUEZcbiAgNTE6XHRcdCAgcHJvZ3JhbXMuXG4gIDUyOlx0XG4gIDUzOlx0XHQgIE5vdGUsIGFuIGFkbWluIHNob3VsZCBlbmFibGUgdGhpcyBmZWF0dXJlIGNoYW5naW5nOlxuICA1NDpcdFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NzkKCQkJCQkJCW91dHB1dDogMTUwCgkJCQkJCQl0aG91Z2h0czogNDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNwZWNpZmljYWxseSBpbnRyb2R1Y2luZyBhIG1lY2hhbmlzbSB0byBvdmVycmlkZSBgdGNwX3Rzb19hdXRvc2l6ZWAgdXNpbmcgYSBgdHNvX3NlZ3NgIGNhbGxiYWNrLiBUaGUgaW1wbGVtZW50YXRpb24gdGFyZ2V0cyBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLCBzbyB0aG9zZSBhcmUga2V5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZWVkIHByZXNlbnQgYW5kIGFjY2Vzc2libGUg4oCTIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSByZWxldmFudCBzeW1ib2xzOiBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLiBPa2F5LCBgYmJyX3Rzb19zZWdzYCBpcyBtYXJrZWQgYXMgc3RhdGljLCBidXQgaXQmIzM5O3MgYWxzbyBhIGBfX2JwZl9rZnVuY2AuIEFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgYWxzbyBzdGF0aWMuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBtZWFuaW5nZnVsbHkgZm9jdXMgb24gdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0JiMzOTtzIHBvc3NpYmxlIGlmIHRoZXkgYXJlIG5vdCBpbmxpbmVkLgoKTGV0JiMzOTtzIHNlZS4gYGJicl90c29fc2Vnc2AgaXMgYSBrZnVuYywgd2hpY2ggbWVhbnMgaXQgaXNuJiMzOTt0IGlubGluZWQuIEdvb2QuIEFsc28sIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIGdlbmVyYWxseSBwcmV2ZW50cyBpbmxpbmluZyB0b28uIEV4Y2VsbGVudC4gRmluYWxseSwgYHRjcF90c29fYXV0b3NpemVgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzbiYjMzk7dCBpbmxpbmVkIGVpdGhlci4gVGhpcyBpcyB0aGUgdHJpZmVjdGEhCgpUaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGB0Y3BfdHNvX2F1dG9zaXplYCwgYGJicl90c29fc2Vnc2AsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaW4gbXkgYW5hbHlzaXMuCgpOb3csIHRvIGdldCB0aGlzIHVwIGFuZCBydW5uaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBlbmFibGVkOgoKKiAgIGBUQ1BfQ09OR19CQlJgCiogICBgQlBGX1NZU0NBTExgCiogICBgQlBGX0pJVGAKCkhvbGQgb24sIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9KSVRgIGlzIGFjdHVhbGx5IHJlcXVpcmVkLiBMZXQgbWUgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEFoLCB0aGVyZSBpdCBpczoKCmBgYAppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KQpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfdGNwX2NhLm8KZW5kaWYKYGBgCgpTbywgYEJQRl9KSVRgICppcyogYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBHcmVhdCwgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VENQX0NPTkdfQkJSJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdHNvX2F1dG9zaXplJiMzNDssCiAgICAmIzM0O2Jicl90c29fc2VncyYjMzQ7LAogICAgJiMzNDticGZfdGNwX2NhX3Rzb19zZWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQ09OR19CQlImIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF90c29fYXV0b3NpemUmIzM0OywKICAgICYjMzQ7YmJyX3Rzb19zZWdzJiMzNDssCiAgICAmIzM0O2JwZl90Y3BfY2FfdHNvX3NlZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MjoxNy41MTI5OTQwOThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDc5NDg2MTg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQ09OR19CQlJcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Rzb19hdXRvc2l6ZVwiLFxuICAgIFwiYmJyX3Rzb19zZWdzXCIsXG4gICAgXCJicGZfdGNwX2NhX3Rzb19zZWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjE3LjUxMjk5OTQxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2NzQ2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjlmMjY3ZmFiYmJkMDE5MmE1YzdkYzY0NjRhZDAzNzQ0YWVhYjk3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjQyOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5pbmRleCAyYzViODg5NTMwYjU1Li5lZjk5NzUxMTJmMTU2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtODI0LDYgKzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7XFxuIHVuc2lnbmVkIGludCB0Y3BfY3VycmVudF9tc3Moc3RydWN0IHNvY2sgKnNrKTtcXG4gdTMyIHRjcF9jbGFtcF9wcm9iZTBfdG9fdXNlcl90aW1lb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdTMyIHdoZW4pO1xcbiBcXG4rdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcXG4rXFx0XFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKTtcXG4rXFxuIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi9cXG4gc3RhdGljIGlubGluZSBpbnQgdGNwX2JvdW5kX3RvX2hhbGZfd25kKHN0cnVjdCB0Y3Bfc29jayAqdHAsIGludCBwa3RzaXplKVxcbiB7XFxuQEAgLTEzNjEsOCArMTM2NCwxMyBAQCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHtcXG4gXFx0LyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi9cXG4gXFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XFxuIFxcbi1cXHQvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAob3B0aW9uYWwpICovXFxuLVxcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcXG4rXFx0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXFxuK1xcdCAqXFxuK1xcdCAqIElmIHByb3ZpZGVkLCB0aGlzIGNhbGxiYWNrIHJldHVybnMgdGhlIGZpbmFsIFRTTyBzZWdtZW50IG51bWJlclxcbitcXHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cXG4rXFx0ICogbXVzdCBkZXJpdmUgYW4gYXBwcm9wcmlhdGUgdmFsdWUgYW5kIGVuc3VyZSB0aGUgcmVzdWx0IGlzIHZhbGlkLlxcbitcXHQgKi9cXG4rXFx0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xcbiBcXG4gXFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXFxuIFxcdHUzMiAgKCp1bmRvX2N3bmQpKHN0cnVjdCBzb2NrICpzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xcbmluZGV4IDc5MWUxNTA2MzIzN2MuLmU1ZmFhMzhiZGQyNTMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXFxuKysrIGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXFxuQEAgLTI4NCw5ICsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBcXG4ge1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGJwZl90Y3BfY2FfbWluX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaylcXG4rc3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXFxuIHtcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdGlmICh1bmxpa2VseSghbXNzX25vdykpXFxuK1xcdFxcdC8qIE5vIFRTTyBzaXppbmcgZGVjaXNpb24uIExldCBjYWxsZXIgYXBwbHkgaXRzIGxpbWl0cy4gKi9cXG4rXFx0XFx0cmV0dXJuIFUzMl9NQVg7XFxuK1xcdHJldHVybiB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9jb25nX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCBpbnQgZmxhZyxcXG5AQCAtMzIwLDcgKzMyMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIF9fYnBmX29wc190Y3BfY29uZ2VzdGlvbl9vcHMgPSB7XFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LFxcbiBcXHQuaW5fYWNrX2V2ZW50ID0gYnBmX3RjcF9jYV9pbl9hY2tfZXZlbnQsXFxuIFxcdC5wa3RzX2Fja2VkID0gYnBmX3RjcF9jYV9wa3RzX2Fja2VkLFxcbi1cXHQubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsXFxuK1xcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXFxuIFxcdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcXG4gXFx0LnVuZG9fY3duZCA9IGJwZl90Y3BfY2FfdW5kb19jd25kLFxcbiBcXHQuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2Jici5jIGIvbmV0L2lwdjQvdGNwX2Jici5jXFxuaW5kZXggODIzNzhhMmJmZDFlMS4uZWNmMTFiZTQ2ZjM4MiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYmJyLmNcXG5AQCAtMjk3LDExICsyOTcsMTggQEAgc3RhdGljIHZvaWQgYmJyX3NldF9wYWNpbmdfcmF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBidywgaW50IGdhaW4pXFxuIH1cXG4gXFxuIC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzICovXFxuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXFxuK3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0cmV0dXJuIFJFQURfT05DRShzay1cXHUwMDNlc2tfcGFjaW5nX3JhdGUpIFxcdTAwM2MgKGJicl9taW5fdHNvX3JhdGUgXFx1MDAzZVxcdTAwM2UgMykgPyAxIDogMjtcXG4gfVxcbiBcXG4rX19icGZfa2Z1bmMgc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcXG4re1xcbitcXHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxcbitcXHRcXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XFxuK1xcdHJldHVybiB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBiYnJfbWluX3Rzb19zZWdzKHNrKSk7XFxuK31cXG4rXFxuIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzX2dvYWwoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuIFxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbkBAIC0xMTUxLDcgKzExNTgsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfYmJyX2Nvbmdfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdC51bmRvX2N3bmRcXHQ9IGJicl91bmRvX2N3bmQsXFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0XFx0PSBiYnJfY3duZF9ldmVudF90eF9zdGFydCxcXG4gXFx0LnNzdGhyZXNoXFx0PSBiYnJfc3N0aHJlc2gsXFxuLVxcdC5taW5fdHNvX3NlZ3NcXHQ9IGJicl9taW5fdHNvX3NlZ3MsXFxuK1xcdC50c29fc2Vnc1xcdD0gYmJyX3Rzb19zZWdzLFxcbiBcXHQuZ2V0X2luZm9cXHQ9IGJicl9nZXRfaW5mbyxcXG4gXFx0LnNldF9zdGF0ZVxcdD0gYmJyX3NldF9zdGF0ZSxcXG4gfTtcXG5AQCAtMTE2Myw3ICsxMTcwLDcgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zbmRidWZfZXhwYW5kKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3VuZG9fY3duZClcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NzdGhyZXNoKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYmJyX21pbl90c29fc2VncylcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zZXRfc3RhdGUpXFxuIEJURl9LRlVOQ1NfRU5EKHRjcF9iYnJfY2hlY2tfa2Z1bmNfaWRzKVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX291dHB1dC5jIGIvbmV0L2lwdjQvdGNwX291dHB1dC5jXFxuaW5kZXggZDdjMTQ0NGI1ZTMwNC4uZDliZGEzYTg0ZjI2MSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcXG5AQCAtMjI1Myw4ICsyMjUzLDggQEAgc3RhdGljIGJvb2wgdGNwX25hZ2xlX2NoZWNrKGJvb2wgcGFydGlhbCwgY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCxcXG4gICogZm9yIGV2ZXJ5IDJeOSB1c2VjIChha2EgNTEyIHVzKSBvZiBSVFQsIHNvIHRoYXQgdGhlIFJUVC1iYXNlZCBhbGxvd2FuY2VcXG4gICogaXMgYmVsb3cgMTUwMCBieXRlcyBhZnRlciA2ICogfjUwMCB1c2VjID0gM21zLlxcbiAgKi9cXG4tc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXFxuLVxcdFxcdFxcdCAgICBpbnQgbWluX3Rzb19zZWdzKVxcbit1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxcbitcXHRcXHQgICAgIGludCBtaW5fdHNvX3NlZ3MpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBieXRlcztcXG4gXFx0dTMyIHI7XFxuQEAgLTIyNjksNiArMjI2OSw3IEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxcbiBcXG4gXFx0cmV0dXJuIG1heF90KHUzMiwgYnl0ZXMgLyBtc3Nfbm93LCBtaW5fdHNvX3NlZ3MpO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0wodGNwX3Rzb19hdXRvc2l6ZSk7XFxuIFxcbiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWdtZW50cyB3ZSB3YW50IGluIHRoZSBza2Igd2UgYXJlIHRyYW5zbWl0dGluZy5cXG4gICogU2VlIGlmIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgd2FudHMgdG8gZGVjaWRlOyBvdGhlcndpc2UsIGF1dG9zaXplLlxcbkBAIC0yMjc4LDEyICsyMjc5LDEyIEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3cpXFxuIFxcdGNvbnN0IHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKmNhX29wcyA9IGluZXRfY3NrKHNrKS1cXHUwMDNlaWNza19jYV9vcHM7XFxuIFxcdHUzMiBtaW5fdHNvLCB0c29fc2VncztcXG4gXFxuLVxcdG1pbl90c28gPSBjYV9vcHMtXFx1MDAzZW1pbl90c29fc2VncyA/XFxuLVxcdFxcdFxcdGNhX29wcy1cXHUwMDNlbWluX3Rzb19zZWdzKHNrKSA6XFxuLVxcdFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xcbitcXHRtaW5fdHNvID0gUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7XFxuIFxcbi1cXHR0c29fc2VncyA9IHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xcbi1cXHRyZXR1cm4gbWluX3QodTMyLCB0c29fc2Vncywgc2stXFx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XFxuK1xcdHRzb19zZWdzID0gY2Ffb3BzLVxcdTAwM2V0c29fc2VncyA/XFxuK1xcdFxcdFxcdGNhX29wcy1cXHUwMDNldHNvX3NlZ3Moc2ssIG1zc19ub3cpIDpcXG4rXFx0XFx0XFx0dGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7XFxuK1xcdHJldHVybiBjbGFtcF90KHUzMiwgdHNvX3NlZ3MsIDEsIHNrLVxcdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xcbiB9XFxuIFxcbiAvKiBSZXR1cm5zIHRoZSBwb3J0aW9uIG9mIHNrYiB3aGljaCBjYW4gYmUgc2VudCByaWdodCBhd2F5ICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuY1xcbmluZGV4IDBhM2U5ZDM1YmY2ZjAuLjU4MjYyZTQ5MDMzNjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXFxuQEAgLTEwLDcgKzEwLDcgQEAgZXh0ZXJuIHUzMiBiYnJfc25kYnVmX2V4cGFuZChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBiYnJfY3duZF9ldmVudF90eF9zdGFydChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4gZXh0ZXJuIHUzMiBiYnJfc3N0aHJlc2goc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XFxuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4rZXh0ZXJuIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBiYnJfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKSBfX2tzeW07XFxuIFxcbiBleHRlcm4gdm9pZCBkY3RjcF9pbml0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xcbkBAIC05MCw5ICs5MCw5IEBAIHUzMiBCUEZfUFJPRyhzc3RocmVzaCwgc3RydWN0IHNvY2sgKnNrKVxcbiB9XFxuIFxcbiBTRUMoXFxcInN0cnVjdF9vcHNcXFwiKVxcbi11MzIgQlBGX1BST0cobWluX3Rzb19zZWdzLCBzdHJ1Y3Qgc29jayAqc2spXFxuK3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcXG4ge1xcbi1cXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XFxuK1xcdHJldHVybiBiYnJfdHNvX3NlZ3Moc2ssIG1zc19ub3cpO1xcbiB9XFxuIFxcbiBTRUMoXFxcInN0cnVjdF9vcHNcXFwiKVxcbkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XFxuIFxcdC5jd25kX2V2ZW50XFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gKHZvaWQgKiljd25kX2V2ZW50X3R4X3N0YXJ0LFxcbiBcXHQuc3N0aHJlc2hcXHQ9ICh2b2lkICopc3N0aHJlc2gsXFxuLVxcdC5taW5fdHNvX3NlZ3NcXHQ9ICh2b2lkICopbWluX3Rzb19zZWdzLFxcbitcXHQudHNvX3NlZ3NcXHQ9ICh2b2lkICopdHNvX3NlZ3MsXFxuIFxcdC5zZXRfc3RhdGVcXHQ9ICh2b2lkICopc2V0X3N0YXRlLFxcbiBcXHQucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsXFxuIFxcdC5uYW1lXFx0XFx0PSBcXFwidGNwX2NhX2tmdW5jXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MTguMDIwNTExMjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzAyODczMjk3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0NPTkdfQkJSXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF90c29fYXV0b3NpemVcIixcbiAgICBcImJicl90c29fc2Vnc1wiLFxuICAgIFwiYnBmX3RjcF9jYV90c29fc2Vnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmOWYyNjdmYWJiYmQwMTkyYTVjN2RjNjQ2NGFkMDM3NDRhZWFiOTcxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMDo0MjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC04MjQsNiArODI0LDkgQEAgdW5zaWduZWQgaW50IHRjcF9zeW5jX21zcyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBwbXR1KTtcbiB1bnNpZ25lZCBpbnQgdGNwX2N1cnJlbnRfbXNzKHN0cnVjdCBzb2NrICpzayk7XG4gdTMyIHRjcF9jbGFtcF9wcm9iZTBfdG9fdXNlcl90aW1lb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdTMyIHdoZW4pO1xuIFxuK3UzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4rXHRcdCAgICAgaW50IG1pbl90c29fc2Vncyk7XG4rXG4gLyogQm91bmQgTVNTIC8gVFNPIHBhY2tldCBzaXplIHdpdGggdGhlIGhhbGYgb2YgdGhlIHdpbmRvdyAqL1xuIHN0YXRpYyBpbmxpbmUgaW50IHRjcF9ib3VuZF90b19oYWxmX3duZChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCBpbnQgcGt0c2l6ZSlcbiB7XG5AQCAtMTM2MSw4ICsxMzY0LDEzIEBAIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xuIFx0LyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi9cbiBcdHZvaWQgKCpwa3RzX2Fja2VkKShzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBhY2tfc2FtcGxlICpzYW1wbGUpO1xuIFxuLVx0Lyogb3ZlcnJpZGUgc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MgKG9wdGlvbmFsKSAqL1xuLVx0dTMyICgqbWluX3Rzb19zZWdzKShzdHJ1Y3Qgc29jayAqc2spO1xuK1x0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXG4rXHQgKlxuK1x0ICogSWYgcHJvdmlkZWQsIHRoaXMgY2FsbGJhY2sgcmV0dXJucyB0aGUgZmluYWwgVFNPIHNlZ21lbnQgbnVtYmVyXG4rXHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cbitcdCAqIG11c3QgZGVyaXZlIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGFuZCBlbnN1cmUgdGhlIHJlc3VsdCBpcyB2YWxpZC5cbitcdCAqL1xuK1x0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xuIFxuIFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXG4gXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuKysrIGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXG5AQCAtMjg0LDkgKzI4NCwxMiBAQCBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcFxuIHtcbiB9XG4gXG4tc3RhdGljIHUzMiBicGZfdGNwX2NhX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4rc3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4ge1xuLVx0cmV0dXJuIDA7XG4rXHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxuK1x0XHQvKiBObyBUU08gc2l6aW5nIGRlY2lzaW9uLiBMZXQgY2FsbGVyIGFwcGx5IGl0cyBsaW1pdHMuICovXG4rXHRcdHJldHVybiBVMzJfTUFYO1xuK1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLFxuQEAgLTMyMCw3ICszMjMsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnQgPSBicGZfdGNwX2NhX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuaW5fYWNrX2V2ZW50ID0gYnBmX3RjcF9jYV9pbl9hY2tfZXZlbnQsXG4gXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcbi1cdC5taW5fdHNvX3NlZ3MgPSBicGZfdGNwX2NhX21pbl90c29fc2VncyxcbitcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXG4gXHQuY29uZ19jb250cm9sID0gYnBmX3RjcF9jYV9jb25nX2NvbnRyb2wsXG4gXHQudW5kb19jd25kID0gYnBmX3RjcF9jYV91bmRvX2N3bmQsXG4gXHQuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYmJyLmMgYi9uZXQvaXB2NC90Y3BfYmJyLmNcbmluZGV4IDgyMzc4YTJiZmQxZTEuLmVjZjExYmU0NmYzODIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmNcbisrKyBiL25ldC9pcHY0L3RjcF9iYnIuY1xuQEAgLTI5NywxMSArMjk3LDE4IEBAIHN0YXRpYyB2b2lkIGJicl9zZXRfcGFjaW5nX3JhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgYncsIGludCBnYWluKVxuIH1cbiBcbiAvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAqL1xuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4rc3RhdGljIHUzMiBiYnJfbWluX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRyZXR1cm4gUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3BhY2luZ19yYXRlKSBcdTAwM2MgKGJicl9taW5fdHNvX3JhdGUgXHUwMDNlXHUwMDNlIDMpID8gMSA6IDI7XG4gfVxuIFxuK19fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4re1xuK1x0aWYgKHVubGlrZWx5KCFtc3Nfbm93KSlcbitcdFx0cmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spO1xuK1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIGJicl9taW5fdHNvX3NlZ3Moc2spKTtcbit9XG4rXG4gc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3NfZ29hbChzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG5AQCAtMTE1MSw3ICsxMTU4LDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2Jicl9jb25nX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0LnVuZG9fY3duZFx0PSBiYnJfdW5kb19jd25kLFxuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnRcdD0gYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuc3N0aHJlc2hcdD0gYmJyX3NzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSBiYnJfbWluX3Rzb19zZWdzLFxuK1x0LnRzb19zZWdzXHQ9IGJicl90c29fc2VncyxcbiBcdC5nZXRfaW5mb1x0PSBiYnJfZ2V0X2luZm8sXG4gXHQuc2V0X3N0YXRlXHQ9IGJicl9zZXRfc3RhdGUsXG4gfTtcbkBAIC0xMTYzLDcgKzExNzAsNyBAQCBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NuZGJ1Zl9leHBhbmQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl91bmRvX2N3bmQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc3N0aHJlc2gpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9taW5fdHNvX3NlZ3MpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NldF9zdGF0ZSlcbiBCVEZfS0ZVTkNTX0VORCh0Y3BfYmJyX2NoZWNrX2tmdW5jX2lkcylcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbmluZGV4IGQ3YzE0NDRiNWUzMDQuLmQ5YmRhM2E4NGYyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbisrKyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuY1xuQEAgLTIyNTMsOCArMjI1Myw4IEBAIHN0YXRpYyBib29sIHRjcF9uYWdsZV9jaGVjayhib29sIHBhcnRpYWwsIGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAsXG4gICogZm9yIGV2ZXJ5IDJeOSB1c2VjIChha2EgNTEyIHVzKSBvZiBSVFQsIHNvIHRoYXQgdGhlIFJUVC1iYXNlZCBhbGxvd2FuY2VcbiAgKiBpcyBiZWxvdyAxNTAwIGJ5dGVzIGFmdGVyIDYgKiB+NTAwIHVzZWMgPSAzbXMuXG4gICovXG4tc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4tXHRcdFx0ICAgIGludCBtaW5fdHNvX3NlZ3MpXG4rdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbitcdFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgYnl0ZXM7XG4gXHR1MzIgcjtcbkBAIC0yMjY5LDYgKzIyNjksNyBAQCBzdGF0aWMgdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbiBcbiBcdHJldHVybiBtYXhfdCh1MzIsIGJ5dGVzIC8gbXNzX25vdywgbWluX3Rzb19zZWdzKTtcbiB9XG4rRVhQT1JUX1NZTUJPTCh0Y3BfdHNvX2F1dG9zaXplKTtcbiBcbiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWdtZW50cyB3ZSB3YW50IGluIHRoZSBza2Igd2UgYXJlIHRyYW5zbWl0dGluZy5cbiAgKiBTZWUgaWYgY29uZ2VzdGlvbiBjb250cm9sIG1vZHVsZSB3YW50cyB0byBkZWNpZGU7IG90aGVyd2lzZSwgYXV0b3NpemUuXG5AQCAtMjI3OCwxMiArMjI3OSwxMiBAQCBzdGF0aWMgdTMyIHRjcF90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93KVxuIFx0Y29uc3Qgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2Ffb3BzID0gaW5ldF9jc2soc2spLVx1MDAzZWljc2tfY2Ffb3BzO1xuIFx0dTMyIG1pbl90c28sIHRzb19zZWdzO1xuIFxuLVx0bWluX3RzbyA9IGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3MgP1xuLVx0XHRcdGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3Moc2spIDpcbi1cdFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuK1x0bWluX3RzbyA9IFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7XG4gXG4tXHR0c29fc2VncyA9IHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xuLVx0cmV0dXJuIG1pbl90KHUzMiwgdHNvX3NlZ3MsIHNrLVx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XG4rXHR0c29fc2VncyA9IGNhX29wcy1cdTAwM2V0c29fc2VncyA/XG4rXHRcdFx0Y2Ffb3BzLVx1MDAzZXRzb19zZWdzKHNrLCBtc3Nfbm93KSA6XG4rXHRcdFx0dGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7XG4rXHRyZXR1cm4gY2xhbXBfdCh1MzIsIHRzb19zZWdzLCAxLCBzay1cdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xuIH1cbiBcbiAvKiBSZXR1cm5zIHRoZSBwb3J0aW9uIG9mIHNrYiB3aGljaCBjYW4gYmUgc2VudCByaWdodCBhd2F5ICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXG5pbmRleCAwYTNlOWQzNWJmNmYwLi41ODI2MmU0OTAzMzY0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbkBAIC0xMCw3ICsxMCw3IEBAIGV4dGVybiB1MzIgYmJyX3NuZGJ1Zl9leHBhbmQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB1MzIgYmJyX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcbitleHRlcm4gdTMyIGJicl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYmJyX3NldF9zdGF0ZShzdHJ1Y3Qgc29jayAqc2ssIHU4IG5ld19zdGF0ZSkgX19rc3ltO1xuIFxuIGV4dGVybiB2b2lkIGRjdGNwX2luaXQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG5AQCAtOTAsOSArOTAsOSBAQCB1MzIgQlBGX1BST0coc3N0aHJlc2gsIHN0cnVjdCBzb2NrICpzaylcbiB9XG4gXG4gU0VDKFwic3RydWN0X29wc1wiKVxuLXUzMiBCUEZfUFJPRyhtaW5fdHNvX3NlZ3MsIHN0cnVjdCBzb2NrICpzaylcbit1MzIgQlBGX1BST0codHNvX3NlZ3MsIHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4ge1xuLVx0cmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spO1xuK1x0cmV0dXJuIGJicl90c29fc2VncyhzaywgbXNzX25vdyk7XG4gfVxuIFxuIFNFQyhcInN0cnVjdF9vcHNcIilcbkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XG4gXHQuY3duZF9ldmVudFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXG4gXHQuY3duZF9ldmVudF90eF9zdGFydCA9ICh2b2lkICopY3duZF9ldmVudF90eF9zdGFydCxcbiBcdC5zc3RocmVzaFx0PSAodm9pZCAqKXNzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSAodm9pZCAqKW1pbl90c29fc2VncyxcbitcdC50c29fc2Vnc1x0PSAodm9pZCAqKXRzb19zZWdzLFxuIFx0LnNldF9zdGF0ZVx0PSAodm9pZCAqKXNldF9zdGF0ZSxcbiBcdC5wa3RzX2Fja2VkICAgICA9ICh2b2lkICopcGt0c19hY2tlZCxcbiBcdC5uYW1lXHRcdD0gXCJ0Y3BfY2Ffa2Z1bmNcIixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjE4LjAyMDUxMjczNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQ1MjkwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIENvbmdlc3Rpb24gQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgdGhlIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgY29kZSwgd2hpY2ggYWx3YXlzIHdhcnJhbnRzIGNsb3NlIGF0dGVudGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlcGxhY2luZyBgbWluX3Rzb19zZWdzYCB3aXRoIGB0c29fc2Vnc2Agd2l0aGluIHRoZSBgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wc2AuIFRoYXQgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGludGVyYWN0LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzd2FwIGlzIGNyaXRpY2FsLiBJdCdzIG1vZGlmaWVkIHNldmVyYWwga2V5IGZpbGVzOiBgYnBmX3RjcF9jYS5jYCwgYHRjcF9iYnIuY2AsIGFuZCBgdGNwX291dHB1dC5jYCwgcGx1cyBhIEJQRiBzZWxmdGVzdC4gVGhlIHBhdGNoIGFsc28gZXhwb3NlcyBgdGNwX3Rzb19hdXRvc2l6ZWAgYW5kIGFkanVzdHMgYHRjcF90c29fc2Vnc2AgdG8gdXNlIGB0c29fc2Vnc2Agd2hlbiBpdCdzIGF2YWlsYWJsZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICp1c2VkKj8gSXMgdGhpcyBmdW5jdGlvbmFsbHkgY29ycmVjdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBpbiB0aGUgY29kZSBhbmQgdGhhdCBpdCBiZWhhdmVzIGFzIGV4cGVjdGVkLiBRdWlja2x5IGNoZWNraW5nLCBJIHNlZSB0aGF0IGB0Y3BfdHNvX3NlZ3NgICppcyogY2FsbGVkIGluIHRoZSBUQ1Agb3V0cHV0IHBhdGgsIHdoaWNoIGlzIGdvb2QuIFRoYXQgY29uZmlybXMgdGhhdCBpdCdzIGEgcmVsZXZhbnQgcGFydCBvZiB0aGUgZmxvdy4gQW5kIGl0IGxvb2tzIGxpa2UgYGJicl90c29fc2Vnc2AgaGFzIGJlZW4gaW50cm9kdWNlZCBhcyB0aGUgbmV3IGNhbGxiYWNrIGZvciBCQlIsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgdGhlIG5ldyBjYWxsYmFjayBmb3IgQlBGLlxuXG5Ob3csIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byBrbm93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcy4gVGltZSB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIHNlYXJjaCBmb3IgYFRDUF9DT05HX0JCUmAgdG8gc2VlIGhvdyBCQlIgaXMgZW5hYmxlZCBhbmQgYWxzbyBgQlBGX1NZU0NBTExgIChvciBzb21ldGhpbmcgc2ltaWxhcikgdG8gY29uZmlybSBob3cgQlBGIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaXMgaGFuZGxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHByZXZhbGVudCB0aGVzZSBjaGFuZ2VzIGFyZSwgYW5kIGhvdyB0aGV5IGFyZSBlbmFibGVkIHdpdGhpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDIzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MjMuMDg1MDQ0MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDczMzcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVENQX0NPTkdfQkJSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNjY1LVxcbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcXG5uZXQvaXB2NC9LY29uZmlnLTY2Ny1cXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MjQuODg1NzgyOTc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1Mzg2NTY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIEJCUiBhbmQgQlBGIGluIHRoZSBMaW51eCBLZXJuZWwqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBicGZfdGNwX2NhLmNgIGFuZCB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGp1bXAgaW50byB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbnMgb2YgYm90aCBgVENQX0NPTkdfQkJSYCAod2hpY2ggZW5hYmxlcyBCQlIgYXMgYSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtKSBhbmQgYEJQRl9TWVNDQUxMYCwgc2luY2UgQlBGIGlzIGVzc2VudGlhbCB0byB0aGUgYGJwZl90Y3BfY2EuY2AgY29kZSwgYXMgSSBzdXNwZWN0LiBJZiBgVENQX0NPTkdfQkJSYCBpc24ndCBlbmFibGVkLCB0aGUgZmlsZSB3b24ndCBiZSB1c2VkLCBidXQgaWYgaXQgaXMsIEkgY2FuIGRldGVybWluZSBob3cgdGhpcyBpcyBsaW5rZWQuIEFuZCBpZiBgQlBGX1NZU0NBTExgIGlzbid0IGVuYWJsZWQsIHRoZW4gSSBuZWVkIHRvIGtub3cgd2h5IHRoZSBgYnBmX3RjcF9jYS5jYCBjb2RlIHN0aWxsIGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmZWF0dXJlIGdhdGVzIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBzbyB0aGF0IEkgY2FuIHNlZSBob3cgdGhlc2UgdHdvIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBwcm9wZXIgY29udGV4dCBmb3IgdGhlIHJlc3Qgb2YgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjI4LjQzOTY1MTI4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk4OTUyMTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90Y3BfY2FcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NzE9aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcXG5uZXQvaXB2NC9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl90Y3BfY2Eub1xcbm5ldC9pcHY0L01ha2VmaWxlLTczLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjMwLjYzODYxMDcyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTQxMTczNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBCUEYgYW5kIEJCUiBNb2R1bGVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBidWlsZGluZyB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBJIGtub3cgSSBuZWVkIGEgY291cGxlIG9mIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGVkLiBGaXJzdCBhbmQgZm9yZW1vc3QsIGZvciB0aGF0IGBicGZfdGNwX2NhLmNgIG1vZHVsZSwgSSBhYnNvbHV0ZWx5IHJlcXVpcmUgYm90aCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIG5vbi1uZWdvdGlhYmxlOyBubyBCUEYgd2l0aG91dCB0aG9zZS5cblxuQW5kIHRoZW4gZm9yIHRoZSBgdGNwX2Jici5jYCBtb2R1bGUsIGBDT05GSUdfVENQX0NPTkdfQkJSYCBpcywgb2YgY291cnNlLCBlc3NlbnRpYWwuIFRoYXQncyBhIGdpdmVuLlxuXG5Ob3csIEknbSBqdXN0IHF1aWNrbHkgY2hlY2tpbmcgc29tZXRoaW5nIGVsc2UsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHRjcF90c29fc2Vnc2AgdmFyaWFibGUgaW4gYG5ldC9pcHY0L3RjcF9vdXRwdXQuY2AuIEp1c3Qgd2FudCB0byBjb25maXJtIHRoYXQncyBiZWhhdmluZyBhcyBleHBlY3RlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJ20gZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMjYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MjozMy43OTI3MzAxMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1ODk2NTc5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdHNvX3NlZ3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfY29ubmVjdGlvbl9zb2NrLnJzdD0yMT11MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY3NrX3BtdHVfY29va2llICAgICAgIHJlYWRfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc3luY19tc3MsdGNwX2N1cnJlbnRfbXNzLHRjcF8uLi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9jb25uZWN0aW9uX3NvY2sucnN0OjIyOnN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgICAgICAgICAgIGljc2tfY2Ffb3BzICAgICAgICAgICAgcmVhZF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9jd25kX3ZhbGlkYXRlLHRjcF90c29fc2Vncyx0Yy4uLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9pbmV0X2Nvbm5lY3Rpb25fc29jay5yc3QtMjMtc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyAgaWNza19hZl9vcHMgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2ZpbmlzaF9jb25uZWN0LHRjcF9zZW5kX3N5bl9kLi4uXFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MjI3Mj1FWFBPUlRfU1lNQk9MKHRjcF90c29fYXV0b3NpemUpO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTIyNzYtICovXFxubmV0L2lwdjQvdGNwX291dHB1dC5jOjIyNzc6c3RhdGljIHUzMiB0Y3BfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdylcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3OC17XFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9Mjk2NT1zdGF0aWMgYm9vbCB0Y3Bfd3JpdGVfeG1pdChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LCBpbnQgbm9uYWdsZSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0yOTkyLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyOTkzOlxcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCBtc3Nfbm93KTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjk5NC1cXHR3aGlsZSAoKHNrYiA9IHRjcF9zZW5kX2hlYWQoc2spKSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTM3MjY9dm9pZCB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNzM5LVxcdHNrYiA9IHRwLVxcdTAwM2VyZXRyYW5zbWl0X3NrYl9oaW50ID86IHJ0eF9oZWFkO1xcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzozNzQwOlxcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCB0Y3BfY3VycmVudF9tc3Moc2spKTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMzc0MS1cXHRza2JfcmJ0cmVlX3dhbGtfZnJvbShza2IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MzUuNDUxNzAxNjU5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NTU4NTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBQcmlvcml0aXphdGlvbiBmb3IgVENQIFRTTyBTZWdtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBtb2RpZmljYXRpb25zIHRvIHRoZSBUQ1AgVFNPIHNlZ21lbnRhdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGB0Y3BfdHNvX3NlZ3NgLiBUaGlzIGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgZ2V0IGNhbGxlZCBmcm9tIHNvbWUgcmVhbGx5IGhvdCBjb2RlIHBhdGhzIOKAkyBgdGNwX3dyaXRlX3htaXRgIGFuZCBgdGNwX3htaXRfcmV0cmFuc21pdF9xdWV1ZWAg4oCTIHNvIGFueSBidWdzIGhlcmUgYXJlIGdvaW5nIHRvIGJlIGltcGFjdGZ1bC5cblxuVGhlIHBhdGNoIHRvdWNoZXMgYHRjcF90c29fYXV0b3NpemVgLCBgYmJyX3Rzb19zZWdzYCwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLCBhbmQgYHRjcF90c29fc2Vnc2AgZGlyZWN0bHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHByaW9yaXRpemUgZnV6emluZyB0aG9zZSBmdW5jdGlvbnMuIEJ1dCB3YWl0LCBsZXQncyB0aGluayBhYm91dCB0aGlzIHN0cmF0ZWdpY2FsbHkuXG5cbmB0Y3BfdHNvX2F1dG9zaXplYCBpcyBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBtYWtlcyBpdCBhIGRpc3RpbmN0IHN5bWJvbCBhbmQgdGhlcmVmb3JlIGFuIGVhc2llciB0YXJnZXQgZm9yIGZ1enplcnMuIGBiYnJfdHNvX3NlZ3NgIGlzIHN0YXRpYywgd2hpY2ggaXMgdXN1YWxseSBhIHBhaW4sIGJ1dCBpdCdzIG1hcmtlZCBhcyBgX19icGZfa2Z1bmNgLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGF0J3MgYSBodWdlIHdpbiDigJMgaXQncyBhIGRpc3RpbmN0IHN5bWJvbCwganVzdCBsaWtlIHRoZSBleHBvcnRlZCBvbmUhIEFuZCB0aGVuIHdlIGhhdmUgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLCB3aGljaCBpcyBzdGF0aWMuIEZpbmFsbHksIGB0Y3BfdHNvX3NlZ3NgIGlzIHN0YXRpYyBhcyB3ZWxsLlxuXG5TbywgbGV0J3MgemVybyBpbiBvbiBgYmJyX3Rzb19zZWdzYCBhbmQgYHRjcF90c29fYXV0b3NpemVgIHByaW1hcmlseS4gQmVjYXVzZSwgd2hpbGUgc3RhdGljIGZ1bmN0aW9ucyBhcmUgaGFyZGVyIHRvIGRpcmVjdGx5IHRhcmdldCwgdGhlIGBfX2JwZl9rZnVuY2AgbWVhbnMgYGJicl90c29fc2Vnc2AgaXNuJ3QgaW5saW5lZCwgc28gaXQncyB0YXJnZXRhYmxlLiBOb3csIHRoYXQgbGVhdmVzIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBhcyB0aGUgZmluYWwgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6NDAuOTI3MjkwOTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0ODY3MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90Y3BfY2FfdHNvX3NlZ3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvYnBmX3RjcF9jYS5jPTI4Mz1zdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKVxcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTI4Ni1cXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6Mjg3OnN0YXRpYyB1MzIgYnBmX3RjcF9jYV90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KVxcbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0yODgte1xcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jPTMxOD1zdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNS1cXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6MzI2OlxcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNy1cXHQuY29uZ19jb250cm9sID0gYnBmX3RjcF9jYV9jb25nX2NvbnRyb2wsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjQyLjU0MjE2ODg1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjczNjE5Nzg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVFNPIFNlZ21lbnQgQ2FsY3VsYXRpb24gaW4gVENQKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgVENQIFRTTyBzZWdtZW50IHNpemluZyBsb2dpYy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQsIG9yIGF0IGxlYXN0IGEgc3RhbmRhbG9uZSB2ZXJzaW9uIHdpbGwgZXhpc3QuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUuXG5cblRoZXJlZm9yZSwgSSB0aG91Z2h0IHRoZSBtYWluIGFyZWFzIHRvIGxvb2sgYXQgd2VyZSBpbml0aWFsbHkgYHRjcF90c29fYXV0b3NpemVgLCBgYmJyX3Rzb19zZWdzYCwgYW5kIG9mIGNvdXJzZSwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLlxuXG5UaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgY2FsbGVkIGZyb20gYHRjcF90c29fc2Vnc2AgYW5kIGluIHR1cm4sIGB0Y3Bfd3JpdGVfeG1pdGAuIGB0Y3Bfd3JpdGVfeG1pdGAgaXMgYSBob3RzcG90LCBhbmQgd2hpbGUgYHRjcF90c29fYXV0b3NpemVgIGlzIFRTTyBzaXppbmcgc3BlY2lmaWMsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBza2V3LiBXaGlsZSBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgc3BlY2lmaWMgdG8gVFNPIHNpemluZywgSSBkZWNpZGVkIHRvIGNoZWNrLiBIb3dldmVyLCBJdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0IGlmIFRTTyBpcyBlbmFibGVkLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIGEgaG90IHBhdGguXG5cbkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGJ5IGV4cG9ydGluZyBpdC4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uLCB0aG91Z2gsIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgcmVhbCBjaGFuZ2VzIGFyZSBpbiBgdGNwX3Rzb19zZWdzYCB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sJ3MgYG1pbl90c29fc2Vnc2AgaXMgaGFuZGxlZC4gIE5vdywgdGhlIGBiYnJfdHNvX3NlZ3NgIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgZnVuY3Rpb25zIGFyZSBuZXcuXG5cbkNvbnNpZGVyaW5nIHRoaXMsIHRoZSBmb2N1cyByZWFsbHkgc2hvdWxkIGJlIG9uIGBiYnJfdHNvX3NlZ3NgIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AuIGBiYnJfdHNvX3NlZ3NgIGlzIGZvciBCQlIgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBmb3IgQlBGIGNvbmdlc3Rpb24gY29udHJvbCwgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIGdlbmVyaWMuXG5cbmBiYnJfdHNvX3NlZ3NgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYywgYnV0IHRoZSBgX19icGZfa2Z1bmNgIHNwZWNpZmllciBjYW4gcHJldmVudCBpbmxpbmluZy4gSG93ZXZlciwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQgZWl0aGVyLlxuXG5CZWNhdXNlIGB0Y3BfdHNvX2F1dG9zaXplYCBpc24ndCBmdW5jdGlvbmFsbHkgY2hhbmdlZCwgbGV0J3Mga2VlcCB0aGUgcHJpbWFyeSBmb2N1cyBvbiBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLiBJJ2xsIGFsc28gYWRkIGB0Y3BfdHNvX3NlZ3NgIGFzIHdlbGwuIFNpbmNlIGB0Y3BfdHNvX3NlZ3NgIGlzIHN0YXRpYywgaXQgbWlnaHQgYmUgaW5saW5lZCBpbnRvIGB0Y3Bfd3JpdGVfeG1pdGAgYW5kIGB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlYCwgYW5kIHdpbGwgYmUgaW1wb3J0YW50IHRvIG9ic2VydmUuXG5cblNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBhbmFseXNpczogYFRDUF9DT05HX0JCUmAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgQlBGX0pJVGAuIEkgc2hvdWxkIGFsc28gdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRDUF9DT05HX0JCUmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjU1LjI3ODM2OTM4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjIxNzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVENQX0NPTkdfQkJSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNjY1LVxcbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcXG5uZXQvaXB2NC9LY29uZmlnLTY2Ny1cXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6NTcuMzkwNTkzMDU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzcyMDk1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgSVB2NCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBJUHY0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9pcHY0L0tjb25maWdgIOKAkyBzaG91bGQgYmUgdGhlIG1vc3QgY29tcHJlaGVuc2l2ZSBzb3VyY2UuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcsIHNvIEknbSBuYXZpZ2F0aW5nIHRvIGxpbmUgNjY2IChvciB0aGVyZWFib3V0cykgYXMgYSBzdGFydGluZyBwb2ludC4gVGhhdCBnZW5lcmFsIGFyZWEgb2Z0ZW4gaG91c2VzIHNvbWUganVpY3kgZGV0YWlscy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWV0aGluZyBzcGVjaWZpYyB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMgYXJlIGRlZmluZWQgYXQgdGhhdCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MzowMS44Mjc4MDU0NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NjA6XFx0XFxuIDY2MTpcXHRcXHQgIEZvciBmdXJ0aGVyIGRldGFpbHMgc2VlOlxcbiA2NjI6XFx0XFx0ICAgIEQuQS4gSGF5ZXMgYW5kIEcuIEFybWl0YWdlLiBcXFwiUmV2aXNpdGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIHVzaW5nXFxuIDY2MzpcXHRcXHQgICAgZGVsYXkgZ3JhZGllbnRzLlxcXCIgSW4gTmV0d29ya2luZyAyMDExLiBQcmVwcmludDpcXG4gNjY0OlxcdFxcdCAgICBodHRwOi8vY2FpYS5zd2luLmVkdS5hdS9jdi9kYWhheWVzL2NvbnRlbnQvbmV0d29ya2luZzIwMTEtY2RnLXByZXByaW50LnBkZlxcbiA2NjU6XFx0XFxuIDY2NjpcXHRjb25maWcgVENQX0NPTkdfQkJSXFxuIDY2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG4gNjY4OlxcdFxcdGRlZmF1bHQgblxcbiA2Njk6XFx0XFx0aGVscFxcbiA2NzA6XFx0XFxuIDY3MTpcXHRcXHQgIEJCUiAoQm90dGxlbmVjayBCYW5kd2lkdGggYW5kIFJUVCkgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhaW1zIHRvXFxuIDY3MjpcXHRcXHQgIG1heGltaXplIG5ldHdvcmsgdXRpbGl6YXRpb24gYW5kIG1pbmltaXplIHF1ZXVlcy4gSXQgYnVpbGRzIGFuIGV4cGxpY2l0XFxuIDY3MzpcXHRcXHQgIG1vZGVsIG9mIHRoZSBib3R0bGVuZWNrIGRlbGl2ZXJ5IHJhdGUgYW5kIHBhdGggcm91bmQtdHJpcCBwcm9wYWdhdGlvblxcbiA2NzQ6XFx0XFx0ICBkZWxheS4gSXQgdG9sZXJhdGVzIHBhY2tldCBsb3NzIGFuZCBkZWxheSB1bnJlbGF0ZWQgdG8gY29uZ2VzdGlvbi4gSXRcXG4gNjc1OlxcdFxcdCAgY2FuIG9wZXJhdGUgb3ZlciBMQU4sIFdBTiwgY2VsbHVsYXIsIHdpZmksIG9yIGNhYmxlIG1vZGVtIGxpbmtzLiBJdCBjYW5cXG4gNjc2OlxcdFxcdCAgY29leGlzdCB3aXRoIGZsb3dzIHRoYXQgdXNlIGxvc3MtYmFzZWQgY29uZ2VzdGlvbiBjb250cm9sLCBhbmQgY2FuXFxuIDY3NzpcXHRcXHQgIG9wZXJhdGUgd2l0aCBzaGFsbG93IGJ1ZmZlcnMsIGRlZXAgYnVmZmVycywgYnVmZmVyYmxvYXQsIHBvbGljZXJzLCBvclxcbiA2Nzg6XFx0XFx0ICBBUU0gc2NoZW1lcyB0aGF0IGRvIG5vdCBwcm92aWRlIGEgZGVsYXkgc2lnbmFsLiBJdCByZXF1aXJlcyB0aGUgZnFcXG4gNjc5OlxcdFxcdCAgKFxcXCJGYWlyIFF1ZXVlXFxcIikgcGFjaW5nIHBhY2tldCBzY2hlZHVsZXIuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjAxLjgyNzg4NDUzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5MzExMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBCUEYgYW5kIFRDUCBDb25nZXN0aW9uIENvbnRyb2wqKlxuXG5SaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgZm9jdXNpbmcgb24gdGhlIGBUQ1BfQ09OR19CQlJgIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0uIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgYW55IHVudXN1YWwgb3Igc3BlY2lhbGl6ZWQgZGVwZW5kZW5jaWVzIGZvciAqdGhhdCogc3BlY2lmaWNhbGx5LiBJdCdzIHVzdWFsbHkgcHJldHR5IHNlbGYtY29udGFpbmVkLCBhbmQgSSd2ZSB3b3JrZWQgd2l0aCBpdCBlbm91Z2ggdG8ga25vdyB0aGUgY29tbW9uIHBpdGZhbGxzIGFuZCBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbi4uLiBsZXQncyBzaGlmdCBnZWFycyBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMsIHNwZWNpZmljIEJQRiBoZWxwZXJzLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgKm1pZ2h0KiBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIHBvdGVudGlhbCBnb3RjaGFzIGFyZSBiZWZvcmUgSSB0cnkgdG8gaW50ZWdyYXRlIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MDQuOTc3MjAwMzk2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI5OTMwMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjA3LjEwNzEzNjQ1M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE2MzA3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyNy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBwcm9iYWJseSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGF0IGFyZWEuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQncyAqY29uZmlndXJhYmxlKiBhbmQgaG93IHRoYXQgY29uZmlndXJhYmlsaXR5IGlzIHByZXNlbnRlZC4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjEwLjMyMzQ0NjQ3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxcbiAgMjE6XFx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cXG4gIDIyOlxcdGNvbmZpZyBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXFxuICAyMzpcXHRcXHRib29sXFxuICAyNDpcXHRcXG4gIDI1OlxcdG1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTAuMzIzNTMxNTQyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzk5NTA4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIEJQRiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gaGFuZGxlIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBCUEYgbW9kdWxlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYEJQRl9TWVNDQUxMYCBmdW5jdGlvbmFsaXR5IGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgbm8gbmVlZCBmb3IgYW55IGV4dGVybmFsIGxpYnJhcmllcyBvciBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoZXJlLiBHb29kLiBNYWtlcyBkZXBsb3ltZW50IGEgbGl0dGxlIGVhc2llciwgYWx3YXlzIGEgcGx1cy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyBhcm91bmQgdGhlIEpJVCBjb21waWxlciwgYEJQRl9KSVRgLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgY291bGQgcG90ZW50aWFsbHkgZ2V0IGEgYml0IG1vcmUgY29tcGxleC4gTGV0J3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGZvciB0aGF0LiBUaW1lIHRvIHNjcnV0aW5pemUgdGhvc2UgSklUIGRlcGVuZGVuY2llcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU1NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTMuMzYzNDg2ODgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYxMjA1MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjE1LjYyNDY5ODM3MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk2MTE5MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEJQRiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGtlcm5lbC9icGYvS2NvbmZpZ2AuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGxpbmUgNDIgZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBwb2ludCwgbWF5YmUgd2hlcmUgdGhlIG1haW4gY29uZmlndXJhdGlvbiBibG9jayBzdGFydHMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgdG9wLWxldmVsIG9wdGlvbnMgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgQlBGIGZlYXR1cmVzLCBvciBwZXJoYXBzIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIEJQRiBpbnRlcnByZXRlci4gTXkgZ29hbCBpcyB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBvZiB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0sIHdoaWNoIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gaW52ZXN0aWdhdGluZyBpdHMgZnVuY3Rpb25hbGl0eSBvciBkZWJ1Z2dpbmcgYSByZWxhdGVkIGlzc3VlLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTkuNjIwODIwNzEyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzNTpcXHRcXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcXG4gIDM2OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxuICAzNzpcXHRcXHRkZWZhdWx0IG5cXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIHRoZSBicGYoKSBzeXN0ZW0gY2FsbCB0aGF0IGFsbG93cyB0byBtYW5pcHVsYXRlIEJQRiBwcm9ncmFtc1xcbiAgNDA6XFx0XFx0ICBhbmQgbWFwcyB2aWEgZmlsZSBkZXNjcmlwdG9ycy5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0Y29uZmlnIEJQRl9KSVRcXG4gIDQzOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBCUEZcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9DQlBGX0pJVCB8fCBIQVZFX0VCUEZfSklUXFxuICA0NjpcXHRcXHRzZWxlY3QgRVhFQ01FTVxcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBCUEYgcHJvZ3JhbXMgYXJlIG5vcm1hbGx5IGhhbmRsZWQgYnkgYSBCUEYgaW50ZXJwcmV0ZXIuIFRoaXMgb3B0aW9uXFxuICA0OTpcXHRcXHQgIGFsbG93cyB0aGUga2VybmVsIHRvIGdlbmVyYXRlIG5hdGl2ZSBjb2RlIHdoZW4gYSBwcm9ncmFtIGlzIGxvYWRlZFxcbiAgNTA6XFx0XFx0ICBpbnRvIHRoZSBrZXJuZWwuIFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IHNwZWVkLXVwIHByb2Nlc3Npbmcgb2YgQlBGXFxuICA1MTpcXHRcXHQgIHByb2dyYW1zLlxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIE5vdGUsIGFuIGFkbWluIHNob3VsZCBlbmFibGUgdGhpcyBmZWF0dXJlIGNoYW5naW5nOlxcbiAgNTQ6XFx0XFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTkuNjIwODk3NTQyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NTgyMzg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNwZWNpZmljYWxseSBpbnRyb2R1Y2luZyBhIG1lY2hhbmlzbSB0byBvdmVycmlkZSBgdGNwX3Rzb19hdXRvc2l6ZWAgdXNpbmcgYSBgdHNvX3NlZ3NgIGNhbGxiYWNrLiBUaGUgaW1wbGVtZW50YXRpb24gdGFyZ2V0cyBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLCBzbyB0aG9zZSBhcmUga2V5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZWVkIHByZXNlbnQgYW5kIGFjY2Vzc2libGUg4oCTIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgcmVsZXZhbnQgc3ltYm9sczogYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gT2theSwgYGJicl90c29fc2Vnc2AgaXMgbWFya2VkIGFzIHN0YXRpYywgYnV0IGl0J3MgYWxzbyBhIGBfX2JwZl9rZnVuY2AuIEFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgYWxzbyBzdGF0aWMuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBtZWFuaW5nZnVsbHkgZm9jdXMgb24gdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0J3MgcG9zc2libGUgaWYgdGhleSBhcmUgbm90IGlubGluZWQuXG5cbkxldCdzIHNlZS4gYGJicl90c29fc2Vnc2AgaXMgYSBrZnVuYywgd2hpY2ggbWVhbnMgaXQgaXNuJ3QgaW5saW5lZC4gR29vZC4gQWxzbywgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggZ2VuZXJhbGx5IHByZXZlbnRzIGlubGluaW5nIHRvby4gRXhjZWxsZW50LiBGaW5hbGx5LCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQgaXNuJ3QgaW5saW5lZCBlaXRoZXIuIFRoaXMgaXMgdGhlIHRyaWZlY3RhIVxuXG5UaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGB0Y3BfdHNvX2F1dG9zaXplYCwgYGJicl90c29fc2Vnc2AsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaW4gbXkgYW5hbHlzaXMuXG5cbk5vdywgdG8gZ2V0IHRoaXMgdXAgYW5kIHJ1bm5pbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6XG5cbiogICBgVENQX0NPTkdfQkJSYFxuKiAgIGBCUEZfU1lTQ0FMTGBcbiogICBgQlBGX0pJVGBcblxuSG9sZCBvbiwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQlBGX0pJVGAgaXMgYWN0dWFsbHkgcmVxdWlyZWQuIExldCBtZSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYC4gQWgsIHRoZXJlIGl0IGlzOlxuXG5gYGBcbmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl90Y3BfY2Eub1xuZW5kaWZcbmBgYFxuXG5TbywgYEJQRl9KSVRgICppcyogYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBHcmVhdCwgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ3OSwiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MzoyOC4xNzkxMzk3MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg2OTY0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRDUF9DT05HX0JCUlwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdHNvX2F1dG9zaXplXCIsXG4gICAgXCJiYnJfdHNvX3NlZ3NcIixcbiAgICBcImJwZl90Y3BfY2FfdHNvX3NlZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGJ5IHJlcGxhY2luZyBtaW5fdHNvX3NlZ3Mgd2l0aCB0c29fc2VncyBjYWxsYmFjaywgYWxsb3dpbmcgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgdG8gZGlyZWN0bHkgZGljdGF0ZSB0aGUgVFNPIHNlZ21lbnQgc2l6ZS4gSXQgaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQ09OR19CQlJcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Rzb19hdXRvc2l6ZVwiLFxuICAgIFwiYmJyX3Rzb19zZWdzXCIsXG4gICAgXCJicGZfdGNwX2NhX3Rzb19zZWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 00:22:05 +0000 UTC FinishedAt: 2026-08-01 00:43:29 +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": "3441aa6109ac6eff5a28894dc5855e8af6513277", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_CONG_BBR", "BPF_SYSCALL", "BPF_JIT" ], "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": "3441aa6109ac6eff5a28894dc5855e8af6513277", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TCP_CONG_BBR", "BPF_SYSCALL", "BPF_JIT" ], "series_id": "c3916940-8df5-4e68-af58-2a91c932b264" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_tso_autosize", "bbr_tso_segs", "bpf_tcp_ca_tso_segs" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RDUF9DT05HX0JCUiYjMzQ7LAogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7LAogICAgJiMzNDtCUEZfSklUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX3Rzb19hdXRvc2l6ZSYjMzQ7LAogICAgJiMzNDtiYnJfdHNvX3NlZ3MmIzM0OywKICAgICYjMzQ7YnBmX3RjcF9jYV90c29fc2VncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGJ5IHJlcGxhY2luZyBtaW5fdHNvX3NlZ3Mgd2l0aCB0c29fc2VncyBjYWxsYmFjaywgYWxsb3dpbmcgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgdG8gZGlyZWN0bHkgZGljdGF0ZSB0aGUgVFNPIHNlZ21lbnQgc2l6ZS4gSXQgaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY5ZjI2N2ZhYmJiZDAxOTJhNWM3ZGM2NDY0YWQwMzc0NGFlYWI5NzFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjQyOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC04MjQsNiAmIzQzOzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7XG4gdW5zaWduZWQgaW50IHRjcF9jdXJyZW50X21zcyhzdHJ1Y3Qgc29jayAqc2spO1xuIHUzMiB0Y3BfY2xhbXBfcHJvYmUwX3RvX3VzZXJfdGltZW91dChjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHUzMiB3aGVuKTtcbiBcbiYjNDM7dTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbiYjNDM7XHRcdCAgICAgaW50IG1pbl90c29fc2Vncyk7XG4mIzQzO1xuIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi9cbiBzdGF0aWMgaW5saW5lIGludCB0Y3BfYm91bmRfdG9faGFsZl93bmQoc3RydWN0IHRjcF9zb2NrICp0cCwgaW50IHBrdHNpemUpXG4ge1xuQEAgLTEzNjEsOCAmIzQzOzEzNjQsMTMgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7XG4gXHQvKiBob29rIGZvciBwYWNrZXQgYWNrIGFjY291bnRpbmcgKG9wdGlvbmFsKSAqL1xuIFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XG4gXG4tXHQvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAob3B0aW9uYWwpICovXG4tXHR1MzIgKCptaW5fdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzayk7XG4mIzQzO1x0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXG4mIzQzO1x0ICpcbiYjNDM7XHQgKiBJZiBwcm92aWRlZCwgdGhpcyBjYWxsYmFjayByZXR1cm5zIHRoZSBmaW5hbCBUU08gc2VnbWVudCBudW1iZXJcbiYjNDM7XHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cbiYjNDM7XHQgKiBtdXN0IGRlcml2ZSBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBhbmQgZW5zdXJlIHRoZSByZXN1bHQgaXMgdmFsaWQuXG4mIzQzO1x0ICovXG4mIzQzO1x0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xuIFxuIFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXG4gXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXG5AQCAtMjg0LDkgJiM0MzsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBcbiB7XG4gfVxuIFxuLXN0YXRpYyB1MzIgYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrKVxuJiM0MztzdGF0aWMgdTMyIGJwZl90Y3BfY2FfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiB7XG4tXHRyZXR1cm4gMDtcbiYjNDM7XHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxuJiM0MztcdFx0LyogTm8gVFNPIHNpemluZyBkZWNpc2lvbi4gTGV0IGNhbGxlciBhcHBseSBpdHMgbGltaXRzLiAqL1xuJiM0MztcdFx0cmV0dXJuIFUzMl9NQVg7XG4mIzQzO1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLFxuQEAgLTMyMCw3ICYjNDM7MzIzLDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgX19icGZfb3BzX3RjcF9jb25nZXN0aW9uX29wcyA9IHtcbiBcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LFxuIFx0LmluX2Fja19ldmVudCA9IGJwZl90Y3BfY2FfaW5fYWNrX2V2ZW50LFxuIFx0LnBrdHNfYWNrZWQgPSBicGZfdGNwX2NhX3BrdHNfYWNrZWQsXG4tXHQubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsXG4mIzQzO1x0LnRzb19zZWdzID0gYnBmX3RjcF9jYV90c29fc2VncyxcbiBcdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcbiBcdC51bmRvX2N3bmQgPSBicGZfdGNwX2NhX3VuZG9fY3duZCxcbiBcdC5zbmRidWZfZXhwYW5kID0gYnBmX3RjcF9jYV9zbmRidWZfZXhwYW5kLFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9iYnIuYyBiL25ldC9pcHY0L3RjcF9iYnIuY1xuaW5kZXggODIzNzhhMmJmZDFlMS4uZWNmMTFiZTQ2ZjM4MiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3RjcF9iYnIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2Jici5jXG5AQCAtMjk3LDExICYjNDM7Mjk3LDE4IEBAIHN0YXRpYyB2b2lkIGJicl9zZXRfcGFjaW5nX3JhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgYncsIGludCBnYWluKVxuIH1cbiBcbiAvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAqL1xuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0cmV0dXJuIFJFQURfT05DRShzay1cdTAwM2Vza19wYWNpbmdfcmF0ZSkgXHUwMDNjIChiYnJfbWluX3Rzb19yYXRlIFx1MDAzZVx1MDAzZSAzKSA/IDEgOiAyO1xuIH1cbiBcbiYjNDM7X19icGZfa2Z1bmMgc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiYjNDM7e1xuJiM0MztcdGlmICh1bmxpa2VseSghbXNzX25vdykpXG4mIzQzO1x0XHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XG4mIzQzO1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIGJicl9taW5fdHNvX3NlZ3Moc2spKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdTMyIGJicl90c29fc2Vnc19nb2FsKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRzdHJ1Y3QgdGNwX3NvY2sgKnRwID0gdGNwX3NrKHNrKTtcbkBAIC0xMTUxLDcgJiM0MzsxMTU4LDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2Jicl9jb25nX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0LnVuZG9fY3duZFx0PSBiYnJfdW5kb19jd25kLFxuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnRcdD0gYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuc3N0aHJlc2hcdD0gYmJyX3NzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSBiYnJfbWluX3Rzb19zZWdzLFxuJiM0MztcdC50c29fc2Vnc1x0PSBiYnJfdHNvX3NlZ3MsXG4gXHQuZ2V0X2luZm9cdD0gYmJyX2dldF9pbmZvLFxuIFx0LnNldF9zdGF0ZVx0PSBiYnJfc2V0X3N0YXRlLFxuIH07XG5AQCAtMTE2Myw3ICYjNDM7MTE3MCw3IEBAIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc25kYnVmX2V4cGFuZClcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3VuZG9fY3duZClcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zc3RocmVzaClcbi1CVEZfSURfRkxBR1MoZnVuYywgYmJyX21pbl90c29fc2VncylcbiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NldF9zdGF0ZSlcbiBCVEZfS0ZVTkNTX0VORCh0Y3BfYmJyX2NoZWNrX2tmdW5jX2lkcylcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbmluZGV4IGQ3YzE0NDRiNWUzMDQuLmQ5YmRhM2E4NGYyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuY1xuQEAgLTIyNTMsOCAmIzQzOzIyNTMsOCBAQCBzdGF0aWMgYm9vbCB0Y3BfbmFnbGVfY2hlY2soYm9vbCBwYXJ0aWFsLCBjb25zdCBzdHJ1Y3QgdGNwX3NvY2sgKnRwLFxuICAqIGZvciBldmVyeSAyXjkgdXNlYyAoYWthIDUxMiB1cykgb2YgUlRULCBzbyB0aGF0IHRoZSBSVFQtYmFzZWQgYWxsb3dhbmNlXG4gICogaXMgYmVsb3cgMTUwMCBieXRlcyBhZnRlciA2ICogfjUwMCB1c2VjID0gM21zLlxuICAqL1xuLXN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxuLVx0XHRcdCAgICBpbnQgbWluX3Rzb19zZWdzKVxuJiM0Mzt1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxuJiM0MztcdFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgYnl0ZXM7XG4gXHR1MzIgcjtcbkBAIC0yMjY5LDYgJiM0MzsyMjY5LDcgQEAgc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4gXG4gXHRyZXR1cm4gbWF4X3QodTMyLCBieXRlcyAvIG1zc19ub3csIG1pbl90c29fc2Vncyk7XG4gfVxuJiM0MztFWFBPUlRfU1lNQk9MKHRjcF90c29fYXV0b3NpemUpO1xuIFxuIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlZ21lbnRzIHdlIHdhbnQgaW4gdGhlIHNrYiB3ZSBhcmUgdHJhbnNtaXR0aW5nLlxuICAqIFNlZSBpZiBjb25nZXN0aW9uIGNvbnRyb2wgbW9kdWxlIHdhbnRzIHRvIGRlY2lkZTsgb3RoZXJ3aXNlLCBhdXRvc2l6ZS5cbkBAIC0yMjc4LDEyICYjNDM7MjI3OSwxMiBAQCBzdGF0aWMgdTMyIHRjcF90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93KVxuIFx0Y29uc3Qgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2Ffb3BzID0gaW5ldF9jc2soc2spLVx1MDAzZWljc2tfY2Ffb3BzO1xuIFx0dTMyIG1pbl90c28sIHRzb19zZWdzO1xuIFxuLVx0bWluX3RzbyA9IGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3MgP1xuLVx0XHRcdGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3Moc2spIDpcbi1cdFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuJiM0MztcdG1pbl90c28gPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuIFxuLVx0dHNvX3NlZ3MgPSB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBtaW5fdHNvKTtcbi1cdHJldHVybiBtaW5fdCh1MzIsIHRzb19zZWdzLCBzay1cdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xuJiM0MztcdHRzb19zZWdzID0gY2Ffb3BzLVx1MDAzZXRzb19zZWdzID9cbiYjNDM7XHRcdFx0Y2Ffb3BzLVx1MDAzZXRzb19zZWdzKHNrLCBtc3Nfbm93KSA6XG4mIzQzO1x0XHRcdHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xuJiM0MztcdHJldHVybiBjbGFtcF90KHUzMiwgdHNvX3NlZ3MsIDEsIHNrLVx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XG4gfVxuIFxuIC8qIFJldHVybnMgdGhlIHBvcnRpb24gb2Ygc2tiIHdoaWNoIGNhbiBiZSBzZW50IHJpZ2h0IGF3YXkgKi9cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmMgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbmluZGV4IDBhM2U5ZDM1YmY2ZjAuLjU4MjYyZTQ5MDMzNjQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuY1xuQEAgLTEwLDcgJiM0MzsxMCw3IEBAIGV4dGVybiB1MzIgYmJyX3NuZGJ1Zl9leHBhbmQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB1MzIgYmJyX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcbiYjNDM7ZXh0ZXJuIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9zZXRfc3RhdGUoc3RydWN0IHNvY2sgKnNrLCB1OCBuZXdfc3RhdGUpIF9fa3N5bTtcbiBcbiBleHRlcm4gdm9pZCBkY3RjcF9pbml0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuQEAgLTkwLDkgJiM0Mzs5MCw5IEBAIHUzMiBCUEZfUFJPRyhzc3RocmVzaCwgc3RydWN0IHNvY2sgKnNrKVxuIH1cbiBcbiBTRUMoXCYjMzQ7c3RydWN0X29wc1wmIzM0Oylcbi11MzIgQlBGX1BST0cobWluX3Rzb19zZWdzLCBzdHJ1Y3Qgc29jayAqc2spXG4mIzQzO3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcbiB7XG4tXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XG4mIzQzO1x0cmV0dXJuIGJicl90c29fc2VncyhzaywgbXNzX25vdyk7XG4gfVxuIFxuIFNFQyhcJiMzNDtzdHJ1Y3Rfb3BzXCYjMzQ7KVxuQEAgLTEyMCw3ICYjNDM7MTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XG4gXHQuY3duZF9ldmVudFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXG4gXHQuY3duZF9ldmVudF90eF9zdGFydCA9ICh2b2lkICopY3duZF9ldmVudF90eF9zdGFydCxcbiBcdC5zc3RocmVzaFx0PSAodm9pZCAqKXNzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSAodm9pZCAqKW1pbl90c29fc2VncyxcbiYjNDM7XHQudHNvX3NlZ3NcdD0gKHZvaWQgKil0c29fc2VncyxcbiBcdC5zZXRfc3RhdGVcdD0gKHZvaWQgKilzZXRfc3RhdGUsXG4gXHQucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O3RjcF9jYV9rZnVuY1wmIzM0OyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VENQX0NPTkdfQkJSJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdHNvX2F1dG9zaXplJiMzNDssCiAgICAmIzM0O2Jicl90c29fc2VncyYjMzQ7LAogICAgJiMzNDticGZfdGNwX2NhX3Rzb19zZWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlmMjY3ZmFiYmJkMDE5MmE1YzdkYzY0NjRhZDAzNzQ0YWVhYjk3MQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDEgMDA6NDI6MTYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC90Y3AuaCBiL2luY2x1ZGUvbmV0L3RjcC5oCmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3RjcC5oCkBAIC04MjQsNiAmIzQzOzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7CiB1bnNpZ25lZCBpbnQgdGNwX2N1cnJlbnRfbXNzKHN0cnVjdCBzb2NrICpzayk7CiB1MzIgdGNwX2NsYW1wX3Byb2JlMF90b191c2VyX3RpbWVvdXQoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1MzIgd2hlbik7CiAKJiM0Mzt1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAomIzQzOwkJICAgICBpbnQgbWluX3Rzb19zZWdzKTsKJiM0MzsKIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHRjcF9ib3VuZF90b19oYWxmX3duZChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCBpbnQgcGt0c2l6ZSkKIHsKQEAgLTEzNjEsOCAmIzQzOzEzNjQsMTMgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB7CiAJLyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi8KIAl2b2lkICgqcGt0c19hY2tlZCkoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKTsKIAotCS8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzIChvcHRpb25hbCkgKi8KLQl1MzIgKCptaW5fdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzayk7CiYjNDM7CS8qIE92ZXJyaWRlIHRjcF90c29fYXV0b3NpemUgKG9wdGlvbmFsKQomIzQzOwkgKgomIzQzOwkgKiBJZiBwcm92aWRlZCwgdGhpcyBjYWxsYmFjayByZXR1cm5zIHRoZSBmaW5hbCBUU08gc2VnbWVudCBudW1iZXIKJiM0MzsJICogYW5kIHdpbGwgYnlwYXNzIHRjcF90c29fYXV0b3NpemUoKSBlbnRpcmVseS4gVGhlIGltcGxlbWVudGF0aW9uCiYjNDM7CSAqIG11c3QgZGVyaXZlIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGFuZCBlbnN1cmUgdGhlIHJlc3VsdCBpcyB2YWxpZC4KJiM0MzsJICovCiYjNDM7CXUzMiAoKnRzb19zZWdzKShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KTsKIAogCS8qIG5ldyB2YWx1ZSBvZiBjd25kIGFmdGVyIGxvc3MgKHJlcXVpcmVkKSAqLwogCXUzMiAgKCp1bmRvX2N3bmQpKHN0cnVjdCBzb2NrICpzayk7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9icGZfdGNwX2NhLmMgYi9uZXQvaXB2NC9icGZfdGNwX2NhLmMKaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvYnBmX3RjcF9jYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuYwpAQCAtMjg0LDkgJiM0MzsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXAKIHsKIH0KIAotc3RhdGljIHUzMiBicGZfdGNwX2NhX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spCiYjNDM7c3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpCiB7Ci0JcmV0dXJuIDA7CiYjNDM7CWlmICh1bmxpa2VseSghbXNzX25vdykpCiYjNDM7CQkvKiBObyBUU08gc2l6aW5nIGRlY2lzaW9uLiBMZXQgY2FsbGVyIGFwcGx5IGl0cyBsaW1pdHMuICovCiYjNDM7CQlyZXR1cm4gVTMyX01BWDsKJiM0MzsJcmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApOwogfQogCiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLApAQCAtMzIwLDcgJiM0MzszMjMsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0gewogCS5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5pbl9hY2tfZXZlbnQgPSBicGZfdGNwX2NhX2luX2Fja19ldmVudCwKIAkucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCwKLQkubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsCiYjNDM7CS50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsCiAJLmNvbmdfY29udHJvbCA9IGJwZl90Y3BfY2FfY29uZ19jb250cm9sLAogCS51bmRvX2N3bmQgPSBicGZfdGNwX2NhX3VuZG9fY3duZCwKIAkuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCwKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9iYnIuYyBiL25ldC9pcHY0L3RjcF9iYnIuYwppbmRleCA4MjM3OGEyYmZkMWUxLi5lY2YxMWJlNDZmMzgyIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX2Jici5jCkBAIC0yOTcsMTEgJiM0MzsyOTcsMTggQEAgc3RhdGljIHZvaWQgYmJyX3NldF9wYWNpbmdfcmF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBidywgaW50IGdhaW4pCiB9CiAKIC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzICovCi1fX2JwZl9rZnVuYyBzdGF0aWMgdTMyIGJicl9taW5fdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrKQomIzQzO3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spCiB7CiAJcmV0dXJuIFJFQURfT05DRShzay0mZ3Q7c2tfcGFjaW5nX3JhdGUpICZsdDsgKGJicl9taW5fdHNvX3JhdGUgJmd0OyZndDsgMykgPyAxIDogMjsKIH0KIAomIzQzO19fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpCiYjNDM7ewomIzQzOwlpZiAodW5saWtlbHkoIW1zc19ub3cpKQomIzQzOwkJcmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spOwomIzQzOwlyZXR1cm4gdGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgYmJyX21pbl90c29fc2VncyhzaykpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzX2dvYWwoc3RydWN0IHNvY2sgKnNrKQogewogCXN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spOwpAQCAtMTE1MSw3ICYjNDM7MTE1OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHRjcF9iYnJfY29uZ19vcHMgX19yZWFkX21vc3RseSA9IHsKIAkudW5kb19jd25kCT0gYmJyX3VuZG9fY3duZCwKIAkuY3duZF9ldmVudF90eF9zdGFydAk9IGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5zc3RocmVzaAk9IGJicl9zc3RocmVzaCwKLQkubWluX3Rzb19zZWdzCT0gYmJyX21pbl90c29fc2VncywKJiM0MzsJLnRzb19zZWdzCT0gYmJyX3Rzb19zZWdzLAogCS5nZXRfaW5mbwk9IGJicl9nZXRfaW5mbywKIAkuc2V0X3N0YXRlCT0gYmJyX3NldF9zdGF0ZSwKIH07CkBAIC0xMTYzLDcgJiM0MzsxMTcwLDcgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zbmRidWZfZXhwYW5kKQogQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl91bmRvX2N3bmQpCiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQpCiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NzdGhyZXNoKQotQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9taW5fdHNvX3NlZ3MpCiYjNDM7QlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncykKIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc2V0X3N0YXRlKQogQlRGX0tGVU5DU19FTkQodGNwX2Jicl9jaGVja19rZnVuY19pZHMpCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9vdXRwdXQuYyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwppbmRleCBkN2MxNDQ0YjVlMzA0Li5kOWJkYTNhODRmMjYxIDEwMDY0NAotLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvdGNwX291dHB1dC5jCkBAIC0yMjUzLDggJiM0MzsyMjUzLDggQEAgc3RhdGljIGJvb2wgdGNwX25hZ2xlX2NoZWNrKGJvb2wgcGFydGlhbCwgY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCwKICAqIGZvciBldmVyeSAyXjkgdXNlYyAoYWthIDUxMiB1cykgb2YgUlRULCBzbyB0aGF0IHRoZSBSVFQtYmFzZWQgYWxsb3dhbmNlCiAgKiBpcyBiZWxvdyAxNTAwIGJ5dGVzIGFmdGVyIDYgKiB+NTAwIHVzZWMgPSAzbXMuCiAgKi8KLXN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAotCQkJICAgIGludCBtaW5fdHNvX3NlZ3MpCiYjNDM7dTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdywKJiM0MzsJCSAgICAgaW50IG1pbl90c29fc2VncykKIHsKIAl1bnNpZ25lZCBsb25nIGJ5dGVzOwogCXUzMiByOwpAQCAtMjI2OSw2ICYjNDM7MjI2OSw3IEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LAogCiAJcmV0dXJuIG1heF90KHUzMiwgYnl0ZXMgLyBtc3Nfbm93LCBtaW5fdHNvX3NlZ3MpOwogfQomIzQzO0VYUE9SVF9TWU1CT0wodGNwX3Rzb19hdXRvc2l6ZSk7CiAKIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHNlZ21lbnRzIHdlIHdhbnQgaW4gdGhlIHNrYiB3ZSBhcmUgdHJhbnNtaXR0aW5nLgogICogU2VlIGlmIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgd2FudHMgdG8gZGVjaWRlOyBvdGhlcndpc2UsIGF1dG9zaXplLgpAQCAtMjI3OCwxMiAmIzQzOzIyNzksMTIgQEAgc3RhdGljIHUzMiB0Y3BfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdykKIAljb25zdCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICpjYV9vcHMgPSBpbmV0X2NzayhzayktJmd0O2ljc2tfY2Ffb3BzOwogCXUzMiBtaW5fdHNvLCB0c29fc2VnczsKIAotCW1pbl90c28gPSBjYV9vcHMtJmd0O21pbl90c29fc2VncyA/Ci0JCQljYV9vcHMtJmd0O21pbl90c29fc2VncyhzaykgOgotCQkJUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS0mZ3Q7aXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7CiYjNDM7CW1pbl90c28gPSBSRUFEX09OQ0Uoc29ja19uZXQoc2spLSZndDtpcHY0LnN5c2N0bF90Y3BfbWluX3Rzb19zZWdzKTsKIAotCXRzb19zZWdzID0gdGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7Ci0JcmV0dXJuIG1pbl90KHUzMiwgdHNvX3NlZ3MsIHNrLSZndDtza19nc29fbWF4X3NlZ3MpOwomIzQzOwl0c29fc2VncyA9IGNhX29wcy0mZ3Q7dHNvX3NlZ3MgPwomIzQzOwkJCWNhX29wcy0mZ3Q7dHNvX3NlZ3Moc2ssIG1zc19ub3cpIDoKJiM0MzsJCQl0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBtaW5fdHNvKTsKJiM0MzsJcmV0dXJuIGNsYW1wX3QodTMyLCB0c29fc2VncywgMSwgc2stJmd0O3NrX2dzb19tYXhfc2Vncyk7CiB9CiAKIC8qIFJldHVybnMgdGhlIHBvcnRpb24gb2Ygc2tiIHdoaWNoIGNhbiBiZSBzZW50IHJpZ2h0IGF3YXkgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYwppbmRleCAwYTNlOWQzNWJmNmYwLi41ODI2MmU0OTAzMzY0IDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmMKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jCkBAIC0xMCw3ICYjNDM7MTAsNyBAQCBleHRlcm4gdTMyIGJicl9zbmRidWZfZXhwYW5kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltOwogZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltOwogZXh0ZXJuIHZvaWQgYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07CiBleHRlcm4gdTMyIGJicl9zc3RocmVzaChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTsKLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTsKJiM0MztleHRlcm4gdTMyIGJicl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KSBfX2tzeW07CiBleHRlcm4gdm9pZCBiYnJfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKSBfX2tzeW07CiAKIGV4dGVybiB2b2lkIGRjdGNwX2luaXQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07CkBAIC05MCw5ICYjNDM7OTAsOSBAQCB1MzIgQlBGX1BST0coc3N0aHJlc2gsIHN0cnVjdCBzb2NrICpzaykKIH0KIAogU0VDKCYjMzQ7c3RydWN0X29wcyYjMzQ7KQotdTMyIEJQRl9QUk9HKG1pbl90c29fc2Vncywgc3RydWN0IHNvY2sgKnNrKQomIzQzO3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykKIHsKLQlyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7CiYjNDM7CXJldHVybiBiYnJfdHNvX3NlZ3Moc2ssIG1zc19ub3cpOwogfQogCiBTRUMoJiMzNDtzdHJ1Y3Rfb3BzJiMzNDspCkBAIC0xMjAsNyAmIzQzOzEyMCw3IEBAIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2NhX2tmdW5jID0gewogCS5jd25kX2V2ZW50CT0gKHZvaWQgKiljd25kX2V2ZW50LAogCS5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gKHZvaWQgKiljd25kX2V2ZW50X3R4X3N0YXJ0LAogCS5zc3RocmVzaAk9ICh2b2lkICopc3N0aHJlc2gsCi0JLm1pbl90c29fc2Vncwk9ICh2b2lkICopbWluX3Rzb19zZWdzLAomIzQzOwkudHNvX3NlZ3MJPSAodm9pZCAqKXRzb19zZWdzLAogCS5zZXRfc3RhdGUJPSAodm9pZCAqKXNldF9zdGF0ZSwKIAkucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsCiAJLm5hbWUJCT0gJiMzNDt0Y3BfY2Ffa2Z1bmMmIzM0OywKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTAyMwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCYjMzk7cyB0b3VjaGluZyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBjb2RlLCB3aGljaCBhbHdheXMgd2FycmFudHMgY2xvc2UgYXR0ZW50aW9uLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlcGxhY2luZyBgbWluX3Rzb19zZWdzYCB3aXRoIGB0c29fc2Vnc2Agd2l0aGluIHRoZSBgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wc2AuIFRoYXQgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGludGVyYWN0LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzd2FwIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyBtb2RpZmllZCBzZXZlcmFsIGtleSBmaWxlczogYGJwZl90Y3BfY2EuY2AsIGB0Y3BfYmJyLmNgLCBhbmQgYHRjcF9vdXRwdXQuY2AsIHBsdXMgYSBCUEYgc2VsZnRlc3QuIFRoZSBwYXRjaCBhbHNvIGV4cG9zZXMgYHRjcF90c29fYXV0b3NpemVgIGFuZCBhZGp1c3RzIGB0Y3BfdHNvX3NlZ3NgIHRvIHVzZSBgdHNvX3NlZ3NgIHdoZW4gaXQmIzM5O3MgYXZhaWxhYmxlLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICp1c2VkKj8gSXMgdGhpcyBmdW5jdGlvbmFsbHkgY29ycmVjdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBpbiB0aGUgY29kZSBhbmQgdGhhdCBpdCBiZWhhdmVzIGFzIGV4cGVjdGVkLiBRdWlja2x5IGNoZWNraW5nLCBJIHNlZSB0aGF0IGB0Y3BfdHNvX3NlZ3NgICppcyogY2FsbGVkIGluIHRoZSBUQ1Agb3V0cHV0IHBhdGgsIHdoaWNoIGlzIGdvb2QuIFRoYXQgY29uZmlybXMgdGhhdCBpdCYjMzk7cyBhIHJlbGV2YW50IHBhcnQgb2YgdGhlIGZsb3cuIEFuZCBpdCBsb29rcyBsaWtlIGBiYnJfdHNvX3NlZ3NgIGhhcyBiZWVuIGludHJvZHVjZWQgYXMgdGhlIG5ldyBjYWxsYmFjayBmb3IgQkJSLCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIHRoZSBuZXcgY2FsbGJhY2sgZm9yIEJQRi4KCk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaG93IHRoaXMgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZSwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGBUQ1BfQ09OR19CQlJgIHRvIHNlZSBob3cgQkJSIGlzIGVuYWJsZWQgYW5kIGFsc28gYEJQRl9TWVNDQUxMYCAob3Igc29tZXRoaW5nIHNpbWlsYXIpIHRvIGNvbmZpcm0gaG93IEJQRiBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGlzIGhhbmRsZWQuIFRoaXMgd2lsbCB0ZWxsIG1lIGhvdyBwcmV2YWxlbnQgdGhlc2UgY2hhbmdlcyBhcmUsIGFuZCBob3cgdGhleSBhcmUgZW5hYmxlZCB3aXRoaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVENQX0NPTkdfQkJSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTY2NS1cbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcbm5ldC9pcHY0L0tjb25maWctNjY3LVx0dHJpc3RhdGUgXCYjMzQ7QkJSIFRDUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3OTIKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBCQlIgYW5kIEJQRiBpbiB0aGUgTGludXggS2VybmVsKioKClJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGJwZl90Y3BfY2EuY2AgYW5kIHRoZSBrZXJuZWwmIzM5O3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU3BlY2lmaWNhbGx5LCBJJiMzOTtsbCBqdW1wIGludG8gdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZWZpbml0aW9ucyBvZiBib3RoIGBUQ1BfQ09OR19CQlJgICh3aGljaCBlbmFibGVzIEJCUiBhcyBhIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0pIGFuZCBgQlBGX1NZU0NBTExgLCBzaW5jZSBCUEYgaXMgZXNzZW50aWFsIHRvIHRoZSBgYnBmX3RjcF9jYS5jYCBjb2RlLCBhcyBJIHN1c3BlY3QuIElmIGBUQ1BfQ09OR19CQlJgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGUgZmlsZSB3b24mIzM5O3QgYmUgdXNlZCwgYnV0IGlmIGl0IGlzLCBJIGNhbiBkZXRlcm1pbmUgaG93IHRoaXMgaXMgbGlua2VkLiBBbmQgaWYgYEJQRl9TWVNDQUxMYCBpc24mIzM5O3QgZW5hYmxlZCwgdGhlbiBJIG5lZWQgdG8ga25vdyB3aHkgdGhlIGBicGZfdGNwX2NhLmNgIGNvZGUgc3RpbGwgZXhpc3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZlYXR1cmUgZ2F0ZXMgYXJlIGNvbmZpZ3VyZWQgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBhcmUsIHNvIHRoYXQgSSBjYW4gc2VlIGhvdyB0aGVzZSB0d28gYXJlIGxpbmtlZCB0b2dldGhlciBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBvZiBlYWNoIG9wdGlvbi4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIHByb3BlciBjb250ZXh0IGZvciB0aGUgcmVzdCBvZiBteSBpbnZlc3RpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90Y3BfY2FcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTcxPWlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5uZXQvaXB2NC9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfdGNwX2NhLm9cbm5ldC9pcHY0L01ha2VmaWxlLTczLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRhaWxvcmVkIGFzIHJlcXVlc3RlZDoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBCUEYgYW5kIEJCUiBNb2R1bGVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBidWlsZGluZyB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBJIGtub3cgSSBuZWVkIGEgY291cGxlIG9mIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGVkLiBGaXJzdCBhbmQgZm9yZW1vc3QsIGZvciB0aGF0IGBicGZfdGNwX2NhLmNgIG1vZHVsZSwgSSBhYnNvbHV0ZWx5IHJlcXVpcmUgYm90aCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIG5vbi1uZWdvdGlhYmxlOyBubyBCUEYgd2l0aG91dCB0aG9zZS4KCkFuZCB0aGVuIGZvciB0aGUgYHRjcF9iYnIuY2AgbW9kdWxlLCBgQ09ORklHX1RDUF9DT05HX0JCUmAgaXMsIG9mIGNvdXJzZSwgZXNzZW50aWFsLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uCgpOb3csIEkmIzM5O20ganVzdCBxdWlja2x5IGNoZWNraW5nIHNvbWV0aGluZyBlbHNlLCBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgdGNwX3Rzb19zZWdzYCB2YXJpYWJsZSBpbiBgbmV0L2lwdjQvdGNwX291dHB1dC5jYC4gSnVzdCB3YW50IHRvIGNvbmZpcm0gdGhhdCYjMzk7cyBiZWhhdmluZyBhcyBleHBlY3RlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJiMzOTttIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF90c29fc2VncyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9jb25uZWN0aW9uX3NvY2sucnN0PTIxPXUzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljc2tfcG10dV9jb29raWUgICAgICAgcmVhZF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9zeW5jX21zcyx0Y3BfY3VycmVudF9tc3MsdGNwXy4uLlxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfY29ubmVjdGlvbl9zb2NrLnJzdDoyMjpzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzICAgICAgICAgICBpY3NrX2NhX29wcyAgICAgICAgICAgIHJlYWRfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BfY3duZF92YWxpZGF0ZSx0Y3BfdHNvX3NlZ3MsdGMuLi5cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9pbmV0X2Nvbm5lY3Rpb25fc29jay5yc3QtMjMtc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyAgaWNza19hZl9vcHMgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2ZpbmlzaF9jb25uZWN0LHRjcF9zZW5kX3N5bl9kLi4uXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTIyNzI9RVhQT1JUX1NZTUJPTCh0Y3BfdHNvX2F1dG9zaXplKTtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3Ni0gKi9cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyMjc3OnN0YXRpYyB1MzIgdGNwX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3cpXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3OC17XG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jPTI5NjU9c3RhdGljIGJvb2wgdGNwX3dyaXRlX3htaXQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdywgaW50IG5vbmFnbGUsXG4tLVxubmV0L2lwdjQvdGNwX291dHB1dC5jLTI5OTItXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM6Mjk5MzpcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCBtc3Nfbm93KTtcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0yOTk0LVx0d2hpbGUgKChza2IgPSB0Y3Bfc2VuZF9oZWFkKHNrKSkpIHtcbi0tXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MzcyNj12b2lkIHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWUoc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNzM5LVx0c2tiID0gdHAtXHUwMDNlcmV0cmFuc21pdF9za2JfaGludCA/OiBydHhfaGVhZDtcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzozNzQwOlx0bWF4X3NlZ3MgPSB0Y3BfdHNvX3NlZ3Moc2ssIHRjcF9jdXJyZW50X21zcyhzaykpO1xubmV0L2lwdjQvdGNwX291dHB1dC5jLTM3NDEtXHRza2JfcmJ0cmVlX3dhbGtfZnJvbShza2IpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTE0CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IFByaW9yaXRpemF0aW9uIGZvciBUQ1AgVFNPIFNlZ21lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbW9kaWZpY2F0aW9ucyB0byB0aGUgVENQIFRTTyBzZWdtZW50YXRpb24gY29kZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBgdGNwX3Rzb19zZWdzYC4gVGhpcyBmdW5jdGlvbiwgYW5kIGl0cyByZWxhdGl2ZXMsIGdldCBjYWxsZWQgZnJvbSBzb21lIHJlYWxseSBob3QgY29kZSBwYXRocyDigJMgYHRjcF93cml0ZV94bWl0YCBhbmQgYHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWVgIOKAkyBzbyBhbnkgYnVncyBoZXJlIGFyZSBnb2luZyB0byBiZSBpbXBhY3RmdWwuCgpUaGUgcGF0Y2ggdG91Y2hlcyBgdGNwX3Rzb19hdXRvc2l6ZWAsIGBiYnJfdHNvX3NlZ3NgLCBgYnBmX3RjcF9jYV90c29fc2Vnc2AsIGFuZCBgdGNwX3Rzb19zZWdzYCBkaXJlY3RseS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gcHJpb3JpdGl6ZSBmdXp6aW5nIHRob3NlIGZ1bmN0aW9ucy4gQnV0IHdhaXQsIGxldCYjMzk7cyB0aGluayBhYm91dCB0aGlzIHN0cmF0ZWdpY2FsbHkuCgpgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2QuIFRoYXQgbWFrZXMgaXQgYSBkaXN0aW5jdCBzeW1ib2wgYW5kIHRoZXJlZm9yZSBhbiBlYXNpZXIgdGFyZ2V0IGZvciBmdXp6ZXJzLiBgYmJyX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIGlzIHVzdWFsbHkgYSBwYWluLCBidXQgaXQmIzM5O3MgbWFya2VkIGFzIGBfX2JwZl9rZnVuY2AsIHdoaWNoIG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBpbmxpbmVkLiBUaGF0JiMzOTtzIGEgaHVnZSB3aW4g4oCTIGl0JiMzOTtzIGEgZGlzdGluY3Qgc3ltYm9sLCBqdXN0IGxpa2UgdGhlIGV4cG9ydGVkIG9uZSEgQW5kIHRoZW4gd2UgaGF2ZSBgYnBmX3RjcF9jYV90c29fc2Vnc2AsIHdoaWNoIGlzIHN0YXRpYy4gRmluYWxseSwgYHRjcF90c29fc2Vnc2AgaXMgc3RhdGljIGFzIHdlbGwuCgpTbywgbGV0JiMzOTtzIHplcm8gaW4gb24gYGJicl90c29fc2Vnc2AgYW5kIGB0Y3BfdHNvX2F1dG9zaXplYCBwcmltYXJpbHkuIEJlY2F1c2UsIHdoaWxlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGhhcmRlciB0byBkaXJlY3RseSB0YXJnZXQsIHRoZSBgX19icGZfa2Z1bmNgIG1lYW5zIGBiYnJfdHNvX3NlZ3NgIGlzbiYjMzk7dCBpbmxpbmVkLCBzbyBpdCYjMzk7cyB0YXJnZXRhYmxlLiBOb3csIHRoYXQgbGVhdmVzIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBhcyB0aGUgZmluYWwgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl90Y3BfY2FfdHNvX3NlZ3MmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvYnBmX3RjcF9jYS5jPTI4Mz1zdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKVxuLS1cbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0yODYtXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6Mjg3OnN0YXRpYyB1MzIgYnBmX3RjcF9jYV90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KVxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTI4OC17XG4tLVxubmV0L2lwdjQvYnBmX3RjcF9jYS5jPTMxOD1zdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xuLS1cbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0zMjUtXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcbm5ldC9pcHY0L2JwZl90Y3BfY2EuYzozMjY6XHQudHNvX3NlZ3MgPSBicGZfdGNwX2NhX3Rzb19zZWdzLFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNy1cdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE1MQoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDEyNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFRTTyBTZWdtZW50IENhbGN1bGF0aW9uIGluIFRDUCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgVENQIFRTTyBzZWdtZW50IHNpemluZyBsb2dpYy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkLCBvciBhdCBsZWFzdCBhIHN0YW5kYWxvbmUgdmVyc2lvbiB3aWxsIGV4aXN0LiBUaGlzIGlzIGltcG9ydGFudCB0byBub3RlLgoKVGhlcmVmb3JlLCBJIHRob3VnaHQgdGhlIG1haW4gYXJlYXMgdG8gbG9vayBhdCB3ZXJlIGluaXRpYWxseSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGBiYnJfdHNvX3NlZ3NgLCBhbmQgb2YgY291cnNlLCBgYnBmX3RjcF9jYV90c29fc2Vnc2AuCgpUaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgY2FsbGVkIGZyb20gYHRjcF90c29fc2Vnc2AgYW5kIGluIHR1cm4sIGB0Y3Bfd3JpdGVfeG1pdGAuIGB0Y3Bfd3JpdGVfeG1pdGAgaXMgYSBob3RzcG90LCBhbmQgd2hpbGUgYHRjcF90c29fYXV0b3NpemVgIGlzIFRTTyBzaXppbmcgc3BlY2lmaWMsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBza2V3LiBXaGlsZSBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgc3BlY2lmaWMgdG8gVFNPIHNpemluZywgSSBkZWNpZGVkIHRvIGNoZWNrLiBIb3dldmVyLCBJdCYjMzk7cyBjYWxsZWQgZm9yIGV2ZXJ5IHBhY2tldCBpZiBUU08gaXMgZW5hYmxlZC4gSXQmIzM5O3MgYSBrZXkgZnVuY3Rpb24gaW4gYSBob3QgcGF0aC4KCkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGJ5IGV4cG9ydGluZyBpdC4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uLCB0aG91Z2gsIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgcmVhbCBjaGFuZ2VzIGFyZSBpbiBgdGNwX3Rzb19zZWdzYCB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sJiMzOTtzIGBtaW5fdHNvX3NlZ3NgIGlzIGhhbmRsZWQuICBOb3csIHRoZSBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGZ1bmN0aW9ucyBhcmUgbmV3LgoKQ29uc2lkZXJpbmcgdGhpcywgdGhlIGZvY3VzIHJlYWxseSBzaG91bGQgYmUgb24gYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gYGJicl90c29fc2Vnc2AgaXMgZm9yIEJCUiBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIGZvciBCUEYgY29uZ2VzdGlvbiBjb250cm9sLCB3aGljaCBtYWtlcyB0aGVtIGxlc3MgZ2VuZXJpYy4KCmBiYnJfdHNvX3NlZ3NgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYywgYnV0IHRoZSBgX19icGZfa2Z1bmNgIHNwZWNpZmllciBjYW4gcHJldmVudCBpbmxpbmluZy4gSG93ZXZlciwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHdvbiYjMzk7dCBiZSBmdWxseSBpbmxpbmVkIGVpdGhlci4KCkJlY2F1c2UgYHRjcF90c29fYXV0b3NpemVgIGlzbiYjMzk7dCBmdW5jdGlvbmFsbHkgY2hhbmdlZCwgbGV0JiMzOTtzIGtlZXAgdGhlIHByaW1hcnkgZm9jdXMgb24gYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gSSYjMzk7bGwgYWxzbyBhZGQgYHRjcF90c29fc2Vnc2AgYXMgd2VsbC4gU2luY2UgYHRjcF90c29fc2Vnc2AgaXMgc3RhdGljLCBpdCBtaWdodCBiZSBpbmxpbmVkIGludG8gYHRjcF93cml0ZV94bWl0YCBhbmQgYHRjcF94bWl0X3JldHJhbnNtaXRfcXVldWVgLCBhbmQgd2lsbCBiZSBpbXBvcnRhbnQgdG8gb2JzZXJ2ZS4KClNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBhbmFseXNpczogYFRDUF9DT05HX0JCUmAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgQlBGX0pJVGAuIEkgc2hvdWxkIGFsc28gdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRDUF9DT05HX0JCUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQ1BfQ09OR19CQlImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz02NDk9Y29uZmlnIFRDUF9DT05HX0NER1xuLS1cbm5ldC9pcHY0L0tjb25maWctNjY1LVxubmV0L2lwdjQvS2NvbmZpZzo2NjY6Y29uZmlnIFRDUF9DT05HX0JCUlxubmV0L2lwdjQvS2NvbmZpZy02NjctXHR0cmlzdGF0ZSBcJiMzNDtCQlIgVENQXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqRGVsdmluZyBpbnRvIHRoZSBJUHY0IEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBJUHY0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBuZXQvaXB2NC9LY29uZmlnYCDigJMgc2hvdWxkIGJlIHRoZSBtb3N0IGNvbXByZWhlbnNpdmUgc291cmNlLiBJJiMzOTttIHNwZWNpZmljYWxseSBpbnRlcmVzdGVkIGluIHNvbWV0aGluZywgc28gSSYjMzk7bSBuYXZpZ2F0aW5nIHRvIGxpbmUgNjY2IChvciB0aGVyZWFib3V0cykgYXMgYSBzdGFydGluZyBwb2ludC4gVGhhdCBnZW5lcmFsIGFyZWEgb2Z0ZW4gaG91c2VzIHNvbWUganVpY3kgZGV0YWlscy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBzb21ldGhpbmcgc3BlY2lmaWMgdGhlcmUuIExldCYjMzk7cyBzZWUgd2hhdCBpbnRlcmVzdGluZyBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBhdCB0aGF0IGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY2MDpcdFxuIDY2MTpcdFx0ICBGb3IgZnVydGhlciBkZXRhaWxzIHNlZTpcbiA2NjI6XHRcdCAgICBELkEuIEhheWVzIGFuZCBHLiBBcm1pdGFnZS4gXCYjMzQ7UmV2aXNpdGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIHVzaW5nXG4gNjYzOlx0XHQgICAgZGVsYXkgZ3JhZGllbnRzLlwmIzM0OyBJbiBOZXR3b3JraW5nIDIwMTEuIFByZXByaW50OlxuIDY2NDpcdFx0ICAgIGh0dHA6Ly9jYWlhLnN3aW4uZWR1LmF1L2N2L2RhaGF5ZXMvY29udGVudC9uZXR3b3JraW5nMjAxMS1jZGctcHJlcHJpbnQucGRmXG4gNjY1Olx0XG4gNjY2Olx0Y29uZmlnIFRDUF9DT05HX0JCUlxuIDY2NzpcdFx0dHJpc3RhdGUgXCYjMzQ7QkJSIFRDUFwmIzM0O1xuIDY2ODpcdFx0ZGVmYXVsdCBuXG4gNjY5Olx0XHRoZWxwXG4gNjcwOlx0XG4gNjcxOlx0XHQgIEJCUiAoQm90dGxlbmVjayBCYW5kd2lkdGggYW5kIFJUVCkgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhaW1zIHRvXG4gNjcyOlx0XHQgIG1heGltaXplIG5ldHdvcmsgdXRpbGl6YXRpb24gYW5kIG1pbmltaXplIHF1ZXVlcy4gSXQgYnVpbGRzIGFuIGV4cGxpY2l0XG4gNjczOlx0XHQgIG1vZGVsIG9mIHRoZSBib3R0bGVuZWNrIGRlbGl2ZXJ5IHJhdGUgYW5kIHBhdGggcm91bmQtdHJpcCBwcm9wYWdhdGlvblxuIDY3NDpcdFx0ICBkZWxheS4gSXQgdG9sZXJhdGVzIHBhY2tldCBsb3NzIGFuZCBkZWxheSB1bnJlbGF0ZWQgdG8gY29uZ2VzdGlvbi4gSXRcbiA2NzU6XHRcdCAgY2FuIG9wZXJhdGUgb3ZlciBMQU4sIFdBTiwgY2VsbHVsYXIsIHdpZmksIG9yIGNhYmxlIG1vZGVtIGxpbmtzLiBJdCBjYW5cbiA2NzY6XHRcdCAgY29leGlzdCB3aXRoIGZsb3dzIHRoYXQgdXNlIGxvc3MtYmFzZWQgY29uZ2VzdGlvbiBjb250cm9sLCBhbmQgY2FuXG4gNjc3Olx0XHQgIG9wZXJhdGUgd2l0aCBzaGFsbG93IGJ1ZmZlcnMsIGRlZXAgYnVmZmVycywgYnVmZmVyYmxvYXQsIHBvbGljZXJzLCBvclxuIDY3ODpcdFx0ICBBUU0gc2NoZW1lcyB0aGF0IGRvIG5vdCBwcm92aWRlIGEgZGVsYXkgc2lnbmFsLiBJdCByZXF1aXJlcyB0aGUgZnFcbiA2Nzk6XHRcdCAgKFwmIzM0O0ZhaXIgUXVldWVcJiMzNDspIHBhY2luZyBwYWNrZXQgc2NoZWR1bGVyLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc1MgoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBCUEYgYW5kIFRDUCBDb25nZXN0aW9uIENvbnRyb2wqKgoKUmlnaHQsIHNvLCBmaXJzdCB0aGluZ3MgZmlyc3QsIGZvY3VzaW5nIG9uIHRoZSBgVENQX0NPTkdfQkJSYCBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtLiBObyBuZWVkIHRvIHdvcnJ5IGFib3V0IGFueSB1bnVzdWFsIG9yIHNwZWNpYWxpemVkIGRlcGVuZGVuY2llcyBmb3IgKnRoYXQqIHNwZWNpZmljYWxseS4gSXQmIzM5O3MgdXN1YWxseSBwcmV0dHkgc2VsZi1jb250YWluZWQsIGFuZCBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBpdCBlbm91Z2ggdG8ga25vdyB0aGUgY29tbW9uIHBpdGZhbGxzIGFuZCBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbi4uLiBsZXQmIzM5O3Mgc2hpZnQgZ2VhcnMgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byBgQlBGX1NZU0NBTExgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIGlzIGluIHBsYWNlLiBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIHZlcnNpb25zLCBzcGVjaWZpYyBCUEYgaGVscGVycywgb3IgYW55dGhpbmcgZWxzZSB0aGF0ICptaWdodCogYmUgcmVxdWlyZWQ/IEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSBwb3RlbnRpYWwgZ290Y2hhcyBhcmUgYmVmb3JlIEkgdHJ5IHRvIGludGVncmF0ZSBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDU5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBCUEYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIGBrZXJuZWwvYnBmL0tjb25maWdgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBqdW1wIHRvIGFyb3VuZCBsaW5lIDI3LiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHByb2JhYmx5IGRlZmluZWQgc29tZXdoZXJlIGluIHRoYXQgYXJlYS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogYW5kIGhvdyB0aGF0IGNvbmZpZ3VyYWJpbGl0eSBpcyBwcmVzZW50ZWQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMjA6XHQjIFVzZWQgYnkgYXJjaHMgdG8gdGVsbCB0aGF0IHRoZXkgd2FudCB0aGUgQlBGIEpJVCBjb21waWxlciBlbmFibGVkIGJ5XG4gIDIxOlx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cbiAgMjI6XHRjb25maWcgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVFxuICAyMzpcdFx0Ym9vbFxuICAyNDpcdFxuICAyNTpcdG1lbnUgXCYjMzQ7QlBGIHN1YnN5c3RlbVwmIzM0O1xuICAyNjpcdFxuICAyNzpcdGNvbmZpZyBCUEZfU1lTQ0FMTFxuICAyODpcdFx0Ym9vbCBcJiMzNDtFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcJiMzNDtcbiAgMjk6XHRcdHNlbGVjdCBCUEZcbiAgMzA6XHRcdHNlbGVjdCBJUlFfV09SS1xuICAzMTpcdFx0c2VsZWN0IE5FRURfVEFTS1NfUkNVXG4gIDMyOlx0XHRzZWxlY3QgVEFTS1NfVFJBQ0VfUkNVXG4gIDMzOlx0XHRzZWxlY3QgQklOQVJZX1BSSU5URlxuICAzNDpcdFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcbiAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTU0CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIEJQRiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBoYW5kbGUgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGlzIEJQRiBtb2R1bGUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBgQlBGX1NZU0NBTExgIGZ1bmN0aW9uYWxpdHkgaXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBubyBuZWVkIGZvciBhbnkgZXh0ZXJuYWwgbGlicmFyaWVzIG9yIHNwZWNpYWwgY29uZmlndXJhdGlvbnMgdGhlcmUuIEdvb2QuIE1ha2VzIGRlcGxveW1lbnQgYSBsaXR0bGUgZWFzaWVyLCBhbHdheXMgYSBwbHVzLiBOb3csIHRoZSBtb3JlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIGFyb3VuZCB0aGUgSklUIGNvbXBpbGVyLCBgQlBGX0pJVGAuIFRoYXTigJlzIHdoZXJlIHRoaW5ncyBjb3VsZCBwb3RlbnRpYWxseSBnZXQgYSBiaXQgbW9yZSBjb21wbGV4LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGZvciB0aGF0LiBUaW1lIHRvIHNjcnV0aW5pemUgdGhvc2UgSklUIGRlcGVuZGVuY2llcy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDAwOjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBLZXJuZWwmIzM5O3MgQlBGIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEJQRiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCYjMzk7cyBzdGFydCBieSB6ZXJvaW5nIGluIG9uIGBrZXJuZWwvYnBmL0tjb25maWdgLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBsaW5lIDQyIGZlZWxzIGxpa2UgYSBnb29kIGluaXRpYWwgcG9pbnQsIG1heWJlIHdoZXJlIHRoZSBtYWluIGNvbmZpZ3VyYXRpb24gYmxvY2sgc3RhcnRzLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSB0b3AtbGV2ZWwgb3B0aW9ucyByZWxhdGVkIHRvIGVuYWJsaW5nIG9yIGRpc2FibGluZyBCUEYgZmVhdHVyZXMsIG9yIHBlcmhhcHMgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgQlBGIGludGVycHJldGVyLiBNeSBnb2FsIGlzIHRvIGdldCBhIHNvbGlkIG92ZXJ2aWV3IG9mIHRoZSBjb25maWd1cmFibGUgYXNwZWN0cyBvZiB0aGUgQlBGIHN1YnN5c3RlbSwgd2hpY2ggd2lsbCBpbmZvcm0gbXkgbmV4dCBzdGVwcyBpbiBpbnZlc3RpZ2F0aW5nIGl0cyBmdW5jdGlvbmFsaXR5IG9yIGRlYnVnZ2luZyBhIHJlbGF0ZWQgaXNzdWUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzU6XHRcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxuICAzNjpcdFx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbiAgMzc6XHRcdGRlZmF1bHQgblxuICAzODpcdFx0aGVscFxuICAzOTpcdFx0ICBFbmFibGUgdGhlIGJwZigpIHN5c3RlbSBjYWxsIHRoYXQgYWxsb3dzIHRvIG1hbmlwdWxhdGUgQlBGIHByb2dyYW1zXG4gIDQwOlx0XHQgIGFuZCBtYXBzIHZpYSBmaWxlIGRlc2NyaXB0b3JzLlxuICA0MTpcdFxuICA0MjpcdGNvbmZpZyBCUEZfSklUXG4gIDQzOlx0XHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4gIDQ0Olx0XHRkZXBlbmRzIG9uIEJQRlxuICA0NTpcdFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcbiAgNDY6XHRcdHNlbGVjdCBFWEVDTUVNXG4gIDQ3Olx0XHRoZWxwXG4gIDQ4Olx0XHQgIEJQRiBwcm9ncmFtcyBhcmUgbm9ybWFsbHkgaGFuZGxlZCBieSBhIEJQRiBpbnRlcnByZXRlci4gVGhpcyBvcHRpb25cbiAgNDk6XHRcdCAgYWxsb3dzIHRoZSBrZXJuZWwgdG8gZ2VuZXJhdGUgbmF0aXZlIGNvZGUgd2hlbiBhIHByb2dyYW0gaXMgbG9hZGVkXG4gIDUwOlx0XHQgIGludG8gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIHNpZ25pZmljYW50bHkgc3BlZWQtdXAgcHJvY2Vzc2luZyBvZiBCUEZcbiAgNTE6XHRcdCAgcHJvZ3JhbXMuXG4gIDUyOlx0XG4gIDUzOlx0XHQgIE5vdGUsIGFuIGFkbWluIHNob3VsZCBlbmFibGUgdGhpcyBmZWF0dXJlIGNoYW5naW5nOlxuICA1NDpcdFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMDA6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0NzkKCQkJCQkJCW91dHB1dDogMTUwCgkJCQkJCQl0aG91Z2h0czogNDYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUQ1AgQ29uZ2VzdGlvbiBDb250cm9sIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNwZWNpZmljYWxseSBpbnRyb2R1Y2luZyBhIG1lY2hhbmlzbSB0byBvdmVycmlkZSBgdGNwX3Rzb19hdXRvc2l6ZWAgdXNpbmcgYSBgdHNvX3NlZ3NgIGNhbGxiYWNrLiBUaGUgaW1wbGVtZW50YXRpb24gdGFyZ2V0cyBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLCBzbyB0aG9zZSBhcmUga2V5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZWVkIHByZXNlbnQgYW5kIGFjY2Vzc2libGUg4oCTIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSByZWxldmFudCBzeW1ib2xzOiBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLiBPa2F5LCBgYmJyX3Rzb19zZWdzYCBpcyBtYXJrZWQgYXMgc3RhdGljLCBidXQgaXQmIzM5O3MgYWxzbyBhIGBfX2JwZl9rZnVuY2AuIEFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgYWxzbyBzdGF0aWMuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBtZWFuaW5nZnVsbHkgZm9jdXMgb24gdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0JiMzOTtzIHBvc3NpYmxlIGlmIHRoZXkgYXJlIG5vdCBpbmxpbmVkLgoKTGV0JiMzOTtzIHNlZS4gYGJicl90c29fc2Vnc2AgaXMgYSBrZnVuYywgd2hpY2ggbWVhbnMgaXQgaXNuJiMzOTt0IGlubGluZWQuIEdvb2QuIEFsc28sIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIHdoaWNoIGdlbmVyYWxseSBwcmV2ZW50cyBpbmxpbmluZyB0b28uIEV4Y2VsbGVudC4gRmluYWxseSwgYHRjcF90c29fYXV0b3NpemVgIGlzIGV4cG9ydGVkLCBzbyB0aGF0IGlzbiYjMzk7dCBpbmxpbmVkIGVpdGhlci4gVGhpcyBpcyB0aGUgdHJpZmVjdGEhCgpUaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGB0Y3BfdHNvX2F1dG9zaXplYCwgYGJicl90c29fc2Vnc2AsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaW4gbXkgYW5hbHlzaXMuCgpOb3csIHRvIGdldCB0aGlzIHVwIGFuZCBydW5uaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByaWdodCBjb25maWdzIGFyZSBlbmFibGVkOgoKKiAgIGBUQ1BfQ09OR19CQlJgCiogICBgQlBGX1NZU0NBTExgCiogICBgQlBGX0pJVGAKCkhvbGQgb24sIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYEJQRl9KSVRgIGlzIGFjdHVhbGx5IHJlcXVpcmVkLiBMZXQgbWUgY2hlY2sgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAuIEFoLCB0aGVyZSBpdCBpczoKCmBgYAppZmVxICgkKENPTkZJR19CUEZfSklUKSx5KQpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfdGNwX2NhLm8KZW5kaWYKYGBgCgpTbywgYEJQRl9KSVRgICppcyogYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBHcmVhdCwgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAwMDo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VENQX0NPTkdfQkJSJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9KSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfdHNvX2F1dG9zaXplJiMzNDssCiAgICAmIzM0O2Jicl90c29fc2VncyYjMzQ7LAogICAgJiMzNDticGZfdGNwX2NhX3Rzb19zZWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUQ1BfQ09OR19CQlImIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX0pJVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RjcF90c29fYXV0b3NpemUmIzM0OywKICAgICYjMzQ7YmJyX3Rzb19zZWdzJiMzNDssCiAgICAmIzM0O2JwZl90Y3BfY2FfdHNvX3NlZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MjoxNy41MTI5OTQwOThaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDc5NDg2MTg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQ09OR19CQlJcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Rzb19hdXRvc2l6ZVwiLFxuICAgIFwiYmJyX3Rzb19zZWdzXCIsXG4gICAgXCJicGZfdGNwX2NhX3Rzb19zZWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjE3LjUxMjk5OTQxOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2NzQ2NTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjlmMjY3ZmFiYmJkMDE5MmE1YzdkYzY0NjRhZDAzNzQ0YWVhYjk3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDAwOjQyOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5pbmRleCAyYzViODg5NTMwYjU1Li5lZjk5NzUxMTJmMTU2IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3RjcC5oXFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcXG5AQCAtODI0LDYgKzgyNCw5IEBAIHVuc2lnbmVkIGludCB0Y3Bfc3luY19tc3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgcG10dSk7XFxuIHVuc2lnbmVkIGludCB0Y3BfY3VycmVudF9tc3Moc3RydWN0IHNvY2sgKnNrKTtcXG4gdTMyIHRjcF9jbGFtcF9wcm9iZTBfdG9fdXNlcl90aW1lb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdTMyIHdoZW4pO1xcbiBcXG4rdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcXG4rXFx0XFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKTtcXG4rXFxuIC8qIEJvdW5kIE1TUyAvIFRTTyBwYWNrZXQgc2l6ZSB3aXRoIHRoZSBoYWxmIG9mIHRoZSB3aW5kb3cgKi9cXG4gc3RhdGljIGlubGluZSBpbnQgdGNwX2JvdW5kX3RvX2hhbGZfd25kKHN0cnVjdCB0Y3Bfc29jayAqdHAsIGludCBwa3RzaXplKVxcbiB7XFxuQEAgLTEzNjEsOCArMTM2NCwxMyBAQCBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIHtcXG4gXFx0LyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi9cXG4gXFx0dm9pZCAoKnBrdHNfYWNrZWQpKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBsZSk7XFxuIFxcbi1cXHQvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAob3B0aW9uYWwpICovXFxuLVxcdHUzMiAoKm1pbl90c29fc2Vncykoc3RydWN0IHNvY2sgKnNrKTtcXG4rXFx0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXFxuK1xcdCAqXFxuK1xcdCAqIElmIHByb3ZpZGVkLCB0aGlzIGNhbGxiYWNrIHJldHVybnMgdGhlIGZpbmFsIFRTTyBzZWdtZW50IG51bWJlclxcbitcXHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cXG4rXFx0ICogbXVzdCBkZXJpdmUgYW4gYXBwcm9wcmlhdGUgdmFsdWUgYW5kIGVuc3VyZSB0aGUgcmVzdWx0IGlzIHZhbGlkLlxcbitcXHQgKi9cXG4rXFx0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xcbiBcXG4gXFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXFxuIFxcdHUzMiAgKCp1bmRvX2N3bmQpKHN0cnVjdCBzb2NrICpzayk7XFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xcbmluZGV4IDc5MWUxNTA2MzIzN2MuLmU1ZmFhMzhiZGQyNTMgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXFxuKysrIGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXFxuQEAgLTI4NCw5ICsyODQsMTIgQEAgc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9wa3RzX2Fja2VkKHN0cnVjdCBzb2NrICpzaywgY29uc3Qgc3RydWN0IGFja19zYW1wbGUgKnNhbXBcXG4ge1xcbiB9XFxuIFxcbi1zdGF0aWMgdTMyIGJwZl90Y3BfY2FfbWluX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaylcXG4rc3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXFxuIHtcXG4tXFx0cmV0dXJuIDA7XFxuK1xcdGlmICh1bmxpa2VseSghbXNzX25vdykpXFxuK1xcdFxcdC8qIE5vIFRTTyBzaXppbmcgZGVjaXNpb24uIExldCBjYWxsZXIgYXBwbHkgaXRzIGxpbWl0cy4gKi9cXG4rXFx0XFx0cmV0dXJuIFUzMl9NQVg7XFxuK1xcdHJldHVybiB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYnBmX3RjcF9jYV9jb25nX2NvbnRyb2woc3RydWN0IHNvY2sgKnNrLCB1MzIgYWNrLCBpbnQgZmxhZyxcXG5AQCAtMzIwLDcgKzMyMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgdGNwX2Nvbmdlc3Rpb25fb3BzIF9fYnBmX29wc190Y3BfY29uZ2VzdGlvbl9vcHMgPSB7XFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gYnBmX3RjcF9jYV9jd25kX2V2ZW50X3R4X3N0YXJ0LFxcbiBcXHQuaW5fYWNrX2V2ZW50ID0gYnBmX3RjcF9jYV9pbl9hY2tfZXZlbnQsXFxuIFxcdC5wa3RzX2Fja2VkID0gYnBmX3RjcF9jYV9wa3RzX2Fja2VkLFxcbi1cXHQubWluX3Rzb19zZWdzID0gYnBmX3RjcF9jYV9taW5fdHNvX3NlZ3MsXFxuK1xcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXFxuIFxcdC5jb25nX2NvbnRyb2wgPSBicGZfdGNwX2NhX2NvbmdfY29udHJvbCxcXG4gXFx0LnVuZG9fY3duZCA9IGJwZl90Y3BfY2FfdW5kb19jd25kLFxcbiBcXHQuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCxcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2Jici5jIGIvbmV0L2lwdjQvdGNwX2Jici5jXFxuaW5kZXggODIzNzhhMmJmZDFlMS4uZWNmMTFiZTQ2ZjM4MiAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYmJyLmNcXG5AQCAtMjk3LDExICsyOTcsMTggQEAgc3RhdGljIHZvaWQgYmJyX3NldF9wYWNpbmdfcmF0ZShzdHJ1Y3Qgc29jayAqc2ssIHUzMiBidywgaW50IGdhaW4pXFxuIH1cXG4gXFxuIC8qIG92ZXJyaWRlIHN5c2N0bF90Y3BfbWluX3Rzb19zZWdzICovXFxuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXFxuK3N0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXFxuIHtcXG4gXFx0cmV0dXJuIFJFQURfT05DRShzay1cXHUwMDNlc2tfcGFjaW5nX3JhdGUpIFxcdTAwM2MgKGJicl9taW5fdHNvX3JhdGUgXFx1MDAzZVxcdTAwM2UgMykgPyAxIDogMjtcXG4gfVxcbiBcXG4rX19icGZfa2Z1bmMgc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcXG4re1xcbitcXHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxcbitcXHRcXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XFxuK1xcdHJldHVybiB0Y3BfdHNvX2F1dG9zaXplKHNrLCBtc3Nfbm93LCBiYnJfbWluX3Rzb19zZWdzKHNrKSk7XFxuK31cXG4rXFxuIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzX2dvYWwoc3RydWN0IHNvY2sgKnNrKVxcbiB7XFxuIFxcdHN0cnVjdCB0Y3Bfc29jayAqdHAgPSB0Y3Bfc2soc2spO1xcbkBAIC0xMTUxLDcgKzExNTgsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfYmJyX2Nvbmdfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdC51bmRvX2N3bmRcXHQ9IGJicl91bmRvX2N3bmQsXFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0XFx0PSBiYnJfY3duZF9ldmVudF90eF9zdGFydCxcXG4gXFx0LnNzdGhyZXNoXFx0PSBiYnJfc3N0aHJlc2gsXFxuLVxcdC5taW5fdHNvX3NlZ3NcXHQ9IGJicl9taW5fdHNvX3NlZ3MsXFxuK1xcdC50c29fc2Vnc1xcdD0gYmJyX3Rzb19zZWdzLFxcbiBcXHQuZ2V0X2luZm9cXHQ9IGJicl9nZXRfaW5mbyxcXG4gXFx0LnNldF9zdGF0ZVxcdD0gYmJyX3NldF9zdGF0ZSxcXG4gfTtcXG5AQCAtMTE2Myw3ICsxMTcwLDcgQEAgQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zbmRidWZfZXhwYW5kKVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3VuZG9fY3duZClcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KVxcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NzdGhyZXNoKVxcbi1CVEZfSURfRkxBR1MoZnVuYywgYmJyX21pbl90c29fc2VncylcXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9zZXRfc3RhdGUpXFxuIEJURl9LRlVOQ1NfRU5EKHRjcF9iYnJfY2hlY2tfa2Z1bmNfaWRzKVxcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX291dHB1dC5jIGIvbmV0L2lwdjQvdGNwX291dHB1dC5jXFxuaW5kZXggZDdjMTQ0NGI1ZTMwNC4uZDliZGEzYTg0ZjI2MSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcXG4rKysgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcXG5AQCAtMjI1Myw4ICsyMjUzLDggQEAgc3RhdGljIGJvb2wgdGNwX25hZ2xlX2NoZWNrKGJvb2wgcGFydGlhbCwgY29uc3Qgc3RydWN0IHRjcF9zb2NrICp0cCxcXG4gICogZm9yIGV2ZXJ5IDJeOSB1c2VjIChha2EgNTEyIHVzKSBvZiBSVFQsIHNvIHRoYXQgdGhlIFJUVC1iYXNlZCBhbGxvd2FuY2VcXG4gICogaXMgYmVsb3cgMTUwMCBieXRlcyBhZnRlciA2ICogfjUwMCB1c2VjID0gM21zLlxcbiAgKi9cXG4tc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXFxuLVxcdFxcdFxcdCAgICBpbnQgbWluX3Rzb19zZWdzKVxcbit1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxcbitcXHRcXHQgICAgIGludCBtaW5fdHNvX3NlZ3MpXFxuIHtcXG4gXFx0dW5zaWduZWQgbG9uZyBieXRlcztcXG4gXFx0dTMyIHI7XFxuQEAgLTIyNjksNiArMjI2OSw3IEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19hdXRvc2l6ZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LFxcbiBcXG4gXFx0cmV0dXJuIG1heF90KHUzMiwgYnl0ZXMgLyBtc3Nfbm93LCBtaW5fdHNvX3NlZ3MpO1xcbiB9XFxuK0VYUE9SVF9TWU1CT0wodGNwX3Rzb19hdXRvc2l6ZSk7XFxuIFxcbiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWdtZW50cyB3ZSB3YW50IGluIHRoZSBza2Igd2UgYXJlIHRyYW5zbWl0dGluZy5cXG4gICogU2VlIGlmIGNvbmdlc3Rpb24gY29udHJvbCBtb2R1bGUgd2FudHMgdG8gZGVjaWRlOyBvdGhlcndpc2UsIGF1dG9zaXplLlxcbkBAIC0yMjc4LDEyICsyMjc5LDEyIEBAIHN0YXRpYyB1MzIgdGNwX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3cpXFxuIFxcdGNvbnN0IHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgKmNhX29wcyA9IGluZXRfY3NrKHNrKS1cXHUwMDNlaWNza19jYV9vcHM7XFxuIFxcdHUzMiBtaW5fdHNvLCB0c29fc2VncztcXG4gXFxuLVxcdG1pbl90c28gPSBjYV9vcHMtXFx1MDAzZW1pbl90c29fc2VncyA/XFxuLVxcdFxcdFxcdGNhX29wcy1cXHUwMDNlbWluX3Rzb19zZWdzKHNrKSA6XFxuLVxcdFxcdFxcdFJFQURfT05DRShzb2NrX25ldChzayktXFx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xcbitcXHRtaW5fdHNvID0gUkVBRF9PTkNFKHNvY2tfbmV0KHNrKS1cXHUwMDNlaXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7XFxuIFxcbi1cXHR0c29fc2VncyA9IHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xcbi1cXHRyZXR1cm4gbWluX3QodTMyLCB0c29fc2Vncywgc2stXFx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XFxuK1xcdHRzb19zZWdzID0gY2Ffb3BzLVxcdTAwM2V0c29fc2VncyA/XFxuK1xcdFxcdFxcdGNhX29wcy1cXHUwMDNldHNvX3NlZ3Moc2ssIG1zc19ub3cpIDpcXG4rXFx0XFx0XFx0dGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7XFxuK1xcdHJldHVybiBjbGFtcF90KHUzMiwgdHNvX3NlZ3MsIDEsIHNrLVxcdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xcbiB9XFxuIFxcbiAvKiBSZXR1cm5zIHRoZSBwb3J0aW9uIG9mIHNrYiB3aGljaCBjYW4gYmUgc2VudCByaWdodCBhd2F5ICovXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy90Y3BfY2Ffa2Z1bmMuY1xcbmluZGV4IDBhM2U5ZDM1YmY2ZjAuLjU4MjYyZTQ5MDMzNjQgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXFxuQEAgLTEwLDcgKzEwLDcgQEAgZXh0ZXJuIHUzMiBiYnJfc25kYnVmX2V4cGFuZChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBiYnJfY3duZF9ldmVudF90eF9zdGFydChzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4gZXh0ZXJuIHUzMiBiYnJfc3N0aHJlc2goc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XFxuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcXG4rZXh0ZXJuIHUzMiBiYnJfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdykgX19rc3ltO1xcbiBleHRlcm4gdm9pZCBiYnJfc2V0X3N0YXRlKHN0cnVjdCBzb2NrICpzaywgdTggbmV3X3N0YXRlKSBfX2tzeW07XFxuIFxcbiBleHRlcm4gdm9pZCBkY3RjcF9pbml0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xcbkBAIC05MCw5ICs5MCw5IEBAIHUzMiBCUEZfUFJPRyhzc3RocmVzaCwgc3RydWN0IHNvY2sgKnNrKVxcbiB9XFxuIFxcbiBTRUMoXFxcInN0cnVjdF9vcHNcXFwiKVxcbi11MzIgQlBGX1BST0cobWluX3Rzb19zZWdzLCBzdHJ1Y3Qgc29jayAqc2spXFxuK3UzMiBCUEZfUFJPRyh0c29fc2Vncywgc3RydWN0IHNvY2sgKnNrLCB1MzIgbXNzX25vdylcXG4ge1xcbi1cXHRyZXR1cm4gYmJyX21pbl90c29fc2Vncyhzayk7XFxuK1xcdHJldHVybiBiYnJfdHNvX3NlZ3Moc2ssIG1zc19ub3cpO1xcbiB9XFxuIFxcbiBTRUMoXFxcInN0cnVjdF9vcHNcXFwiKVxcbkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XFxuIFxcdC5jd25kX2V2ZW50XFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXFxuIFxcdC5jd25kX2V2ZW50X3R4X3N0YXJ0ID0gKHZvaWQgKiljd25kX2V2ZW50X3R4X3N0YXJ0LFxcbiBcXHQuc3N0aHJlc2hcXHQ9ICh2b2lkICopc3N0aHJlc2gsXFxuLVxcdC5taW5fdHNvX3NlZ3NcXHQ9ICh2b2lkICopbWluX3Rzb19zZWdzLFxcbitcXHQudHNvX3NlZ3NcXHQ9ICh2b2lkICopdHNvX3NlZ3MsXFxuIFxcdC5zZXRfc3RhdGVcXHQ9ICh2b2lkICopc2V0X3N0YXRlLFxcbiBcXHQucGt0c19hY2tlZCAgICAgPSAodm9pZCAqKXBrdHNfYWNrZWQsXFxuIFxcdC5uYW1lXFx0XFx0PSBcXFwidGNwX2NhX2tmdW5jXFxcIixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MTguMDIwNTExMjc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NzAyODczMjk3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVENQX0NPTkdfQkJSXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX0pJVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF90c29fYXV0b3NpemVcIixcbiAgICBcImJicl90c29fc2Vnc1wiLFxuICAgIFwiYnBmX3RjcF9jYV90c29fc2Vnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgYnkgcmVwbGFjaW5nIG1pbl90c29fc2VncyB3aXRoIHRzb19zZWdzIGNhbGxiYWNrLCBhbGxvd2luZyBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcyB0byBkaXJlY3RseSBkaWN0YXRlIHRoZSBUU08gc2VnbWVudCBzaXplLiBJdCBpbXBsZW1lbnRzIHRoaXMgY2FsbGJhY2sgZm9yIEJCUiBhbmQgQlBGIGNvbmdlc3Rpb24gY29udHJvbHMuIFRoaXMgaXMgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGNvcmUgbmV0d29ya2luZyBjb2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmOWYyNjdmYWJiYmQwMTkyYTVjN2RjNjQ2NGFkMDM3NDRhZWFiOTcxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAwMDo0MjoxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjcC5oIGIvaW5jbHVkZS9uZXQvdGNwLmhcbmluZGV4IDJjNWI4ODk1MzBiNTUuLmVmOTk3NTExMmYxNTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC90Y3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvdGNwLmhcbkBAIC04MjQsNiArODI0LDkgQEAgdW5zaWduZWQgaW50IHRjcF9zeW5jX21zcyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBwbXR1KTtcbiB1bnNpZ25lZCBpbnQgdGNwX2N1cnJlbnRfbXNzKHN0cnVjdCBzb2NrICpzayk7XG4gdTMyIHRjcF9jbGFtcF9wcm9iZTBfdG9fdXNlcl90aW1lb3V0KGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdTMyIHdoZW4pO1xuIFxuK3UzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4rXHRcdCAgICAgaW50IG1pbl90c29fc2Vncyk7XG4rXG4gLyogQm91bmQgTVNTIC8gVFNPIHBhY2tldCBzaXplIHdpdGggdGhlIGhhbGYgb2YgdGhlIHdpbmRvdyAqL1xuIHN0YXRpYyBpbmxpbmUgaW50IHRjcF9ib3VuZF90b19oYWxmX3duZChzdHJ1Y3QgdGNwX3NvY2sgKnRwLCBpbnQgcGt0c2l6ZSlcbiB7XG5AQCAtMTM2MSw4ICsxMzY0LDEzIEBAIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMge1xuIFx0LyogaG9vayBmb3IgcGFja2V0IGFjayBhY2NvdW50aW5nIChvcHRpb25hbCkgKi9cbiBcdHZvaWQgKCpwa3RzX2Fja2VkKShzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IHN0cnVjdCBhY2tfc2FtcGxlICpzYW1wbGUpO1xuIFxuLVx0Lyogb3ZlcnJpZGUgc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MgKG9wdGlvbmFsKSAqL1xuLVx0dTMyICgqbWluX3Rzb19zZWdzKShzdHJ1Y3Qgc29jayAqc2spO1xuK1x0LyogT3ZlcnJpZGUgdGNwX3Rzb19hdXRvc2l6ZSAob3B0aW9uYWwpXG4rXHQgKlxuK1x0ICogSWYgcHJvdmlkZWQsIHRoaXMgY2FsbGJhY2sgcmV0dXJucyB0aGUgZmluYWwgVFNPIHNlZ21lbnQgbnVtYmVyXG4rXHQgKiBhbmQgd2lsbCBieXBhc3MgdGNwX3Rzb19hdXRvc2l6ZSgpIGVudGlyZWx5LiBUaGUgaW1wbGVtZW50YXRpb25cbitcdCAqIG11c3QgZGVyaXZlIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGFuZCBlbnN1cmUgdGhlIHJlc3VsdCBpcyB2YWxpZC5cbitcdCAqL1xuK1x0dTMyICgqdHNvX3NlZ3MpKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpO1xuIFxuIFx0LyogbmV3IHZhbHVlIG9mIGN3bmQgYWZ0ZXIgbG9zcyAocmVxdWlyZWQpICovXG4gXHR1MzIgICgqdW5kb19jd25kKShzdHJ1Y3Qgc29jayAqc2spO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2JwZl90Y3BfY2EuYyBiL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuaW5kZXggNzkxZTE1MDYzMjM3Yy4uZTVmYWEzOGJkZDI1MyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2JwZl90Y3BfY2EuY1xuKysrIGIvbmV0L2lwdjQvYnBmX3RjcF9jYS5jXG5AQCAtMjg0LDkgKzI4NCwxMiBAQCBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcFxuIHtcbiB9XG4gXG4tc3RhdGljIHUzMiBicGZfdGNwX2NhX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4rc3RhdGljIHUzMiBicGZfdGNwX2NhX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4ge1xuLVx0cmV0dXJuIDA7XG4rXHRpZiAodW5saWtlbHkoIW1zc19ub3cpKVxuK1x0XHQvKiBObyBUU08gc2l6aW5nIGRlY2lzaW9uLiBMZXQgY2FsbGVyIGFwcGx5IGl0cyBsaW1pdHMuICovXG4rXHRcdHJldHVybiBVMzJfTUFYO1xuK1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIDApO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBicGZfdGNwX2NhX2NvbmdfY29udHJvbChzdHJ1Y3Qgc29jayAqc2ssIHUzMiBhY2ssIGludCBmbGFnLFxuQEAgLTMyMCw3ICszMjMsNyBAQCBzdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnQgPSBicGZfdGNwX2NhX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuaW5fYWNrX2V2ZW50ID0gYnBmX3RjcF9jYV9pbl9hY2tfZXZlbnQsXG4gXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcbi1cdC5taW5fdHNvX3NlZ3MgPSBicGZfdGNwX2NhX21pbl90c29fc2VncyxcbitcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXG4gXHQuY29uZ19jb250cm9sID0gYnBmX3RjcF9jYV9jb25nX2NvbnRyb2wsXG4gXHQudW5kb19jd25kID0gYnBmX3RjcF9jYV91bmRvX2N3bmQsXG4gXHQuc25kYnVmX2V4cGFuZCA9IGJwZl90Y3BfY2Ffc25kYnVmX2V4cGFuZCxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3BfYmJyLmMgYi9uZXQvaXB2NC90Y3BfYmJyLmNcbmluZGV4IDgyMzc4YTJiZmQxZTEuLmVjZjExYmU0NmYzODIgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYmJyLmNcbisrKyBiL25ldC9pcHY0L3RjcF9iYnIuY1xuQEAgLTI5NywxMSArMjk3LDE4IEBAIHN0YXRpYyB2b2lkIGJicl9zZXRfcGFjaW5nX3JhdGUoc3RydWN0IHNvY2sgKnNrLCB1MzIgYncsIGludCBnYWluKVxuIH1cbiBcbiAvKiBvdmVycmlkZSBzeXNjdGxfdGNwX21pbl90c29fc2VncyAqL1xuLV9fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spXG4rc3RhdGljIHUzMiBiYnJfbWluX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaylcbiB7XG4gXHRyZXR1cm4gUkVBRF9PTkNFKHNrLVx1MDAzZXNrX3BhY2luZ19yYXRlKSBcdTAwM2MgKGJicl9taW5fdHNvX3JhdGUgXHUwMDNlXHUwMDNlIDMpID8gMSA6IDI7XG4gfVxuIFxuK19fYnBmX2tmdW5jIHN0YXRpYyB1MzIgYmJyX3Rzb19zZWdzKHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4re1xuK1x0aWYgKHVubGlrZWx5KCFtc3Nfbm93KSlcbitcdFx0cmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spO1xuK1x0cmV0dXJuIHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIGJicl9taW5fdHNvX3NlZ3Moc2spKTtcbit9XG4rXG4gc3RhdGljIHUzMiBiYnJfdHNvX3NlZ3NfZ29hbChzdHJ1Y3Qgc29jayAqc2spXG4ge1xuIFx0c3RydWN0IHRjcF9zb2NrICp0cCA9IHRjcF9zayhzayk7XG5AQCAtMTE1MSw3ICsxMTU4LDcgQEAgc3RhdGljIHN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgdGNwX2Jicl9jb25nX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0LnVuZG9fY3duZFx0PSBiYnJfdW5kb19jd25kLFxuIFx0LmN3bmRfZXZlbnRfdHhfc3RhcnRcdD0gYmJyX2N3bmRfZXZlbnRfdHhfc3RhcnQsXG4gXHQuc3N0aHJlc2hcdD0gYmJyX3NzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSBiYnJfbWluX3Rzb19zZWdzLFxuK1x0LnRzb19zZWdzXHQ9IGJicl90c29fc2VncyxcbiBcdC5nZXRfaW5mb1x0PSBiYnJfZ2V0X2luZm8sXG4gXHQuc2V0X3N0YXRlXHQ9IGJicl9zZXRfc3RhdGUsXG4gfTtcbkBAIC0xMTYzLDcgKzExNzAsNyBAQCBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NuZGJ1Zl9leHBhbmQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl91bmRvX2N3bmQpXG4gQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KVxuIEJURl9JRF9GTEFHUyhmdW5jLCBiYnJfc3N0aHJlc2gpXG4tQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl9taW5fdHNvX3NlZ3MpXG4rQlRGX0lEX0ZMQUdTKGZ1bmMsIGJicl90c29fc2VncylcbiBCVEZfSURfRkxBR1MoZnVuYywgYmJyX3NldF9zdGF0ZSlcbiBCVEZfS0ZVTkNTX0VORCh0Y3BfYmJyX2NoZWNrX2tmdW5jX2lkcylcbiBcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbmluZGV4IGQ3YzE0NDRiNWUzMDQuLmQ5YmRhM2E4NGYyNjEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmNcbisrKyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuY1xuQEAgLTIyNTMsOCArMjI1Myw4IEBAIHN0YXRpYyBib29sIHRjcF9uYWdsZV9jaGVjayhib29sIHBhcnRpYWwsIGNvbnN0IHN0cnVjdCB0Y3Bfc29jayAqdHAsXG4gICogZm9yIGV2ZXJ5IDJeOSB1c2VjIChha2EgNTEyIHVzKSBvZiBSVFQsIHNvIHRoYXQgdGhlIFJUVC1iYXNlZCBhbGxvd2FuY2VcbiAgKiBpcyBiZWxvdyAxNTAwIGJ5dGVzIGFmdGVyIDYgKiB+NTAwIHVzZWMgPSAzbXMuXG4gICovXG4tc3RhdGljIHUzMiB0Y3BfdHNvX2F1dG9zaXplKGNvbnN0IHN0cnVjdCBzb2NrICpzaywgdW5zaWduZWQgaW50IG1zc19ub3csXG4tXHRcdFx0ICAgIGludCBtaW5fdHNvX3NlZ3MpXG4rdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbitcdFx0ICAgICBpbnQgbWluX3Rzb19zZWdzKVxuIHtcbiBcdHVuc2lnbmVkIGxvbmcgYnl0ZXM7XG4gXHR1MzIgcjtcbkBAIC0yMjY5LDYgKzIyNjksNyBAQCBzdGF0aWMgdTMyIHRjcF90c29fYXV0b3NpemUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdyxcbiBcbiBcdHJldHVybiBtYXhfdCh1MzIsIGJ5dGVzIC8gbXNzX25vdywgbWluX3Rzb19zZWdzKTtcbiB9XG4rRVhQT1JUX1NZTUJPTCh0Y3BfdHNvX2F1dG9zaXplKTtcbiBcbiAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWdtZW50cyB3ZSB3YW50IGluIHRoZSBza2Igd2UgYXJlIHRyYW5zbWl0dGluZy5cbiAgKiBTZWUgaWYgY29uZ2VzdGlvbiBjb250cm9sIG1vZHVsZSB3YW50cyB0byBkZWNpZGU7IG90aGVyd2lzZSwgYXV0b3NpemUuXG5AQCAtMjI3OCwxMiArMjI3OSwxMiBAQCBzdGF0aWMgdTMyIHRjcF90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93KVxuIFx0Y29uc3Qgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyAqY2Ffb3BzID0gaW5ldF9jc2soc2spLVx1MDAzZWljc2tfY2Ffb3BzO1xuIFx0dTMyIG1pbl90c28sIHRzb19zZWdzO1xuIFxuLVx0bWluX3RzbyA9IGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3MgP1xuLVx0XHRcdGNhX29wcy1cdTAwM2VtaW5fdHNvX3NlZ3Moc2spIDpcbi1cdFx0XHRSRUFEX09OQ0Uoc29ja19uZXQoc2spLVx1MDAzZWlwdjQuc3lzY3RsX3RjcF9taW5fdHNvX3NlZ3MpO1xuK1x0bWluX3RzbyA9IFJFQURfT05DRShzb2NrX25ldChzayktXHUwMDNlaXB2NC5zeXNjdGxfdGNwX21pbl90c29fc2Vncyk7XG4gXG4tXHR0c29fc2VncyA9IHRjcF90c29fYXV0b3NpemUoc2ssIG1zc19ub3csIG1pbl90c28pO1xuLVx0cmV0dXJuIG1pbl90KHUzMiwgdHNvX3NlZ3MsIHNrLVx1MDAzZXNrX2dzb19tYXhfc2Vncyk7XG4rXHR0c29fc2VncyA9IGNhX29wcy1cdTAwM2V0c29fc2VncyA/XG4rXHRcdFx0Y2Ffb3BzLVx1MDAzZXRzb19zZWdzKHNrLCBtc3Nfbm93KSA6XG4rXHRcdFx0dGNwX3Rzb19hdXRvc2l6ZShzaywgbXNzX25vdywgbWluX3Rzbyk7XG4rXHRyZXR1cm4gY2xhbXBfdCh1MzIsIHRzb19zZWdzLCAxLCBzay1cdTAwM2Vza19nc29fbWF4X3NlZ3MpO1xuIH1cbiBcbiAvKiBSZXR1cm5zIHRoZSBwb3J0aW9uIG9mIHNrYiB3aGljaCBjYW4gYmUgc2VudCByaWdodCBhd2F5ICovXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXG5pbmRleCAwYTNlOWQzNWJmNmYwLi41ODI2MmU0OTAzMzY0IDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3RjcF9jYV9rZnVuYy5jXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdGNwX2NhX2tmdW5jLmNcbkBAIC0xMCw3ICsxMCw3IEBAIGV4dGVybiB1MzIgYmJyX3NuZGJ1Zl9leHBhbmQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG4gZXh0ZXJuIHUzMiBiYnJfdW5kb19jd25kKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB2b2lkIGJicl9jd25kX2V2ZW50X3R4X3N0YXJ0KHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuIGV4dGVybiB1MzIgYmJyX3NzdGhyZXNoKHN0cnVjdCBzb2NrICpzaykgX19rc3ltO1xuLWV4dGVybiB1MzIgYmJyX21pbl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2spIF9fa3N5bTtcbitleHRlcm4gdTMyIGJicl90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KSBfX2tzeW07XG4gZXh0ZXJuIHZvaWQgYmJyX3NldF9zdGF0ZShzdHJ1Y3Qgc29jayAqc2ssIHU4IG5ld19zdGF0ZSkgX19rc3ltO1xuIFxuIGV4dGVybiB2b2lkIGRjdGNwX2luaXQoc3RydWN0IHNvY2sgKnNrKSBfX2tzeW07XG5AQCAtOTAsOSArOTAsOSBAQCB1MzIgQlBGX1BST0coc3N0aHJlc2gsIHN0cnVjdCBzb2NrICpzaylcbiB9XG4gXG4gU0VDKFwic3RydWN0X29wc1wiKVxuLXUzMiBCUEZfUFJPRyhtaW5fdHNvX3NlZ3MsIHN0cnVjdCBzb2NrICpzaylcbit1MzIgQlBGX1BST0codHNvX3NlZ3MsIHN0cnVjdCBzb2NrICpzaywgdTMyIG1zc19ub3cpXG4ge1xuLVx0cmV0dXJuIGJicl9taW5fdHNvX3NlZ3Moc2spO1xuK1x0cmV0dXJuIGJicl90c29fc2VncyhzaywgbXNzX25vdyk7XG4gfVxuIFxuIFNFQyhcInN0cnVjdF9vcHNcIilcbkBAIC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyB0Y3BfY2Ffa2Z1bmMgPSB7XG4gXHQuY3duZF9ldmVudFx0PSAodm9pZCAqKWN3bmRfZXZlbnQsXG4gXHQuY3duZF9ldmVudF90eF9zdGFydCA9ICh2b2lkICopY3duZF9ldmVudF90eF9zdGFydCxcbiBcdC5zc3RocmVzaFx0PSAodm9pZCAqKXNzdGhyZXNoLFxuLVx0Lm1pbl90c29fc2Vnc1x0PSAodm9pZCAqKW1pbl90c29fc2VncyxcbitcdC50c29fc2Vnc1x0PSAodm9pZCAqKXRzb19zZWdzLFxuIFx0LnNldF9zdGF0ZVx0PSAodm9pZCAqKXNldF9zdGF0ZSxcbiBcdC5wa3RzX2Fja2VkICAgICA9ICh2b2lkICopcGt0c19hY2tlZCxcbiBcdC5uYW1lXHRcdD0gXCJ0Y3BfY2Ffa2Z1bmNcIixcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjE4LjAyMDUxMjczNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQ1MjkwMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVENQIENvbmdlc3Rpb24gQ29udHJvbCBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2guIEl0J3MgdG91Y2hpbmcgdGhlIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgY29kZSwgd2hpY2ggYWx3YXlzIHdhcnJhbnRzIGNsb3NlIGF0dGVudGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgaXQncyBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UuIEl0IHNlZW1zIHRvIGJlIHJlcGxhY2luZyBgbWluX3Rzb19zZWdzYCB3aXRoIGB0c29fc2Vnc2Agd2l0aGluIHRoZSBgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wc2AuIFRoYXQgc3RydWN0dXJlIGlzIGZ1bmRhbWVudGFsIHRvIGhvdyB0aGUgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIGludGVyYWN0LCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBzd2FwIGlzIGNyaXRpY2FsLiBJdCdzIG1vZGlmaWVkIHNldmVyYWwga2V5IGZpbGVzOiBgYnBmX3RjcF9jYS5jYCwgYHRjcF9iYnIuY2AsIGFuZCBgdGNwX291dHB1dC5jYCwgcGx1cyBhIEJQRiBzZWxmdGVzdC4gVGhlIHBhdGNoIGFsc28gZXhwb3NlcyBgdGNwX3Rzb19hdXRvc2l6ZWAgYW5kIGFkanVzdHMgYHRjcF90c29fc2Vnc2AgdG8gdXNlIGB0c29fc2Vnc2Agd2hlbiBpdCdzIGF2YWlsYWJsZS5cblxuTXkgZmlyc3QgdGhvdWdodCBpcywgaXMgdGhpcyBldmVuICp1c2VkKj8gSXMgdGhpcyBmdW5jdGlvbmFsbHkgY29ycmVjdD8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGlzIHJlYWNoYWJsZSBpbiB0aGUgY29kZSBhbmQgdGhhdCBpdCBiZWhhdmVzIGFzIGV4cGVjdGVkLiBRdWlja2x5IGNoZWNraW5nLCBJIHNlZSB0aGF0IGB0Y3BfdHNvX3NlZ3NgICppcyogY2FsbGVkIGluIHRoZSBUQ1Agb3V0cHV0IHBhdGgsIHdoaWNoIGlzIGdvb2QuIFRoYXQgY29uZmlybXMgdGhhdCBpdCdzIGEgcmVsZXZhbnQgcGFydCBvZiB0aGUgZmxvdy4gQW5kIGl0IGxvb2tzIGxpa2UgYGJicl90c29fc2Vnc2AgaGFzIGJlZW4gaW50cm9kdWNlZCBhcyB0aGUgbmV3IGNhbGxiYWNrIGZvciBCQlIsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgdGhlIG5ldyBjYWxsYmFjayBmb3IgQlBGLlxuXG5Ob3csIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUsIEkgbmVlZCB0byBrbm93IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtcy4gVGltZSB0byBkaWcgaW50byB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIHNlYXJjaCBmb3IgYFRDUF9DT05HX0JCUmAgdG8gc2VlIGhvdyBCQlIgaXMgZW5hYmxlZCBhbmQgYWxzbyBgQlBGX1NZU0NBTExgIChvciBzb21ldGhpbmcgc2ltaWxhcikgdG8gY29uZmlybSBob3cgQlBGIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wgaXMgaGFuZGxlZC4gVGhpcyB3aWxsIHRlbGwgbWUgaG93IHByZXZhbGVudCB0aGVzZSBjaGFuZ2VzIGFyZSwgYW5kIGhvdyB0aGV5IGFyZSBlbmFibGVkIHdpdGhpbiB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDIzLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MjMuMDg1MDQ0MzlaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDczMzcxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVENQX0NPTkdfQkJSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNjY1LVxcbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcXG5uZXQvaXB2NC9LY29uZmlnLTY2Ny1cXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MjQuODg1NzgyOTc4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU1Mzg2NTY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIEJCUiBhbmQgQlBGIGluIHRoZSBMaW51eCBLZXJuZWwqKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBicGZfdGNwX2NhLmNgIGFuZCB0aGUga2VybmVsJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgY29uZmlybSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGp1bXAgaW50byB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUuIEknbSBsb29raW5nIGZvciB0aGUgZGVmaW5pdGlvbnMgb2YgYm90aCBgVENQX0NPTkdfQkJSYCAod2hpY2ggZW5hYmxlcyBCQlIgYXMgYSBjb25nZXN0aW9uIGNvbnRyb2wgYWxnb3JpdGhtKSBhbmQgYEJQRl9TWVNDQUxMYCwgc2luY2UgQlBGIGlzIGVzc2VudGlhbCB0byB0aGUgYGJwZl90Y3BfY2EuY2AgY29kZSwgYXMgSSBzdXNwZWN0LiBJZiBgVENQX0NPTkdfQkJSYCBpc24ndCBlbmFibGVkLCB0aGUgZmlsZSB3b24ndCBiZSB1c2VkLCBidXQgaWYgaXQgaXMsIEkgY2FuIGRldGVybWluZSBob3cgdGhpcyBpcyBsaW5rZWQuIEFuZCBpZiBgQlBGX1NZU0NBTExgIGlzbid0IGVuYWJsZWQsIHRoZW4gSSBuZWVkIHRvIGtub3cgd2h5IHRoZSBgYnBmX3RjcF9jYS5jYCBjb2RlIHN0aWxsIGV4aXN0cy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBmZWF0dXJlIGdhdGVzIGFyZSBjb25maWd1cmVkIGFuZCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlLCBzbyB0aGF0IEkgY2FuIHNlZSBob3cgdGhlc2UgdHdvIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kLCBvZiBjb3Vyc2UsIHRoZSBpbXBsaWNhdGlvbnMgb2YgZWFjaCBvcHRpb24uIFRoaXMgd2lsbCBnaXZlIG1lIHRoZSBwcm9wZXIgY29udGV4dCBmb3IgdGhlIHJlc3Qgb2YgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5MiwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjI4LjQzOTY1MTI4NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTk4OTUyMTczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90Y3BfY2FcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9NzE9aWZlcSAoJChDT05GSUdfQlBGX0pJVCkseSlcXG5uZXQvaXB2NC9NYWtlZmlsZTo3MjpvYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl90Y3BfY2Eub1xcbm5ldC9pcHY0L01ha2VmaWxlLTczLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjMwLjYzODYxMDcyOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTQxMTczNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGZvciBCUEYgYW5kIEJCUiBNb2R1bGVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBidWlsZGluZyB0aGlzIGtlcm5lbCBtb2R1bGUsIGFuZCBJIGtub3cgSSBuZWVkIGEgY291cGxlIG9mIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBlbmFibGVkLiBGaXJzdCBhbmQgZm9yZW1vc3QsIGZvciB0aGF0IGBicGZfdGNwX2NhLmNgIG1vZHVsZSwgSSBhYnNvbHV0ZWx5IHJlcXVpcmUgYm90aCBgQ09ORklHX0JQRl9TWVNDQUxMYCBhbmQgYENPTkZJR19CUEZfSklUYC4gVGhvc2UgYXJlIG5vbi1uZWdvdGlhYmxlOyBubyBCUEYgd2l0aG91dCB0aG9zZS5cblxuQW5kIHRoZW4gZm9yIHRoZSBgdGNwX2Jici5jYCBtb2R1bGUsIGBDT05GSUdfVENQX0NPTkdfQkJSYCBpcywgb2YgY291cnNlLCBlc3NlbnRpYWwuIFRoYXQncyBhIGdpdmVuLlxuXG5Ob3csIEknbSBqdXN0IHF1aWNrbHkgY2hlY2tpbmcgc29tZXRoaW5nIGVsc2UsIEknbSBnb2luZyB0byB0YWtlIGEgbG9vayBhdCB0aGUgYHRjcF90c29fc2Vnc2AgdmFyaWFibGUgaW4gYG5ldC9pcHY0L3RjcF9vdXRwdXQuY2AuIEp1c3Qgd2FudCB0byBjb25maXJtIHRoYXQncyBiZWhhdmluZyBhcyBleHBlY3RlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2Ygd2hhdCBJJ20gZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMjYsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MjozMy43OTI3MzAxMTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY1ODk2NTc5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfdHNvX3NlZ3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL2luZXRfY29ubmVjdGlvbl9zb2NrLnJzdD0yMT11MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY3NrX3BtdHVfY29va2llICAgICAgIHJlYWRfd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3Bfc3luY19tc3MsdGNwX2N1cnJlbnRfbXNzLHRjcF8uLi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvaW5ldF9jb25uZWN0aW9uX3NvY2sucnN0OjIyOnN0cnVjdCB0Y3BfY29uZ2VzdGlvbl9vcHMgICAgICAgICAgIGljc2tfY2Ffb3BzICAgICAgICAgICAgcmVhZF93cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRjcF9jd25kX3ZhbGlkYXRlLHRjcF90c29fc2Vncyx0Yy4uLlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9pbmV0X2Nvbm5lY3Rpb25fc29jay5yc3QtMjMtc3RydWN0IGluZXRfY29ubmVjdGlvbl9zb2NrX2FmX29wcyAgaWNza19hZl9vcHMgICAgICAgICAgICByZWFkX21vc3RseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwX2ZpbmlzaF9jb25uZWN0LHRjcF9zZW5kX3N5bl9kLi4uXFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9MjI3Mj1FWFBPUlRfU1lNQk9MKHRjcF90c29fYXV0b3NpemUpO1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jLTIyNzYtICovXFxubmV0L2lwdjQvdGNwX291dHB1dC5jOjIyNzc6c3RhdGljIHUzMiB0Y3BfdHNvX3NlZ3Moc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBpbnQgbXNzX25vdylcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjI3OC17XFxuLS1cXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmM9Mjk2NT1zdGF0aWMgYm9vbCB0Y3Bfd3JpdGVfeG1pdChzdHJ1Y3Qgc29jayAqc2ssIHVuc2lnbmVkIGludCBtc3Nfbm93LCBpbnQgbm9uYWdsZSxcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0yOTkyLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzoyOTkzOlxcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCBtc3Nfbm93KTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMjk5NC1cXHR3aGlsZSAoKHNrYiA9IHRjcF9zZW5kX2hlYWQoc2spKSkge1xcbi0tXFxubmV0L2lwdjQvdGNwX291dHB1dC5jPTM3MjY9dm9pZCB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYy0zNzM5LVxcdHNrYiA9IHRwLVxcdTAwM2VyZXRyYW5zbWl0X3NrYl9oaW50ID86IHJ0eF9oZWFkO1xcbm5ldC9pcHY0L3RjcF9vdXRwdXQuYzozNzQwOlxcdG1heF9zZWdzID0gdGNwX3Rzb19zZWdzKHNrLCB0Y3BfY3VycmVudF9tc3Moc2spKTtcXG5uZXQvaXB2NC90Y3Bfb3V0cHV0LmMtMzc0MS1cXHRza2JfcmJ0cmVlX3dhbGtfZnJvbShza2IpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6MzUuNDUxNzAxNjU5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NTU4NTIxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBQcmlvcml0aXphdGlvbiBmb3IgVENQIFRTTyBTZWdtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBtb2RpZmljYXRpb25zIHRvIHRoZSBUQ1AgVFNPIHNlZ21lbnRhdGlvbiBjb2RlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGB0Y3BfdHNvX3NlZ3NgLiBUaGlzIGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgZ2V0IGNhbGxlZCBmcm9tIHNvbWUgcmVhbGx5IGhvdCBjb2RlIHBhdGhzIOKAkyBgdGNwX3dyaXRlX3htaXRgIGFuZCBgdGNwX3htaXRfcmV0cmFuc21pdF9xdWV1ZWAg4oCTIHNvIGFueSBidWdzIGhlcmUgYXJlIGdvaW5nIHRvIGJlIGltcGFjdGZ1bC5cblxuVGhlIHBhdGNoIHRvdWNoZXMgYHRjcF90c29fYXV0b3NpemVgLCBgYmJyX3Rzb19zZWdzYCwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLCBhbmQgYHRjcF90c29fc2Vnc2AgZGlyZWN0bHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHByaW9yaXRpemUgZnV6emluZyB0aG9zZSBmdW5jdGlvbnMuIEJ1dCB3YWl0LCBsZXQncyB0aGluayBhYm91dCB0aGlzIHN0cmF0ZWdpY2FsbHkuXG5cbmB0Y3BfdHNvX2F1dG9zaXplYCBpcyBleHBvcnRlZCwgd2hpY2ggaXMgZ29vZC4gVGhhdCBtYWtlcyBpdCBhIGRpc3RpbmN0IHN5bWJvbCBhbmQgdGhlcmVmb3JlIGFuIGVhc2llciB0YXJnZXQgZm9yIGZ1enplcnMuIGBiYnJfdHNvX3NlZ3NgIGlzIHN0YXRpYywgd2hpY2ggaXMgdXN1YWxseSBhIHBhaW4sIGJ1dCBpdCdzIG1hcmtlZCBhcyBgX19icGZfa2Z1bmNgLCB3aGljaCBtZWFucyBpdCB3b24ndCBiZSBpbmxpbmVkLiBUaGF0J3MgYSBodWdlIHdpbiDigJMgaXQncyBhIGRpc3RpbmN0IHN5bWJvbCwganVzdCBsaWtlIHRoZSBleHBvcnRlZCBvbmUhIEFuZCB0aGVuIHdlIGhhdmUgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLCB3aGljaCBpcyBzdGF0aWMuIEZpbmFsbHksIGB0Y3BfdHNvX3NlZ3NgIGlzIHN0YXRpYyBhcyB3ZWxsLlxuXG5TbywgbGV0J3MgemVybyBpbiBvbiBgYmJyX3Rzb19zZWdzYCBhbmQgYHRjcF90c29fYXV0b3NpemVgIHByaW1hcmlseS4gQmVjYXVzZSwgd2hpbGUgc3RhdGljIGZ1bmN0aW9ucyBhcmUgaGFyZGVyIHRvIGRpcmVjdGx5IHRhcmdldCwgdGhlIGBfX2JwZl9rZnVuY2AgbWVhbnMgYGJicl90c29fc2Vnc2AgaXNuJ3QgaW5saW5lZCwgc28gaXQncyB0YXJnZXRhYmxlLiBOb3csIHRoYXQgbGVhdmVzIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBhcyB0aGUgZmluYWwgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMTQsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6NDAuOTI3MjkwOTU3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE0ODY3MzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl90Y3BfY2FfdHNvX3NlZ3NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvYnBmX3RjcF9jYS5jPTI4Mz1zdGF0aWMgdm9pZCBicGZfdGNwX2NhX3BrdHNfYWNrZWQoc3RydWN0IHNvY2sgKnNrLCBjb25zdCBzdHJ1Y3QgYWNrX3NhbXBsZSAqc2FtcGxlKVxcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTI4Ni1cXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6Mjg3OnN0YXRpYyB1MzIgYnBmX3RjcF9jYV90c29fc2VncyhzdHJ1Y3Qgc29jayAqc2ssIHUzMiBtc3Nfbm93KVxcbm5ldC9pcHY0L2JwZl90Y3BfY2EuYy0yODgte1xcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jPTMxOD1zdGF0aWMgc3RydWN0IHRjcF9jb25nZXN0aW9uX29wcyBfX2JwZl9vcHNfdGNwX2Nvbmdlc3Rpb25fb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNS1cXHQucGt0c19hY2tlZCA9IGJwZl90Y3BfY2FfcGt0c19hY2tlZCxcXG5uZXQvaXB2NC9icGZfdGNwX2NhLmM6MzI2OlxcdC50c29fc2VncyA9IGJwZl90Y3BfY2FfdHNvX3NlZ3MsXFxubmV0L2lwdjQvYnBmX3RjcF9jYS5jLTMyNy1cXHQuY29uZ19jb250cm9sID0gYnBmX3RjcF9jYV9jb25nX2NvbnRyb2wsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjQyLjU0MjE2ODg1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjczNjE5Nzg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgVFNPIFNlZ21lbnQgQ2FsY3VsYXRpb24gaW4gVENQKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgVENQIFRTTyBzZWdtZW50IHNpemluZyBsb2dpYy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQsIG9yIGF0IGxlYXN0IGEgc3RhbmRhbG9uZSB2ZXJzaW9uIHdpbGwgZXhpc3QuIFRoaXMgaXMgaW1wb3J0YW50IHRvIG5vdGUuXG5cblRoZXJlZm9yZSwgSSB0aG91Z2h0IHRoZSBtYWluIGFyZWFzIHRvIGxvb2sgYXQgd2VyZSBpbml0aWFsbHkgYHRjcF90c29fYXV0b3NpemVgLCBgYmJyX3Rzb19zZWdzYCwgYW5kIG9mIGNvdXJzZSwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLlxuXG5UaGVuIEkgcmVhbGl6ZWQgdGhhdCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgY2FsbGVkIGZyb20gYHRjcF90c29fc2Vnc2AgYW5kIGluIHR1cm4sIGB0Y3Bfd3JpdGVfeG1pdGAuIGB0Y3Bfd3JpdGVfeG1pdGAgaXMgYSBob3RzcG90LCBhbmQgd2hpbGUgYHRjcF90c29fYXV0b3NpemVgIGlzIFRTTyBzaXppbmcgc3BlY2lmaWMsIHRoZSBpbnN0cnVjdGlvbnMgc2F5IHRvIGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgdGVzdCBza2V3LiBXaGlsZSBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgc3BlY2lmaWMgdG8gVFNPIHNpemluZywgSSBkZWNpZGVkIHRvIGNoZWNrLiBIb3dldmVyLCBJdCdzIGNhbGxlZCBmb3IgZXZlcnkgcGFja2V0IGlmIFRTTyBpcyBlbmFibGVkLiBJdCdzIGEga2V5IGZ1bmN0aW9uIGluIGEgaG90IHBhdGguXG5cbkJ1dCB3YWl0LCB0aGUgcGF0Y2ggKmRvZXMqIG1vZGlmeSBgdGNwX3Rzb19hdXRvc2l6ZWAsIGJ5IGV4cG9ydGluZyBpdC4gVGhlIGNvcmUgbG9naWMgb2YgdGhlIGZ1bmN0aW9uLCB0aG91Z2gsIHJlbWFpbnMgdW5jaGFuZ2VkLiBUaGUgcmVhbCBjaGFuZ2VzIGFyZSBpbiBgdGNwX3Rzb19zZWdzYCB3aGVyZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sJ3MgYG1pbl90c29fc2Vnc2AgaXMgaGFuZGxlZC4gIE5vdywgdGhlIGBiYnJfdHNvX3NlZ3NgIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgZnVuY3Rpb25zIGFyZSBuZXcuXG5cbkNvbnNpZGVyaW5nIHRoaXMsIHRoZSBmb2N1cyByZWFsbHkgc2hvdWxkIGJlIG9uIGBiYnJfdHNvX3NlZ3NgIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AuIGBiYnJfdHNvX3NlZ3NgIGlzIGZvciBCQlIgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYCBpcyBmb3IgQlBGIGNvbmdlc3Rpb24gY29udHJvbCwgd2hpY2ggbWFrZXMgdGhlbSBsZXNzIGdlbmVyaWMuXG5cbmBiYnJfdHNvX3NlZ3NgIGlzIGFsc28gbWFya2VkIGFzIHN0YXRpYywgYnV0IHRoZSBgX19icGZfa2Z1bmNgIHNwZWNpZmllciBjYW4gcHJldmVudCBpbmxpbmluZy4gSG93ZXZlciwgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgICppcyogc3RhdGljLCBidXQgaXRzIGFkZHJlc3MgaXMgdGFrZW4sIHNvIGl0IHdvbid0IGJlIGZ1bGx5IGlubGluZWQgZWl0aGVyLlxuXG5CZWNhdXNlIGB0Y3BfdHNvX2F1dG9zaXplYCBpc24ndCBmdW5jdGlvbmFsbHkgY2hhbmdlZCwgbGV0J3Mga2VlcCB0aGUgcHJpbWFyeSBmb2N1cyBvbiBgYmJyX3Rzb19zZWdzYCBhbmQgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgLiBJJ2xsIGFsc28gYWRkIGB0Y3BfdHNvX3NlZ3NgIGFzIHdlbGwuIFNpbmNlIGB0Y3BfdHNvX3NlZ3NgIGlzIHN0YXRpYywgaXQgbWlnaHQgYmUgaW5saW5lZCBpbnRvIGB0Y3Bfd3JpdGVfeG1pdGAgYW5kIGB0Y3BfeG1pdF9yZXRyYW5zbWl0X3F1ZXVlYCwgYW5kIHdpbGwgYmUgaW1wb3J0YW50IHRvIG9ic2VydmUuXG5cblNvLCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBhbmFseXNpczogYFRDUF9DT05HX0JCUmAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgQlBGX0pJVGAuIEkgc2hvdWxkIGFsc28gdmVyaWZ5IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRDUF9DT05HX0JCUmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQyOjU1LjI3ODM2OTM4MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMjIxNzE3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVENQX0NPTkdfQkJSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9NjQ5PWNvbmZpZyBUQ1BfQ09OR19DREdcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNjY1LVxcbm5ldC9pcHY0L0tjb25maWc6NjY2OmNvbmZpZyBUQ1BfQ09OR19CQlJcXG5uZXQvaXB2NC9LY29uZmlnLTY2Ny1cXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDI6NTcuMzkwNTkzMDU5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MzcyMDk1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgSVB2NCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gc29tZSBJUHY0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9pcHY0L0tjb25maWdgIOKAkyBzaG91bGQgYmUgdGhlIG1vc3QgY29tcHJlaGVuc2l2ZSBzb3VyY2UuIEknbSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RlZCBpbiBzb21ldGhpbmcsIHNvIEknbSBuYXZpZ2F0aW5nIHRvIGxpbmUgNjY2IChvciB0aGVyZWFib3V0cykgYXMgYSBzdGFydGluZyBwb2ludC4gVGhhdCBnZW5lcmFsIGFyZWEgb2Z0ZW4gaG91c2VzIHNvbWUganVpY3kgZGV0YWlscy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWV0aGluZyBzcGVjaWZpYyB0aGVyZS4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbnMgYXJlIGRlZmluZWQgYXQgdGhhdCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxODksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MzowMS44Mjc4MDU0NDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzc3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2NjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2NjA6XFx0XFxuIDY2MTpcXHRcXHQgIEZvciBmdXJ0aGVyIGRldGFpbHMgc2VlOlxcbiA2NjI6XFx0XFx0ICAgIEQuQS4gSGF5ZXMgYW5kIEcuIEFybWl0YWdlLiBcXFwiUmV2aXNpdGluZyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIHVzaW5nXFxuIDY2MzpcXHRcXHQgICAgZGVsYXkgZ3JhZGllbnRzLlxcXCIgSW4gTmV0d29ya2luZyAyMDExLiBQcmVwcmludDpcXG4gNjY0OlxcdFxcdCAgICBodHRwOi8vY2FpYS5zd2luLmVkdS5hdS9jdi9kYWhheWVzL2NvbnRlbnQvbmV0d29ya2luZzIwMTEtY2RnLXByZXByaW50LnBkZlxcbiA2NjU6XFx0XFxuIDY2NjpcXHRjb25maWcgVENQX0NPTkdfQkJSXFxuIDY2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQkJSIFRDUFxcXCJcXG4gNjY4OlxcdFxcdGRlZmF1bHQgblxcbiA2Njk6XFx0XFx0aGVscFxcbiA2NzA6XFx0XFxuIDY3MTpcXHRcXHQgIEJCUiAoQm90dGxlbmVjayBCYW5kd2lkdGggYW5kIFJUVCkgVENQIGNvbmdlc3Rpb24gY29udHJvbCBhaW1zIHRvXFxuIDY3MjpcXHRcXHQgIG1heGltaXplIG5ldHdvcmsgdXRpbGl6YXRpb24gYW5kIG1pbmltaXplIHF1ZXVlcy4gSXQgYnVpbGRzIGFuIGV4cGxpY2l0XFxuIDY3MzpcXHRcXHQgIG1vZGVsIG9mIHRoZSBib3R0bGVuZWNrIGRlbGl2ZXJ5IHJhdGUgYW5kIHBhdGggcm91bmQtdHJpcCBwcm9wYWdhdGlvblxcbiA2NzQ6XFx0XFx0ICBkZWxheS4gSXQgdG9sZXJhdGVzIHBhY2tldCBsb3NzIGFuZCBkZWxheSB1bnJlbGF0ZWQgdG8gY29uZ2VzdGlvbi4gSXRcXG4gNjc1OlxcdFxcdCAgY2FuIG9wZXJhdGUgb3ZlciBMQU4sIFdBTiwgY2VsbHVsYXIsIHdpZmksIG9yIGNhYmxlIG1vZGVtIGxpbmtzLiBJdCBjYW5cXG4gNjc2OlxcdFxcdCAgY29leGlzdCB3aXRoIGZsb3dzIHRoYXQgdXNlIGxvc3MtYmFzZWQgY29uZ2VzdGlvbiBjb250cm9sLCBhbmQgY2FuXFxuIDY3NzpcXHRcXHQgIG9wZXJhdGUgd2l0aCBzaGFsbG93IGJ1ZmZlcnMsIGRlZXAgYnVmZmVycywgYnVmZmVyYmxvYXQsIHBvbGljZXJzLCBvclxcbiA2Nzg6XFx0XFx0ICBBUU0gc2NoZW1lcyB0aGF0IGRvIG5vdCBwcm92aWRlIGEgZGVsYXkgc2lnbmFsLiBJdCByZXF1aXJlcyB0aGUgZnFcXG4gNjc5OlxcdFxcdCAgKFxcXCJGYWlyIFF1ZXVlXFxcIikgcGFjaW5nIHBhY2tldCBzY2hlZHVsZXIuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjAxLjgyNzg4NDUzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ5MzExMzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipDaGVja2luZyBCUEYgYW5kIFRDUCBDb25nZXN0aW9uIENvbnRyb2wqKlxuXG5SaWdodCwgc28sIGZpcnN0IHRoaW5ncyBmaXJzdCwgZm9jdXNpbmcgb24gdGhlIGBUQ1BfQ09OR19CQlJgIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG0uIE5vIG5lZWQgdG8gd29ycnkgYWJvdXQgYW55IHVudXN1YWwgb3Igc3BlY2lhbGl6ZWQgZGVwZW5kZW5jaWVzIGZvciAqdGhhdCogc3BlY2lmaWNhbGx5LiBJdCdzIHVzdWFsbHkgcHJldHR5IHNlbGYtY29udGFpbmVkLCBhbmQgSSd2ZSB3b3JrZWQgd2l0aCBpdCBlbm91Z2ggdG8ga25vdyB0aGUgY29tbW9uIHBpdGZhbGxzIGFuZCBjb25maWd1cmF0aW9ucy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbi4uLiBsZXQncyBzaGlmdCBnZWFycyBhbmQgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBCUEZfU1lTQ0FMTGAuIEkgbmVlZCB0byBlbnN1cmUgdGhlIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgaW4gcGxhY2UuIEFyZSB0aGVyZSBzcGVjaWZpYyBrZXJuZWwgdmVyc2lvbnMsIHNwZWNpZmljIEJQRiBoZWxwZXJzLCBvciBhbnl0aGluZyBlbHNlIHRoYXQgKm1pZ2h0KiBiZSByZXF1aXJlZD8gSSBuZWVkIHRvIGtub3cgd2hlcmUgdGhlIHBvdGVudGlhbCBnb3RjaGFzIGFyZSBiZWZvcmUgSSB0cnkgdG8gaW50ZWdyYXRlIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc1MiwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MDQuOTc3MjAwMzk2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI5OTMwMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfU1lTQ0FMTFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjA3LjEwNzEzNjQ1M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE2MzA3MTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgQlBGIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBCUEYgKEJlcmtlbGV5IFBhY2tldCBGaWx0ZXIpIGNvbmZpZ3VyYXRpb24gaXMgc3RydWN0dXJlZC4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8ganVtcCB0byBhcm91bmQgbGluZSAyNy4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBwcm9iYWJseSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGF0IGFyZWEuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZm91bmRhdGlvbmFsIHNldHRpbmdzIHJlbGF0ZWQgdG8gZW5hYmxpbmcgb3IgZGlzYWJsaW5nIEJQRiBmdW5jdGlvbmFsaXR5LCBtYXliZSBzb21lIG9mIHRoZSBjb3JlIGZlYXR1cmUgdG9nZ2xlcywgb3IgcGVyaGFwcyB0aGUgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIHdhbnQgdG8gYnVpbGQgYSBtZW50YWwgbWFwIG9mIHdoYXQncyAqY29uZmlndXJhYmxlKiBhbmQgaG93IHRoYXQgY29uZmlndXJhYmlsaXR5IGlzIHByZXNlbnRlZC4gTGV0J3Mgc2VlIHdoYXQncyB0aGVyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTA1OSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjEwLjMyMzQ0NjQ3MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJrZXJuZWwvYnBmL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjA6XFx0IyBVc2VkIGJ5IGFyY2hzIHRvIHRlbGwgdGhhdCB0aGV5IHdhbnQgdGhlIEJQRiBKSVQgY29tcGlsZXIgZW5hYmxlZCBieVxcbiAgMjE6XFx0IyBkZWZhdWx0IGZvciBrZXJuZWxzIHRoYXQgd2VyZSBjb21waWxlZCB3aXRoIEJQRiBKSVQgc3VwcG9ydC5cXG4gIDIyOlxcdGNvbmZpZyBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUXFxuICAyMzpcXHRcXHRib29sXFxuICAyNDpcXHRcXG4gIDI1OlxcdG1lbnUgXFxcIkJQRiBzdWJzeXN0ZW1cXFwiXFxuICAyNjpcXHRcXG4gIDI3OlxcdGNvbmZpZyBCUEZfU1lTQ0FMTFxcbiAgMjg6XFx0XFx0Ym9vbCBcXFwiRW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXFxcIlxcbiAgMjk6XFx0XFx0c2VsZWN0IEJQRlxcbiAgMzA6XFx0XFx0c2VsZWN0IElSUV9XT1JLXFxuICAzMTpcXHRcXHRzZWxlY3QgTkVFRF9UQVNLU19SQ1VcXG4gIDMyOlxcdFxcdHNlbGVjdCBUQVNLU19UUkFDRV9SQ1VcXG4gIDMzOlxcdFxcdHNlbGVjdCBCSU5BUllfUFJJTlRGXFxuICAzNDpcXHRcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHIGlmIE5FVFxcbiAgMzU6XFx0XFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuICAzNjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbiAgMzc6XFx0XFx0ZGVmYXVsdCBuXFxuICAzODpcXHRcXHRoZWxwXFxuICAzOTpcXHRcXHQgIEVuYWJsZSB0aGUgYnBmKCkgc3lzdGVtIGNhbGwgdGhhdCBhbGxvd3MgdG8gbWFuaXB1bGF0ZSBCUEYgcHJvZ3JhbXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTAuMzIzNTMxNTQyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzk5NTA4MjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNoZWNraW5nIEJQRiBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gaGFuZGxlIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBCUEYgbW9kdWxlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgYEJQRl9TWVNDQUxMYCBmdW5jdGlvbmFsaXR5IGlzIHN0cmFpZ2h0Zm9yd2FyZCDigJMgbm8gbmVlZCBmb3IgYW55IGV4dGVybmFsIGxpYnJhcmllcyBvciBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIHRoZXJlLiBHb29kLiBNYWtlcyBkZXBsb3ltZW50IGEgbGl0dGxlIGVhc2llciwgYWx3YXlzIGEgcGx1cy4gTm93LCB0aGUgbW9yZSBpbnRlcmVzdGluZyBxdWVzdGlvbiBpcyBhcm91bmQgdGhlIEpJVCBjb21waWxlciwgYEJQRl9KSVRgLiBUaGF04oCZcyB3aGVyZSB0aGluZ3MgY291bGQgcG90ZW50aWFsbHkgZ2V0IGEgYml0IG1vcmUgY29tcGxleC4gTGV0J3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIGxpbmVkIHVwIGZvciB0aGF0LiBUaW1lIHRvIHNjcnV0aW5pemUgdGhvc2UgSklUIGRlcGVuZGVuY2llcy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU1NCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTMuMzYzNDg2ODgyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjYxMjA1MDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz0yNz1jb25maWcgQlBGX1NZU0NBTExcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cXG5rZXJuZWwvYnBmL0tjb25maWc6NDI6Y29uZmlnIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXFx0Ym9vbCBcXFwiRW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNTctXFxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cXHRib29sIFxcXCJQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclxcXCJcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxcbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDAwOjQzOjE1LjYyNDY5ODM3MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk2MTE5MzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIEtlcm5lbCdzIEJQRiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIEJQRiBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGtlcm5lbC9icGYvS2NvbmZpZ2AuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIGxpbmUgNDIgZmVlbHMgbGlrZSBhIGdvb2QgaW5pdGlhbCBwb2ludCwgbWF5YmUgd2hlcmUgdGhlIG1haW4gY29uZmlndXJhdGlvbiBibG9jayBzdGFydHMuIEknbSBleHBlY3RpbmcgdG8gZmluZCB0aGUgdG9wLWxldmVsIG9wdGlvbnMgcmVsYXRlZCB0byBlbmFibGluZyBvciBkaXNhYmxpbmcgQlBGIGZlYXR1cmVzLCBvciBwZXJoYXBzIHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIEJQRiBpbnRlcnByZXRlci4gTXkgZ29hbCBpcyB0byBnZXQgYSBzb2xpZCBvdmVydmlldyBvZiB0aGUgY29uZmlndXJhYmxlIGFzcGVjdHMgb2YgdGhlIEJQRiBzdWJzeXN0ZW0sIHdoaWNoIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMgaW4gaW52ZXN0aWdhdGluZyBpdHMgZnVuY3Rpb25hbGl0eSBvciBkZWJ1Z2dpbmcgYSByZWxhdGVkIGlzc3VlLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTkuNjIwODIwNzEyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAzNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzNTpcXHRcXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcXG4gIDM2OlxcdFxcdHNlbGVjdCBQQUdFX1BPT0wgaWYgTkVUXFxuICAzNzpcXHRcXHRkZWZhdWx0IG5cXG4gIDM4OlxcdFxcdGhlbHBcXG4gIDM5OlxcdFxcdCAgRW5hYmxlIHRoZSBicGYoKSBzeXN0ZW0gY2FsbCB0aGF0IGFsbG93cyB0byBtYW5pcHVsYXRlIEJQRiBwcm9ncmFtc1xcbiAgNDA6XFx0XFx0ICBhbmQgbWFwcyB2aWEgZmlsZSBkZXNjcmlwdG9ycy5cXG4gIDQxOlxcdFxcbiAgNDI6XFx0Y29uZmlnIEJQRl9KSVRcXG4gIDQzOlxcdFxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbiAgNDQ6XFx0XFx0ZGVwZW5kcyBvbiBCUEZcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9DQlBGX0pJVCB8fCBIQVZFX0VCUEZfSklUXFxuICA0NjpcXHRcXHRzZWxlY3QgRVhFQ01FTVxcbiAgNDc6XFx0XFx0aGVscFxcbiAgNDg6XFx0XFx0ICBCUEYgcHJvZ3JhbXMgYXJlIG5vcm1hbGx5IGhhbmRsZWQgYnkgYSBCUEYgaW50ZXJwcmV0ZXIuIFRoaXMgb3B0aW9uXFxuICA0OTpcXHRcXHQgIGFsbG93cyB0aGUga2VybmVsIHRvIGdlbmVyYXRlIG5hdGl2ZSBjb2RlIHdoZW4gYSBwcm9ncmFtIGlzIGxvYWRlZFxcbiAgNTA6XFx0XFx0ICBpbnRvIHRoZSBrZXJuZWwuIFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IHNwZWVkLXVwIHByb2Nlc3Npbmcgb2YgQlBGXFxuICA1MTpcXHRcXHQgIHByb2dyYW1zLlxcbiAgNTI6XFx0XFxuICA1MzpcXHRcXHQgIE5vdGUsIGFuIGFkbWluIHNob3VsZCBlbmFibGUgdGhpcyBmZWF0dXJlIGNoYW5naW5nOlxcbiAgNTQ6XFx0XFx0ICAvcHJvYy9zeXMvbmV0L2NvcmUvYnBmX2ppdF9lbmFibGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMDA6NDM6MTkuNjIwODk3NTQyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1NTgyMzg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRDUCBDb25nZXN0aW9uIENvbnRyb2wgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIFRDUCBjb25nZXN0aW9uIGNvbnRyb2wsIHNwZWNpZmljYWxseSBpbnRyb2R1Y2luZyBhIG1lY2hhbmlzbSB0byBvdmVycmlkZSBgdGNwX3Rzb19hdXRvc2l6ZWAgdXNpbmcgYSBgdHNvX3NlZ3NgIGNhbGxiYWNrLiBUaGUgaW1wbGVtZW50YXRpb24gdGFyZ2V0cyBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLCBzbyB0aG9zZSBhcmUga2V5LiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgaW5kZWVkIHByZXNlbnQgYW5kIGFjY2Vzc2libGUg4oCTIGl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgcmVsZXZhbnQgc3ltYm9sczogYGJicl90c29fc2Vnc2AgYW5kIGBicGZfdGNwX2NhX3Rzb19zZWdzYC4gT2theSwgYGJicl90c29fc2Vnc2AgaXMgbWFya2VkIGFzIHN0YXRpYywgYnV0IGl0J3MgYWxzbyBhIGBfX2JwZl9rZnVuY2AuIEFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaXMgYWxzbyBzdGF0aWMuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGNhbiB3ZSBtZWFuaW5nZnVsbHkgZm9jdXMgb24gdGhlc2Ugc3RhdGljIGZ1bmN0aW9ucz8gWWVzLCB0aGF0J3MgcG9zc2libGUgaWYgdGhleSBhcmUgbm90IGlubGluZWQuXG5cbkxldCdzIHNlZS4gYGJicl90c29fc2Vnc2AgaXMgYSBrZnVuYywgd2hpY2ggbWVhbnMgaXQgaXNuJ3QgaW5saW5lZC4gR29vZC4gQWxzbywgYGJwZl90Y3BfY2FfdHNvX3NlZ3NgIGlzIGFzc2lnbmVkIHRvIGEgZnVuY3Rpb24gcG9pbnRlciwgd2hpY2ggZ2VuZXJhbGx5IHByZXZlbnRzIGlubGluaW5nIHRvby4gRXhjZWxsZW50LiBGaW5hbGx5LCBgdGNwX3Rzb19hdXRvc2l6ZWAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQgaXNuJ3QgaW5saW5lZCBlaXRoZXIuIFRoaXMgaXMgdGhlIHRyaWZlY3RhIVxuXG5UaGVyZWZvcmUsIEkgd2lsbCBpbmNsdWRlIGB0Y3BfdHNvX2F1dG9zaXplYCwgYGJicl90c29fc2Vnc2AsIGFuZCBgYnBmX3RjcF9jYV90c29fc2Vnc2AgaW4gbXkgYW5hbHlzaXMuXG5cbk5vdywgdG8gZ2V0IHRoaXMgdXAgYW5kIHJ1bm5pbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3MgYXJlIGVuYWJsZWQ6XG5cbiogICBgVENQX0NPTkdfQkJSYFxuKiAgIGBCUEZfU1lTQ0FMTGBcbiogICBgQlBGX0pJVGBcblxuSG9sZCBvbiwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQlBGX0pJVGAgaXMgYWN0dWFsbHkgcmVxdWlyZWQuIExldCBtZSBjaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYC4gQWgsIHRoZXJlIGl0IGlzOlxuXG5gYGBcbmlmZXEgKCQoQ09ORklHX0JQRl9KSVQpLHkpXG5vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl90Y3BfY2Eub1xuZW5kaWZcbmBgYFxuXG5TbywgYEJQRl9KSVRgICppcyogYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHdvcmsgY29ycmVjdGx5LiBHcmVhdCwgSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIGFsbCBvZiB0aGlzIGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ3OSwiT3V0cHV0VG9rZW5zIjoxNTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQwMDo0MzoyOC4xNzkxMzk3MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjg2OTY0MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlRDUF9DT05HX0JCUlwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9KSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfdHNvX2F1dG9zaXplXCIsXG4gICAgXCJiYnJfdHNvX3NlZ3NcIixcbiAgICBcImJwZl90Y3BfY2FfdHNvX3NlZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBUQ1AgY29uZ2VzdGlvbiBjb250cm9sIGJ5IHJlcGxhY2luZyBtaW5fdHNvX3NlZ3Mgd2l0aCB0c29fc2VncyBjYWxsYmFjaywgYWxsb3dpbmcgY29uZ2VzdGlvbiBjb250cm9sIGFsZ29yaXRobXMgdG8gZGlyZWN0bHkgZGljdGF0ZSB0aGUgVFNPIHNlZ21lbnQgc2l6ZS4gSXQgaW1wbGVtZW50cyB0aGlzIGNhbGxiYWNrIGZvciBCQlIgYW5kIEJQRiBjb25nZXN0aW9uIGNvbnRyb2xzLiBUaGlzIGlzIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBjb3JlIG5ldHdvcmtpbmcgY29kZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUQ1BfQ09OR19CQlJcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfSklUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX3Rzb19hdXRvc2l6ZVwiLFxuICAgIFwiYmJyX3Rzb19zZWdzXCIsXG4gICAgXCJicGZfdGNwX2NhX3Rzb19zZWdzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgVENQIGNvbmdlc3Rpb24gY29udHJvbCBieSByZXBsYWNpbmcgbWluX3Rzb19zZWdzIHdpdGggdHNvX3NlZ3MgY2FsbGJhY2ssIGFsbG93aW5nIGNvbmdlc3Rpb24gY29udHJvbCBhbGdvcml0aG1zIHRvIGRpcmVjdGx5IGRpY3RhdGUgdGhlIFRTTyBzZWdtZW50IHNpemUuIEl0IGltcGxlbWVudHMgdGhpcyBjYWxsYmFjayBmb3IgQkJSIGFuZCBCUEYgY29uZ2VzdGlvbiBjb250cm9scy4gVGhpcyBpcyBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgY29yZSBuZXR3b3JraW5nIGNvZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[1] Phase: Succeeded StartedAt: 2026-08-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 00:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 00:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2] Phase: Succeeded StartedAt: 2026-08-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 00:43:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:39 +0000 UTC FinishedAt: 2026-08-01 00:43:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-workflowkphtl/series-workflowkphtl-convert-artifact-1693788381/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:49 +0000 UTC FinishedAt: 2026-08-01 01:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:49 +0000 UTC FinishedAt: 2026-08-01 01:02:46 +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:*2f003a77-593d-4484-a9ec-2e93ddad4c00,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-workflowkphtl/series-workflowkphtl-convert-artifact-1693788381/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": "be0924a2-7b3d-455a-90b1-c9badfd4ad52", "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-workflowkphtl/series-workflowkphtl-build-action-1903688723/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 00:43:49 +0000 UTC FinishedAt: 2026-08-01 01:02:37 +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:*2f003a77-593d-4484-a9ec-2e93ddad4c00,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-workflowkphtl/series-workflowkphtl-convert-artifact-1693788381/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": "be0924a2-7b3d-455a-90b1-c9badfd4ad52", "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-workflowkphtl/series-workflowkphtl-build-action-1903688723/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:46 +0000 UTC FinishedAt: 2026-08-01 01:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:46 +0000 UTC FinishedAt: 2026-08-01 01:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:46 +0000 UTC FinishedAt: 2026-08-01 01:02:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:46 +0000 UTC FinishedAt: 2026-08-01 01:02:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-workflowkphtl/series-workflowkphtl-convert-artifact-4288987832/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:57 +0000 UTC FinishedAt: 2026-08-01 01:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:02:57 +0000 UTC FinishedAt: 2026-08-01 01:04:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*be0924a2-7b3d-455a-90b1-c9badfd4ad52,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-workflowkphtl/series-workflowkphtl-build-action-1903688723/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-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:04:49 +0000 UTC FinishedAt: 2026-08-01 01:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:04:49 +0000 UTC FinishedAt: 2026-08-01 01:04:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:04:49 +0000 UTC FinishedAt: 2026-08-01 01:31:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:04:49 +0000 UTC FinishedAt: 2026-08-01 01:31:25 +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:*2f003a77-593d-4484-a9ec-2e93ddad4c00,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-workflowkphtl/series-workflowkphtl-convert-artifact-4288987832/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": "51ed84a8-dee6-4a71-96f5-f76b4d966417", "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-workflowkphtl/series-workflowkphtl-build-action-2914573220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:04:49 +0000 UTC FinishedAt: 2026-08-01 01:30:54 +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:*2f003a77-593d-4484-a9ec-2e93ddad4c00,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-workflowkphtl/series-workflowkphtl-convert-artifact-4288987832/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": "51ed84a8-dee6-4a71-96f5-f76b4d966417", "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-workflowkphtl/series-workflowkphtl-build-action-2914573220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:31:25 +0000 UTC FinishedAt: 2026-08-01 01:31:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:31:25 +0000 UTC FinishedAt: 2026-08-01 01:31:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:31:25 +0000 UTC FinishedAt: 2026-08-01 01:33:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:31:25 +0000 UTC FinishedAt: 2026-08-01 01:33:20 +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:*51ed84a8-dee6-4a71-96f5-f76b4d966417,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-workflowkphtl/series-workflowkphtl-build-action-2914573220/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-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"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:*be0924a2-7b3d-455a-90b1-c9badfd4ad52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*51ed84a8-dee6-4a71-96f5-f76b4d966417,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-workflowkphtl/series-workflowkphtl-build-action-1903688723/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-workflowkphtl/series-workflowkphtl-build-action-2914573220/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 01:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 01:34:05 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"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-workflowkphtl/series-workflowkphtl-convert-artifact-1830828049/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 01:33:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 01:33:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:33:30 +0000 UTC FinishedAt: 2026-08-01 01:33:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:34:13 +0000 UTC FinishedAt: 2026-08-01 04:37:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowkphtl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_tso_autosize","bbr_tso_segs","bpf_tcp_ca_tso_segs"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3441aa6109ac6eff5a28894dc5855e8af6513277","config_name":"upstream-apparmor-kasan.config","enable_configs":["TCP_CONG_BBR","BPF_SYSCALL","BPF_JIT"],"series_id":"c3916940-8df5-4e68-af58-2a91c932b264","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-01 01:34:13 +0000 UTC FinishedAt: 2026-08-01 04:36:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*be0924a2-7b3d-455a-90b1-c9badfd4ad52,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*51ed84a8-dee6-4a71-96f5-f76b4d966417,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-workflowkphtl/series-workflowkphtl-build-action-1903688723/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-workflowkphtl/series-workflowkphtl-build-action-2914573220/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-workflowkphtl/series-workflowkphtl-convert-artifact-1830828049/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,}