Name: series-workflowqhmqn Phase: Succeeded StartedAt: 2026-08-04 16:33:02 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[0] Phase: Succeeded StartedAt: 2026-08-04 16:33:02 +0000 UTC FinishedAt: 2026-08-04 16:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 16:33:02 +0000 UTC FinishedAt: 2026-08-04 16:40:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "60781269e26c786de2bb93fb1e697a5c32ccee48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL", "SMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "60781269e26c786de2bb93fb1e697a5c32ccee48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL", "SMP" ], "series_id": "13fd0df4-a412-488e-9a38-cd7322e450f3" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "arch_bpf_timed_may_goto", "bpf_jit_supports_percpu_insn", "bpf_jit_supports_timed_may_goto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYzc5ODkwNTA2MTFiODFhZTgyZThjNzgxN2NjMmY1ZDM0M2I1ODA4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozNDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2QuLjQ0ZmI1YWQyNmQxYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTQwNCw2ICYjNDM7NDA0LDcgQEAgZW51bSBsb29uZ2FyY2hfZ3ByIHtcbiBcdExPT05HQVJDSF9HUFJfVDYsXG4gXHRMT09OR0FSQ0hfR1BSX1Q3LFxuIFx0TE9PTkdBUkNIX0dQUl9UOCxcbiYjNDM7XHRMT09OR0FSQ0hfR1BSX1UwID0gMjEsXHQvKiBLZXJuZWwgcGVyLUNQVSBiYXNlIHJlZ2lzdGVyICgkcjIxKSAqL1xuIFx0TE9PTkdBUkNIX0dQUl9GUCA9IDIyLFxuIFx0TE9PTkdBUkNIX0dQUl9TMCA9IDIzLFxuIFx0TE9PTkdBUkNIX0dQUl9TMSxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbmluZGV4IDFlYzEyYTBjMzI0YTUuLjhkOWRkYjQ4ZjllYWIgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxuQEAgLTQsNCAmIzQzOzQsNCBAQFxuICNcbiAjIENvcHlyaWdodCAoQykgMjAyMiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAjXG4tb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjNDM7b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1My4uMTE1MjM5NmY4NDg0MiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC03NDMsNiAmIzQzOzc0MywxNSBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dFxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCB0MSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKSkge1xuJiM0MztcdFx0XHRpZiAoZHN0ICE9IHNyYylcbiYjNDM7XHRcdFx0XHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcbiYjNDM7I2lmZGVmIENPTkZJR19TTVBcbiYjNDM7XHRcdFx0LyogZHN0ICYjNDM7PSBfX215X2NwdV9vZmZzZXQsIGhlbGQgaW4gJHIyMSAqL1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhZGRkLCBkc3QsIGRzdCwgTE9PTkdBUkNIX0dQUl9VMCk7XG4mIzQzOyNlbmRpZlxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0c3dpdGNoIChvZmYpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xuQEAgLTEyMDQsNyAmIzQzOzEyMTMsMTMgQEAgc3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRcbiBcdFx0bW92ZV9hZGRyKGN0eCwgdDEsIGZ1bmNfYWRkcik7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGppcmwsIExPT05HQVJDSF9HUFJfUkEsIHQxLCAwKTtcbiBcbi1cdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogQ2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHVzZXMgYSBjdXN0b20gY2FsbGluZ1xuJiM0MztcdFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXG4mIzQzO1x0XHQgKiBzbyBza2lwIG1vdmluZyB0aGUgQyByZXR1cm4gdmFsdWUgaW50byBCUEZfUkVHXzAuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGZ1bmNfYWRkciAhPSAodTY0KWFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApO1xuIFxuIFx0XHRicmVhaztcbkBAIC0yMzkxLDYgJiM0MzsyNDA2LDE2IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0wLDAgJiM0MzsxLDQ3IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOy8qXG4mIzQzOyAqIEF1dGhvcjogR2VvcmdlIEd1byBcdTAwM2NndW9kb25ndGFpQGt5bGlub3MuY25cdTAwM2VcbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEt5bGluU29mdCBDb3Jwb3JhdGlvbi5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYXNtbWFjcm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbGlua2FnZS5oXHUwMDNlXG4mIzQzO1xuJiM0MztTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiYjNDM7XHRhZGRpLmRcdFx0c3AsIHNwLCAtNjRcbiYjNDM7XHRzdC5kXHRcdHJhLCBzcCwgNTZcbiYjNDM7XG4mIzQzO1x0LyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwIC0gUjUgKGE1LCBhMCAtIGE0KSAqL1xuJiM0MztcdHN0LmRcdFx0YTUsIHNwLCA4XG4mIzQzO1x0c3QuZFx0XHRhMCwgc3AsIDE2XG4mIzQzO1x0c3QuZFx0XHRhMSwgc3AsIDI0XG4mIzQzO1x0c3QuZFx0XHRhMiwgc3AsIDMyXG4mIzQzO1x0c3QuZFx0XHRhMywgc3AsIDQwXG4mIzQzO1x0c3QuZFx0XHRhNCwgc3AsIDQ4XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQlBGX1JFR19BWCAodDApIGhvbGRzIHRoZSBvZmZzZXQgcGFzc2VkIGluIGJ5IHRoZSB2ZXJpZmllcjsgYWRkIGl0XG4mIzQzO1x0ICogdG8gQlBGX1JFR19GUCAoczQpIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCxcbiYjNDM7XHQgKiB0aGVuIHBhc3MgaXQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGluIGEwLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhlIHZlcmlmaWVyIGVtaXRzIGEgbG9hZCB1c2luZyBGUCByaWdodCBiZWZvcmUgdGhpcyBjYWxsLCBzb1xuJiM0MztcdCAqIEJQRl9SRUdfRlAgKHM0KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBKSVQgaW4gdGhpcyBjYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGFkZC5kXHRcdGEwLCB0MCwgczRcbiYjNDM7XHRibFx0XHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiYjNDM7XHQvKiBCUEZfUkVHX0FYICh0MCkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSB0aGUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuJiM0MztcdG1vdmVcdFx0dDAsIGEwXG4mIzQzO1xuJiM0MztcdGxkLmRcdFx0cmEsIHNwLCA1NlxuJiM0MztcdGxkLmRcdFx0YTUsIHNwLCA4XG4mIzQzO1x0bGQuZFx0XHRhMCwgc3AsIDE2XG4mIzQzO1x0bGQuZFx0XHRhMSwgc3AsIDI0XG4mIzQzO1x0bGQuZFx0XHRhMiwgc3AsIDMyXG4mIzQzO1x0bGQuZFx0XHRhMywgc3AsIDQwXG4mIzQzO1x0bGQuZFx0XHRhNCwgc3AsIDQ4XG4mIzQzO1x0YWRkaS5kXHRcdHNwLCBzcCwgNjRcbiYjNDM7XG4mIzQzO1x0anJcdFx0cmFcbiYjNDM7U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmM3OTg5MDUwNjExYjgxYWU4MmU4Yzc4MTdjYzJmNWQzNDNiNTgwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTY6MzQ6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZC4uNDRmYjVhZDI2ZDFhNiAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaApAQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBlbnVtIGxvb25nYXJjaF9ncHIgewogCUxPT05HQVJDSF9HUFJfVDYsCiAJTE9PTkdBUkNIX0dQUl9UNywKIAlMT09OR0FSQ0hfR1BSX1Q4LAomIzQzOwlMT09OR0FSQ0hfR1BSX1UwID0gMjEsCS8qIEtlcm5lbCBwZXItQ1BVIGJhc2UgcmVnaXN0ZXIgKCRyMjEpICovCiAJTE9PTkdBUkNIX0dQUl9GUCA9IDIyLAogCUxPT05HQVJDSF9HUFJfUzAgPSAyMywKIAlMT09OR0FSQ0hfR1BSX1MxLApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlIGIvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlCmluZGV4IDFlYzEyYTBjMzI0YTUuLjhkOWRkYjQ4ZjllYWIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUKQEAgLTQsNCAmIzQzOzQsNCBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMjIgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCiAjCi1vYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXQubwomIzQzO29iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdC5vIGJwZl90aW1lZF9tYXlfZ290by5vCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwppbmRleCAyNzM4YjRkYjExNjUzLi4xMTUyMzk2Zjg0ODQyIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTc0Myw2ICYjNDM7NzQzLDE1IEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0CiAJCQltb3ZlX3JlZyhjdHgsIGRzdCwgdDEpOwogCQkJYnJlYWs7CiAJCX0KJiM0MzsJCWlmIChpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKSkgewomIzQzOwkJCWlmIChkc3QgIT0gc3JjKQomIzQzOwkJCQltb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTsKJiM0MzsjaWZkZWYgQ09ORklHX1NNUAomIzQzOwkJCS8qIGRzdCAmIzQzOz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi8KJiM0MzsJCQllbWl0X2luc24oY3R4LCBhZGRkLCBkc3QsIGRzdCwgTE9PTkdBUkNIX0dQUl9VMCk7CiYjNDM7I2VuZGlmCiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiAJCXN3aXRjaCAob2ZmKSB7CiAJCWNhc2UgMDoKIAkJCW1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpOwpAQCAtMTIwNCw3ICYjNDM7MTIxMywxMyBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dAogCQltb3ZlX2FkZHIoY3R4LCB0MSwgZnVuY19hZGRyKTsKIAkJZW1pdF9pbnNuKGN0eCwgamlybCwgTE9PTkdBUkNIX0dQUl9SQSwgdDEsIDApOwogCi0JCWlmIChpbnNuLSZndDtzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCkKJiM0MzsJCS8qCiYjNDM7CQkgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgdXNlcyBhIGN1c3RvbSBjYWxsaW5nCiYjNDM7CQkgKiBjb252ZW50aW9uIHdpdGggdGhlIGFyZ3VtZW50IGFuZCByZXR1cm4gdmFsdWUgaW4gQlBGX1JFR19BWCwKJiM0MzsJCSAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGluc24tJmd0O3NyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMICZhbXA7JmFtcDsKJiM0MzsJCSAgICBmdW5jX2FkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAkJCW1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApOwogCiAJCWJyZWFrOwpAQCAtMjM5MSw2ICYjNDM7MjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovCiBib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0wLDAgJiM0MzsxLDQ3IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsvKgomIzQzOyAqIEF1dGhvcjogR2VvcmdlIEd1byAmbHQ7Z3VvZG9uZ3RhaUBreWxpbm9zLmNuJmd0OwomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBLeWxpblNvZnQgQ29ycG9yYXRpb24uCiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9hc21tYWNyby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vcmVnZGVmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V4cG9ydC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9saW5rYWdlLmgmZ3Q7CiYjNDM7CiYjNDM7U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiYjNDM7CWFkZGkuZAkJc3AsIHNwLCAtNjQKJiM0MzsJc3QuZAkJcmEsIHNwLCA1NgomIzQzOwomIzQzOwkvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAgLSBSNSAoYTUsIGEwIC0gYTQpICovCiYjNDM7CXN0LmQJCWE1LCBzcCwgOAomIzQzOwlzdC5kCQlhMCwgc3AsIDE2CiYjNDM7CXN0LmQJCWExLCBzcCwgMjQKJiM0MzsJc3QuZAkJYTIsIHNwLCAzMgomIzQzOwlzdC5kCQlhMywgc3AsIDQwCiYjNDM7CXN0LmQJCWE0LCBzcCwgNDgKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQlBGX1JFR19BWCAodDApIGhvbGRzIHRoZSBvZmZzZXQgcGFzc2VkIGluIGJ5IHRoZSB2ZXJpZmllcjsgYWRkIGl0CiYjNDM7CSAqIHRvIEJQRl9SRUdfRlAgKHM0KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAsCiYjNDM7CSAqIHRoZW4gcGFzcyBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuCiYjNDM7CSAqCiYjNDM7CSAqIFRoZSB2ZXJpZmllciBlbWl0cyBhIGxvYWQgdXNpbmcgRlAgcmlnaHQgYmVmb3JlIHRoaXMgY2FsbCwgc28KJiM0MzsJICogQlBGX1JFR19GUCAoczQpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIEpJVCBpbiB0aGlzIGNhc2UuCiYjNDM7CSAqLwomIzQzOwlhZGQuZAkJYTAsIHQwLCBzNAomIzQzOwlibAkJYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiYjNDM7CS8qIEJQRl9SRUdfQVggKHQwKSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHRoZSByZXR1cm4gdmFsdWUgdG8gaXQuICovCiYjNDM7CW1vdmUJCXQwLCBhMAomIzQzOwomIzQzOwlsZC5kCQlyYSwgc3AsIDU2CiYjNDM7CWxkLmQJCWE1LCBzcCwgOAomIzQzOwlsZC5kCQlhMCwgc3AsIDE2CiYjNDM7CWxkLmQJCWExLCBzcCwgMjQKJiM0MzsJbGQuZAkJYTIsIHNwLCAzMgomIzQzOwlsZC5kCQlhMywgc3AsIDQwCiYjNDM7CWxkLmQJCWE0LCBzcCwgNDgKJiM0MzsJYWRkaS5kCQlzcCwgc3AsIDY0CiYjNDM7CiYjNDM7CWpyCQlyYQomIzQzO1NZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9dHJ1ZSAtIExvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQqKgoKT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdG8gdGhlIExvb25nQXJjaCBCUEYgSklULiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgYWxzbyBhZGRzIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLiAgVGhpcyBpcyBzcGVjaWZpYyB0byBMb29uZ0FyY2gsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGFjdHVhbGx5IHRlc3RhYmxlIGFuZCByZWFjaGFibGU/ICBSaWdodCwgUUVNVSBjYW4gZW11bGF0ZSBMb29uZ0FyY2gsIHNvIHRoYXQmIzM5O3MgYSBwb3NpdGl2ZSBzaWduLiAgU3l6a2FsbGVyIHR5cGljYWxseSB0YXJnZXRzIHg4Nl82NCBhbmQgYXJtNjQsIGJ1dCBpdCBjYW4gaGFuZGxlIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNvIHRoYXQmIzM5O3Mgbm90IGEgc2hvd3N0b3BwZXIgZWl0aGVyLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgc2luY2UgdGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyAoc3BlY2lmaWNhbGx5LCB0aGUgQlBGIEpJVCBpbmZyYXN0cnVjdHVyZSwgd2hpY2ggaXMgZGVmaW5pdGVseSBjb3JlKSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjb2RlIGNhbiBhY3R1YWxseSBiZSBleGVjdXRlZC4gVGhlbiBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBMZXQmIzM5O3MgbG9vayBhdCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkLiBMb29rcyBsaWtlIHRoZSBjaGFuZ2VzIG1vZGlmeSBgYnVpbGRfaW5zbmAgYW5kIGFkZCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAsIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgYW5kIHRoZSBhc3NlbWJseSBmdW5jdGlvbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLgoKQWxyaWdodCwgbm93IGxldCYjMzk7cyBzZWUgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgY29kZSBjb21waWxlZCBhbmQgZXhlY3V0ZWQuIEl0JiMzOTtzIG9idmlvdXNseSBnb2luZyB0byBuZWVkIGBDT05GSUdfQlBGX0pJVGAuIEJ1dCBpcyB0aGF0ICphbGwqPyAgQSBxdWljayBjaGVjayBvZiB0aGUgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgY29uZmlybXMgdGhhdCBgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9gLCBzbyBgQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZy4KCkxldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyLiAgSSBub3RpY2VkIGBDT05GSUdfU01QYCBiZWluZyB1c2VkIGluIGBicGZfaml0LmNgOiBzcGVjaWZpY2FsbHkgaW4gdGhlIGVtaXR0ZWQgY29kZSBmb3IgcGVyLUNQVSBvZmZzZXRzOgoKYGBgYwojaWZkZWYgQ09ORklHX1NNUAogICAgICAgICAgICAvKiBkc3QgJiM0Mzs9IF9fbXlfY3B1X29mZnNldCwgaGVsZCBpbiAkcjIxICovCiAgICAgICAgICAgIGVtaXRfaW5zbihjdHgsIGFkZGQsIGRzdCwgZHN0LCBMT09OR0FSQ0hfR1BSX1UwKTsKI2VuZGlmCmBgYAoKU28gYFNNUGAgaXMgYWxzbyByZWxldmFudCBoZXJlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBjb25maWdzIGFyZSB0aGVyZSBpbiB0aGUgTG9vbmdBcmNoIGBLY29uZmlnYCBhcyB3ZWxsLiBUaGF0IHdpbGwgYmUgbmVlZGVkIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLgoKT2theSwgZ2l2ZW4gdGhhdCB0aGlzIG1vZGlmaWVzIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgaXMgcmVhY2hhYmxlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRmluZGluZyB0aGUgQlBGX0pJVCBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGUgYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBJdCYjMzk7cyBhIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzbyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCB3b3VsZCBiZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGZpbGVzLCByaWdodD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L2JwZi9LY29uZmlnYCBiZWNhdXNlIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGdpdmVuIHRoZSBCUEYgY29ubmVjdGlvbi4gSWYgaXQgaXNuJiMzOTt0IHRoZXJlLCB0aGVuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGdvIGZvciBgaW5pdC9LY29uZmlnYCBhcyB0aGF0JiMzOTtzIG9mdGVuIGEgZ2VuZXJhbCBjYXRjaC1hbGwgZm9yIGNvcmUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IGFueXRoaW5nIGZ1bmRhbWVudGFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgdGhyb3VnaCB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBKSVQgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogSSByZWNhbGwgc2VlaW5nIGBCUEZfSklUYCBzb21ld2hlcmUsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIHR1Y2tlZCBhd2F5IGluIHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGxvY2F0aW9uIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGF0JiMzOTtzIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gcmVjYWxsIGFub3RoZXIgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgdGltaW5nIGNoZWNrcywgYW5kIHRoZSBuYW1lIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGlzIGNvbWluZyB0byBtaW5kLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSByZW1lbWJlciBpdCBiZWluZyBjYWxsZWQgYnkgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28uCgpTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZXJlIGl0JiMzOTtzIGltcGxlbWVudGVkLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlY2xhcmF0aW9uL2RlZmluaXRpb24gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjYtXHRhZGRcdHgwLCB4OSwgeDI1XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyNzpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTI4LVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTEyPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMi1cdGFkZC5kXHRcdGEwLCB0MCwgczRcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozMzpcdGJsXHRcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM0LVx0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEzLSAqXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjE0OiAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtICogXHQtIHIzID0gcHRyLCByZXR1cm4gaW4gcjNcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIwPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRhZGQgICAgIHIzLCByMzEsIHIxMlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozOTpcdGJsICAgICAgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE3PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMxLVx0YWRkXHRhMCwgdDAsIHM1XG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozMjpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzc6XHRicmFzbCAlcjE0LGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cdGxnciAlcjEyLCVyMlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzktXHRDQUxMX0RFUFRIX0FDQ09VTlRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0MDpcdGNhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDEtXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMTk2PXU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE5Nzp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExOTgtYm9vbCBicGZfaGVscGVyX2NoYW5nZXNfcGt0X2RhdGEoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDAwPXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDE1LVxua2VybmVsL2JwZi9jb3JlLmM6MzQxNjp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDI4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgdGltZWQgYGdvdG9gIGFuZCBwZXItQ1BVIGluc3RydWN0aW9uIHN1cHBvcnQgZm9yIEJQRiBKSVQgb24gTG9vbmdBcmNoLiBUaGUgZnVuY3Rpb25zIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzIGhlcmUuIExvZ2ljYWxseSwgYXNzdW1pbmcgd2UmIzM5O3JlIHJ1bm5pbmcgb24gTG9vbmdBcmNoLCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFjY2Vzc2libGUgYW5kLCB3ZWxsLCAqZG8qIHdoYXQgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gZG8uCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRoYXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFwcGVhciB0byBiZSBgQlBGX0pJVGAgYW5kIGBTTVBgLiBIbW0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYEJQRl9KSVRgIHNlY3Rpb24sIHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIGRldmVsb3BtZW50OgoKKipMb29uZ0FyY2ggYW5kIEpJVCBDb21waWxhdGlvbjogQSBRdWljayBDaGVjayoqCgpSaWdodCwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIGNsYXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBKSVQgY29tcGlsZXJzIHdlJiMzOTtyZSB1c2luZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSwgb3IgbWF5YmUganVzdCBkb3VibGUtY2hlY2sgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIGJlY2F1c2UgSSYjMzk7bSBub3QgZW50aXJlbHkgY2VydGFpbiB3aGljaCBvZiB0aGUgZUJQRi9jQlBGIEpJVCBvcHRpb25zIGlzIGFjdHVhbGx5IGVuYWJsZWQsIG9yIHNob3VsZCBiZSBlbmFibGVkLCBmb3IgTG9vbmdBcmNoLiBJcyBpdCBkZWZpbmVkIHRvIGBIQVZFX0NCUEZfSklUYCwgb3IgZG9lcyBMb29uZ0FyY2ggZ28gd2l0aCBgSEFWRV9FQlBGX0pJVGA/IEl0JiMzOTtzIGEga2V5IGRldGFpbCB0byByZW1lbWJlciwgZXNwZWNpYWxseSBpZiBJJiMzOTttIGxvb2tpbmcgYXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgcmVhbGx5IHNob3VsZCBjb25maXJtIHRoZSBjb3JyZWN0IGRlZmluZSwgYW5kIG1heWJlIGxvb2sgYXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB3aGlsZSBJJiMzOTttIGF0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIQVZFX0VCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzktXHRzZWxlY3QgQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLU1xuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo4MDpcdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIGlmIEhBVkVfRUJQRl9KSVRcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODEtXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfVE9QRE9XTl9NTUFQX0xBWU9VVFxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQzLVx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjE0NDpcdHNlbGVjdCBIQVZFX0VCUEZfSklUIGlmIDY0QklUXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTE0NS1cdHNlbGVjdCBIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTIGlmICFBUkNIX1NUUklDVF9BTElHTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgZmluYWxseSBoYXMgQlBGIEpJVCBhdmFpbGFibGUuIFRoYXQmIzM5O3MgZ29vZCBuZXdzLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggYXJlIGNydWNpYWwgY2FwYWJpbGl0aWVzIGZvciBvcHRpbWl6ZWQgQlBGIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IGZvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgdXNlIGNhc2VzLgoKTXkgaW5pdGlhbCBmb2N1cyBuZWVkcyB0byBiZSBvbiBhIGZldyBrZXkgZnVuY3Rpb25zOiBgYnVpbGRfaW5zbmAgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgYW5kIG9mIGNvdXJzZSB0aGUgc3VwcG9ydCBmdW5jdGlvbnMgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGFyZSBpbXBsZW1lbnRlZCBhbmQgaW50ZWdyYXRlZC4KCkhvbGQgb24gYSBzZWNvbmQuLi4gYGJ1aWxkX2luc25gIGlzICpzdGF0aWMqPyBSaWdodCwgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHJlc3Qgb2YgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhlIGVudHJ5IHBvaW50cywgYW5kIG92ZXJhbGwgY29udHJvbCBmbG93LiBUaGlzIHN0YXRpYyBmdW5jdGlvbiBkb2VzbiYjMzk7dCBtYWtlIGl0IGEgZGVhZCBlbmQgdGhvdWdoLCBpdCBzdGlsbCBuZWVkcyB0byBiZSBleGFtaW5lZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgSklULiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgY2FsbGFibGUgZnJvbSB0aGUgb3V0c2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBicGZfcHJvZyBcXCpicGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIENvbXBpbGF0aW9uIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBCUEYgSklUIGNvbXBpbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCDigJMgaXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cy4gVGhlbiwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcyB0aGUgY29ycmVzcG9uZGluZyBhc3NlbWJseSBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGhhdmUgYSBjbG9zZSBleWUgb24uCgpOb3csIEkmIzM5O20gbm90aW5nIHRoYXQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIGFsc28gZXhwb3NlZCwgbWVhbmluZyB0aGV5JiMzOTtyZSBub3Qgc3RhdGljLiBUaGlzIHN1Z2dlc3RzIHRoZXNlIGFyZSBlaXRoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIHRoYXQgaW1wYWN0IHRoZSBvdmVyYWxsIEpJVCBmbG93LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBpbmRlZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gWWVzLCBpdCYjMzk7cyB0aGUgcmlnaHQgZW50cnkgcG9pbnQsIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIGluaXRpYXRpbmcgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcy4gQW5kLCB5ZXMsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgbG9va3MgbGlrZSBpdCYjMzk7bGwgYmUgaW1wb3J0YW50IHRvby4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIFRoaXMgd2lsbCBnaXZlIG1lIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBpbnRlcmFjdHMgd2l0aCBhbmQgcG90ZW50aWFsbHkgY3VzdG9taXplcyB0aGVzZSBzdXBwb3J0IGZ1bmN0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uc3RyYWludHMgb2YgdGhlIEpJVCBjb21waWxlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmJvb2wgYnBmX2ppdF9zdXBwb3J0c18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9Mjc2PXN0YXRpYyB2b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODAtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI4MTpib29sIGJwZl9qaXRfc3VwcG9ydHNfa2Z1bmNfY2FsbCh2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODIte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjg1LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyODY6Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI4Ny17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzk0PWJvb2wgYnBmX2ppdF9ieXBhc3Nfc3BlY192NCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5OC1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5OTpib29sIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEodm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQwMC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDAzLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDA0OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI0MDk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTAte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQxMy1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQxNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQxNS17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDE5LS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDIwOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDIxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLiBJbnRlcmVzdGluZyBhZGRpdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgYnVpbGRfaW5zbmAgaW4gdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbiBpcyBiZWluZyBtb2RpZmllZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhhdCBgYnVpbGRfaW5zbmAgY2hhbmdlIHRvIHNlZSB0aGUgc3BlY2lmaWNzLgoKTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBgQ09ORklHX0JQRl9KSVRgIGlzIGEgZ2l2ZW4sIGFuZCBgQ09ORklHX1NNUGAgaXMgcHJvYmFibHkgcmVsZXZhbnQgZ2l2ZW4gdGhlIHBlci1DUFUgYXNwZWN0LiBBaCwgcmlnaHQsIGFuZCB3ZSB0eXBpY2FsbHkgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIGZvciBCUEYgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiBga2VybmVsL2JwZi9gIGp1c3QgdG8gYmUgY2VydGFpbi4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBKSVQgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQxNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQlBGIEpJVCBEZXBlbmRlbmN5IENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCB0aGluayB0aGlzIHRocm91Z2guLi4gKkJQRl9KSVQqLiBPa2F5LCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7bSBmb2N1c2luZyBvbiByaWdodCBub3cuIFdhaXQgYSBzZWNvbmQsIHRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIG5hZ2dpbmcgbWUgaXMsIGRvZXMgYEJQRl9KSVRgIGluaGVyZW50bHkgZGVwZW5kIG9uIHRoZSBjb3JlIGBCUEZgIGluZnJhc3RydWN0dXJlLCBvciBpcyBpdCBpbmV4dHJpY2FibHkgbGlua2VkIHRvIGBCUEZfU1lTQ0FMTGA/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEpJVCBmdW5jdGlvbnMuIFdpdGhvdXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nLCBteSBuZXh0IHN0ZXBzIGNvdWxkIGJlIGZsYXdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9NDI9Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZzo0NDpcdGRlcGVuZHMgb24gQlBGXG5rZXJuZWwvYnBmL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQ2LVx0c2VsZWN0IEVYRUNNRU1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9NTg9Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBIQVZFX0VCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNjEtXHRoZWxwXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTY5PWNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gSEFWRV9FQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxua2VybmVsL2JwZi9LY29uZmlnPTczPWNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTc1LVx0ZGVmYXVsdCB5XG5rZXJuZWwvYnBmL0tjb25maWc6NzY6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctNzctXHRoZWxwXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTkyPWNvbmZpZyBCUEZfTFNNXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBCUEZfRVZFTlRTXG5rZXJuZWwvYnBmL0tjb25maWc6OTU6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWc6OTY6XHRkZXBlbmRzIG9uIFNFQ1VSSVRZXG5rZXJuZWwvYnBmL0tjb25maWc6OTc6XHRkZXBlbmRzIG9uIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy05OC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQlBGIEpJVCBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQlBGIEpJVCBzdHVmZi4gSXQgbG9va3MgbGlrZSBgQlBGX0pJVGAgaXMgZnVuZGFtZW50YWwsIHJlbHlpbmcgb24gYEJQRmAgYW5kIGVpdGhlciBgSEFWRV9DQlBGX0pJVGAgb3IgYEhBVkVfRUJQRl9KSVRgLiBBbmQgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBlQlBGIHByb2dyYW1zLiBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAgdG8gY292ZXIgYWxsIG15IGJhc2VzLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS4KCmBicGZfaW50X2ppdF9jb21waWxlYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQgYXMgaW1wb3J0YW50LiBCdXQsIEkgcmVhbGx5IHdhbnQgdG8gdW5kZXJzdGFuZCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgbW9yZS4gSSBzdXNwZWN0IGl0JiMzOTtzIGdldHRpbmcgY2FsbGVkIHF1aXRlIGEgYml0LCBsaWtlbHkgZHVyaW5nIHZlcmlmaWNhdGlvbiBvciBKSVQgY29tcGlsYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzE3OD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzE5MS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjMxOTI6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMTkzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTI0MDQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA4LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDA5OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEwLXtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTU1Nj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01NzEtXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjU3Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTczLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTIxMjQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2luc24oc3RydWN0IGJwZl9pbnNuICppbnNuLCBib29sIGluX2FyZW5hKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0Mi1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjE0Mzpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0NC17XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQwNTc9Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjEtXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6NDA2Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExODI9Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTgzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTE4NC1ib29sIGJwZl9qaXRfc3VwcG9ydHNfa2Z1bmNfY2FsbCh2b2lkKTtcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9MjYzPXN0YXRpYyBpbnQgcGVyY3B1X2FycmF5X21hcF9nZW5fbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTI2Ny1cbmtlcm5lbC9icGYvYXJyYXltYXAuYzoyNjg6XHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSlcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0yNjktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zMjkxPWJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjk1LVxua2VybmVsL2JwZi9jb3JlLmM6MzI5Njpib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjk3LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE1PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDE4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQxOTpcdGlmICghYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpKVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQyMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjc4MD1ib29sIGJwZl92ZXJpZmllcl9pbmxpbmVzX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBpbW0pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Nzg4LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2Nzg5Olx0XHRyZXR1cm4gZW52LVx1MDAzZXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZCBcdTAwMjZcdTAwMjYgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE2NzkwLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg4NwoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcmUgd2VhayBzeW1ib2xzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSAoTG9vbmdBcmNoLCBpbiB0aGlzIGNhc2UpIGlzIHByb3ZpZGluZyBpdHMgb3duIG92ZXJyaWRlcy4gVGhpcyBtYWtlcyB0aGVtIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiwgYXMgdGhleSBhcmUgbGlrZWx5IHBvaW50cyBvZiBhcmNoaXRlY3R1cmFsIGRldmlhdGlvbi4KClRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbDsgaXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgZGlyZWN0bHkgcmVhY2hhYmxlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBCUEYgSklUIGZvciBMb29uZ0FyY2guIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgaW50cm9kdWNpbmcgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb246IGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoaXMgY29uZmlybXMgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIFdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIEJQRiBKSVQmIzM5O3MgY29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbi4KClRoZXJlZm9yZSwgbXkgZGVjaXNpb24gaXMgZWFzeS4gV29ydGhGdXp6aW5nID0gdHJ1ZS4gVGhpcyB3YXJyYW50cyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYGJwZl9pbnRfaml0X2NvbXBpbGVgCiogICBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gCiogICBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAKKiAgIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYAoKVG8gZW5hYmxlIHRob3JvdWdoIHRlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzQ6MTEuMjI1MTc0OTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMTQ2NjgxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiLFxuICAgIFwiYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNDoxMS4yMjUxODE1NTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzE2MTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZjNzk4OTA1MDYxMWI4MWFlODJlOGM3ODE3Y2MyZjVkMzQzYjU4MDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozNDoxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkLi40NGZiNWFkMjZkMWE2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbkBAIC00MDQsNiArNDA0LDcgQEAgZW51bSBsb29uZ2FyY2hfZ3ByIHtcXG4gXFx0TE9PTkdBUkNIX0dQUl9UNixcXG4gXFx0TE9PTkdBUkNIX0dQUl9UNyxcXG4gXFx0TE9PTkdBUkNIX0dQUl9UOCxcXG4rXFx0TE9PTkdBUkNIX0dQUl9VMCA9IDIxLFxcdC8qIEtlcm5lbCBwZXItQ1BVIGJhc2UgcmVnaXN0ZXIgKCRyMjEpICovXFxuIFxcdExPT05HQVJDSF9HUFJfRlAgPSAyMixcXG4gXFx0TE9PTkdBUkNIX0dQUl9TMCA9IDIzLFxcbiBcXHRMT09OR0FSQ0hfR1BSX1MxLFxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcXG5pbmRleCAxZWMxMmEwYzMyNGE1Li44ZDlkZGI0OGY5ZWFiIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxcbkBAIC00LDQgKzQsNCBAQFxcbiAjXFxuICMgQ29weXJpZ2h0IChDKSAyMDIyIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZFxcbiAjXFxuLW9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0Lm9cXG4rb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQubyBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbmluZGV4IDI3MzhiNGRiMTE2NTMuLjExNTIzOTZmODQ4NDIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNzQzLDYgKzc0MywxNSBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dFxcbiBcXHRcXHRcXHRtb3ZlX3JlZyhjdHgsIGRzdCwgdDEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcXG4rXFx0XFx0XFx0aWYgKGRzdCAhPSBzcmMpXFxuK1xcdFxcdFxcdFxcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xcbisjaWZkZWYgQ09ORklHX1NNUFxcbitcXHRcXHRcXHQvKiBkc3QgKz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi9cXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYWRkZCwgZHN0LCBkc3QsIExPT05HQVJDSF9HUFJfVTApO1xcbisjZW5kaWZcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0c3dpdGNoIChvZmYpIHtcXG4gXFx0XFx0Y2FzZSAwOlxcbiBcXHRcXHRcXHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcXG5AQCAtMTIwNCw3ICsxMjEzLDEzIEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0XFxuIFxcdFxcdG1vdmVfYWRkcihjdHgsIHQxLCBmdW5jX2FkZHIpO1xcbiBcXHRcXHRlbWl0X2luc24oY3R4LCBqaXJsLCBMT09OR0FSQ0hfR1BSX1JBLCB0MSwgMCk7XFxuIFxcbi1cXHRcXHRpZiAoaW5zbi1cXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB1c2VzIGEgY3VzdG9tIGNhbGxpbmdcXG4rXFx0XFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXFxuK1xcdFxcdCAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdFxcdFxcdG1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApO1xcbiBcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTIzOTEsNiArMjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuK2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbit7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGE0YzE1NDE4OTk4Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMCwwICsxLDQ3IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKy8qXFxuKyAqIEF1dGhvcjogR2VvcmdlIEd1byBcXHUwMDNjZ3VvZG9uZ3RhaUBreWxpbm9zLmNuXFx1MDAzZVxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgS3lsaW5Tb2Z0IENvcnBvcmF0aW9uLlxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtbWFjcm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9yZWdkZWYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbitcXG4rU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuK1xcdGFkZGkuZFxcdFxcdHNwLCBzcCwgLTY0XFxuK1xcdHN0LmRcXHRcXHRyYSwgc3AsIDU2XFxuK1xcbitcXHQvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAgLSBSNSAoYTUsIGEwIC0gYTQpICovXFxuK1xcdHN0LmRcXHRcXHRhNSwgc3AsIDhcXG4rXFx0c3QuZFxcdFxcdGEwLCBzcCwgMTZcXG4rXFx0c3QuZFxcdFxcdGExLCBzcCwgMjRcXG4rXFx0c3QuZFxcdFxcdGEyLCBzcCwgMzJcXG4rXFx0c3QuZFxcdFxcdGEzLCBzcCwgNDBcXG4rXFx0c3QuZFxcdFxcdGE0LCBzcCwgNDhcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEJQRl9SRUdfQVggKHQwKSBob2xkcyB0aGUgb2Zmc2V0IHBhc3NlZCBpbiBieSB0aGUgdmVyaWZpZXI7IGFkZCBpdFxcbitcXHQgKiB0byBCUEZfUkVHX0ZQIChzNCkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wLFxcbitcXHQgKiB0aGVuIHBhc3MgaXQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGluIGEwLlxcbitcXHQgKlxcbitcXHQgKiBUaGUgdmVyaWZpZXIgZW1pdHMgYSBsb2FkIHVzaW5nIEZQIHJpZ2h0IGJlZm9yZSB0aGlzIGNhbGwsIHNvXFxuK1xcdCAqIEJQRl9SRUdfRlAgKHM0KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBKSVQgaW4gdGhpcyBjYXNlLlxcbitcXHQgKi9cXG4rXFx0YWRkLmRcXHRcXHRhMCwgdDAsIHM0XFxuK1xcdGJsXFx0XFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuK1xcdC8qIEJQRl9SRUdfQVggKHQwKSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHRoZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuK1xcdG1vdmVcXHRcXHR0MCwgYTBcXG4rXFxuK1xcdGxkLmRcXHRcXHRyYSwgc3AsIDU2XFxuK1xcdGxkLmRcXHRcXHRhNSwgc3AsIDhcXG4rXFx0bGQuZFxcdFxcdGEwLCBzcCwgMTZcXG4rXFx0bGQuZFxcdFxcdGExLCBzcCwgMjRcXG4rXFx0bGQuZFxcdFxcdGEyLCBzcCwgMzJcXG4rXFx0bGQuZFxcdFxcdGEzLCBzcCwgNDBcXG4rXFx0bGQuZFxcdFxcdGE0LCBzcCwgNDhcXG4rXFx0YWRkaS5kXFx0XFx0c3AsIHNwLCA2NFxcbitcXG4rXFx0anJcXHRcXHRyYVxcbitTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM0OjExLjY1OTEzNzA5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MTcxMjcxMDk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiU01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIixcbiAgICBcImJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25cIixcbiAgICBcImJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHBlci1DUFUgaW5zdHJ1Y3Rpb25zIGFuZCBgYnBmX3RpbWVkX21heV9nb3RvYCBpbiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgYWRkcyBhIG5ldyBhc3NlbWJseSBmdW5jdGlvbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIG9uIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBKSVQgY29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmM3OTg5MDUwNjExYjgxYWU4MmU4Yzc4MTdjYzJmNWQzNDNiNTgwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6MzQ6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2QuLjQ0ZmI1YWQyNmQxYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTQwNCw2ICs0MDQsNyBAQCBlbnVtIGxvb25nYXJjaF9ncHIge1xuIFx0TE9PTkdBUkNIX0dQUl9UNixcbiBcdExPT05HQVJDSF9HUFJfVDcsXG4gXHRMT09OR0FSQ0hfR1BSX1Q4LFxuK1x0TE9PTkdBUkNIX0dQUl9VMCA9IDIxLFx0LyogS2VybmVsIHBlci1DUFUgYmFzZSByZWdpc3RlciAoJHIyMSkgKi9cbiBcdExPT05HQVJDSF9HUFJfRlAgPSAyMixcbiBcdExPT05HQVJDSF9HUFJfUzAgPSAyMyxcbiBcdExPT05HQVJDSF9HUFJfUzEsXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlIGIvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlXG5pbmRleCAxZWMxMmEwYzMyNGE1Li44ZDlkZGI0OGY5ZWFiIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbkBAIC00LDQgKzQsNCBAQFxuICNcbiAjIENvcHlyaWdodCAoQykgMjAyMiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAjXG4tb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQub1xuK29iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1My4uMTE1MjM5NmY4NDg0MiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC03NDMsNiArNzQzLDE1IEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0XG4gXHRcdFx0bW92ZV9yZWcoY3R4LCBkc3QsIHQxKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcbitcdFx0XHRpZiAoZHN0ICE9IHNyYylcbitcdFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xuKyNpZmRlZiBDT05GSUdfU01QXG4rXHRcdFx0LyogZHN0ICs9IF9fbXlfY3B1X29mZnNldCwgaGVsZCBpbiAkcjIxICovXG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYWRkZCwgZHN0LCBkc3QsIExPT05HQVJDSF9HUFJfVTApO1xuKyNlbmRpZlxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdHN3aXRjaCAob2ZmKSB7XG4gXHRcdGNhc2UgMDpcbiBcdFx0XHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcbkBAIC0xMjA0LDcgKzEyMTMsMTMgQEAgc3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRcbiBcdFx0bW92ZV9hZGRyKGN0eCwgdDEsIGZ1bmNfYWRkcik7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGppcmwsIExPT05HQVJDSF9HUFJfUkEsIHQxLCAwKTtcbiBcbi1cdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4rXHRcdC8qXG4rXHRcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB1c2VzIGEgY3VzdG9tIGNhbGxpbmdcbitcdFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXG4rXHRcdCAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC5cbitcdFx0ICovXG4rXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRcdFx0bW92ZV9yZWcoY3R4LCByZWdtYXBbQlBGX1JFR18wXSwgTE9PTkdBUkNIX0dQUl9BMCk7XG4gXG4gXHRcdGJyZWFrO1xuQEAgLTIzOTEsNiArMjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4re1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0wLDAgKzEsNDcgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKy8qXG4rICogQXV0aG9yOiBHZW9yZ2UgR3VvIFx1MDAzY2d1b2Rvbmd0YWlAa3lsaW5vcy5jblx1MDAzZVxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBLeWxpblNvZnQgQ29ycG9yYXRpb24uXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2FzbW1hY3JvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuK1xuK1NZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuK1x0YWRkaS5kXHRcdHNwLCBzcCwgLTY0XG4rXHRzdC5kXHRcdHJhLCBzcCwgNTZcbitcbitcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMCAtIFI1IChhNSwgYTAgLSBhNCkgKi9cbitcdHN0LmRcdFx0YTUsIHNwLCA4XG4rXHRzdC5kXHRcdGEwLCBzcCwgMTZcbitcdHN0LmRcdFx0YTEsIHNwLCAyNFxuK1x0c3QuZFx0XHRhMiwgc3AsIDMyXG4rXHRzdC5kXHRcdGEzLCBzcCwgNDBcbitcdHN0LmRcdFx0YTQsIHNwLCA0OFxuK1xuK1x0LypcbitcdCAqIEJQRl9SRUdfQVggKHQwKSBob2xkcyB0aGUgb2Zmc2V0IHBhc3NlZCBpbiBieSB0aGUgdmVyaWZpZXI7IGFkZCBpdFxuK1x0ICogdG8gQlBGX1JFR19GUCAoczQpIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCxcbitcdCAqIHRoZW4gcGFzcyBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXG4rXHQgKlxuK1x0ICogVGhlIHZlcmlmaWVyIGVtaXRzIGEgbG9hZCB1c2luZyBGUCByaWdodCBiZWZvcmUgdGhpcyBjYWxsLCBzb1xuK1x0ICogQlBGX1JFR19GUCAoczQpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIEpJVCBpbiB0aGlzIGNhc2UuXG4rXHQgKi9cbitcdGFkZC5kXHRcdGEwLCB0MCwgczRcbitcdGJsXHRcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuK1x0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbitcdG1vdmVcdFx0dDAsIGEwXG4rXG4rXHRsZC5kXHRcdHJhLCBzcCwgNTZcbitcdGxkLmRcdFx0YTUsIHNwLCA4XG4rXHRsZC5kXHRcdGEwLCBzcCwgMTZcbitcdGxkLmRcdFx0YTEsIHNwLCAyNFxuK1x0bGQuZFx0XHRhMiwgc3AsIDMyXG4rXHRsZC5kXHRcdGEzLCBzcCwgNDBcbitcdGxkLmRcdFx0YTQsIHNwLCA0OFxuK1x0YWRkaS5kXHRcdHNwLCBzcCwgNjRcbitcbitcdGpyXHRcdHJhXG4rU1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzQ6MTEuNjU5MTM4MzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjE0NjYwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPXRydWUgLSBMb29uZ0FyY2ggQlBGIEpJVCBTdXBwb3J0KipcblxuT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdG8gdGhlIExvb25nQXJjaCBCUEYgSklULiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBhbHNvIGFkZHMgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AuICBUaGlzIGlzIHNwZWNpZmljIHRvIExvb25nQXJjaCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYWN0dWFsbHkgdGVzdGFibGUgYW5kIHJlYWNoYWJsZT8gIFJpZ2h0LCBRRU1VIGNhbiBlbXVsYXRlIExvb25nQXJjaCwgc28gdGhhdCdzIGEgcG9zaXRpdmUgc2lnbi4gIFN5emthbGxlciB0eXBpY2FsbHkgdGFyZ2V0cyB4ODZfNjQgYW5kIGFybTY0LCBidXQgaXQgY2FuIGhhbmRsZSBvdGhlciBhcmNoaXRlY3R1cmVzLCBzbyB0aGF0J3Mgbm90IGEgc2hvd3N0b3BwZXIgZWl0aGVyLlxuXG5Ob3csIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzaW5jZSB0aGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIChzcGVjaWZpY2FsbHksIHRoZSBCUEYgSklUIGluZnJhc3RydWN0dXJlLCB3aGljaCBpcyBkZWZpbml0ZWx5IGNvcmUpLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIGNvZGUgY2FuIGFjdHVhbGx5IGJlIGV4ZWN1dGVkLiBUaGVuIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBMZXQncyBsb29rIGF0IGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgYWZmZWN0ZWQuIExvb2tzIGxpa2UgdGhlIGNoYW5nZXMgbW9kaWZ5IGBidWlsZF9pbnNuYCBhbmQgYWRkIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLCBhbmQgdGhlIGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuXG5cbkFscmlnaHQsIG5vdyBsZXQncyBzZWUgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgY29kZSBjb21waWxlZCBhbmQgZXhlY3V0ZWQuIEl0J3Mgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYENPTkZJR19CUEZfSklUYC4gQnV0IGlzIHRoYXQgKmFsbCo/ICBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlYCBjb25maXJtcyB0aGF0IGBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vIGJwZl90aW1lZF9tYXlfZ290by5vYCwgc28gYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBjb25maWcuXG5cbkxldCdzIGRpZyBhIGJpdCBkZWVwZXIuICBJIG5vdGljZWQgYENPTkZJR19TTVBgIGJlaW5nIHVzZWQgaW4gYGJwZl9qaXQuY2A6IHNwZWNpZmljYWxseSBpbiB0aGUgZW1pdHRlZCBjb2RlIGZvciBwZXItQ1BVIG9mZnNldHM6XG5cbmBgYGNcbiNpZmRlZiBDT05GSUdfU01QXG4gICAgICAgICAgICAvKiBkc3QgKz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi9cbiAgICAgICAgICAgIGVtaXRfaW5zbihjdHgsIGFkZGQsIGRzdCwgZHN0LCBMT09OR0FSQ0hfR1BSX1UwKTtcbiNlbmRpZlxuYGBgXG5cblNvIGBTTVBgIGlzIGFsc28gcmVsZXZhbnQgaGVyZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWdzIGFyZSB0aGVyZSBpbiB0aGUgTG9vbmdBcmNoIGBLY29uZmlnYCBhcyB3ZWxsLiBUaGF0IHdpbGwgYmUgbmVlZGVkIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLlxuXG5Pa2F5LCBnaXZlbiB0aGF0IHRoaXMgbW9kaWZpZXMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBpcyByZWFjaGFibGUsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgaXMgd29ydGggZnV6emluZy4gSSdsbCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY5NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjA0Ljc4MDYwNjk4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk4MTgyMiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzU6MDQuODU0NTk3ODY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NjIxNzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBCUEZfSklUIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhlIGBCUEZfSklUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBsaXZlcy4gSXQncyBhIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzbyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCB3b3VsZCBiZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGZpbGVzLCByaWdodD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L2JwZi9LY29uZmlnYCBiZWNhdXNlIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGdpdmVuIHRoZSBCUEYgY29ubmVjdGlvbi4gSWYgaXQgaXNuJ3QgdGhlcmUsIHRoZW4gSSdsbCBpbW1lZGlhdGVseSBnbyBmb3IgYGluaXQvS2NvbmZpZ2AgYXMgdGhhdCdzIG9mdGVuIGEgZ2VuZXJhbCBjYXRjaC1hbGwgZm9yIGNvcmUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IGFueXRoaW5nIGZ1bmRhbWVudGFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjA4LjYwMDgxODEwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY4MzYzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNToxMC43NjkxODU5NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTAzMDIwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgSklUIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogSSByZWNhbGwgc2VlaW5nIGBCUEZfSklUYCBzb21ld2hlcmUsIGFuZCBJJ20gcHJldHR5IHN1cmUgaXQncyB0dWNrZWQgYXdheSBpbiB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGxvY2F0aW9uIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGF0J3MgbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIGFub3RoZXIgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgdGltaW5nIGNoZWNrcywgYW5kIHRoZSBuYW1lIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGlzIGNvbWluZyB0byBtaW5kLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSByZW1lbWJlciBpdCBiZWluZyBjYWxsZWQgYnkgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28uXG5cblNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpb24gb2YgYGJwZl9jaGVja190aW1lZF9tYXlfZ290b2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlcmUgaXQncyBpbXBsZW1lbnRlZC4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uJ3MgZGVjbGFyYXRpb24vZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGhpbiB0aGUgQlBGIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjE3LjI3MjIwODY2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUwODc5NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTI2LVxcdGFkZFxcdHgwLCB4OSwgeDI1XFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mjc6XFx0YmxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yOC1cXHQvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMi1cXHRhZGQuZFxcdFxcdGEwLCB0MCwgczRcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzM6XFx0YmxcXHRcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXFx0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICpcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjE0OiAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFxcdC0gcjMgPSBwdHIsIHJldHVybiBpbiByM1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXFx0YWRkICAgICByMywgcjMxLCByMTJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5OlxcdGJsICAgICAgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00MC1cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTI6ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmVcXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE3PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzEtXFx0YWRkXFx0YTAsIHQwLCBzNVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjMyOlxcdGNhbGxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMy1cXHRtdlxcdHQwLCBhMFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXFx0bGF5ICVyMiwwKCVyMTIsJXIxMylcXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3OlxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRsZ3IgJXIxMiwlcjJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOS1cXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NDA6XFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExOTY9dTY0IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE5Nzp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTk4LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDAwPXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTM0MTUtXFxua2VybmVsL2JwZi9jb3JlLmM6MzQxNjp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxua2VybmVsL2JwZi9jb3JlLmMtMzQxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjE5LjEyMzA5MjcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDUxOTUzMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGluZnJhc3RydWN0dXJlIGZvciB0aW1lZCBgZ290b2AgYW5kIHBlci1DUFUgaW5zdHJ1Y3Rpb24gc3VwcG9ydCBmb3IgQlBGIEpJVCBvbiBMb29uZ0FyY2guIFRoZSBmdW5jdGlvbnMgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIHNlZW0gbGlrZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gTG9naWNhbGx5LCBhc3N1bWluZyB3ZSdyZSBydW5uaW5nIG9uIExvb25nQXJjaCwgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGFuZCwgd2VsbCwgKmRvKiB3aGF0IHRoZXkncmUgaW50ZW5kZWQgdG8gZG8uXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYEJQRl9KSVRgIGFuZCBgU01QYC4gSG1tLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBCUEZfSklUYCBzZWN0aW9uLCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAyOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNjoxOS41NzUwNDgzMzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTYwMDg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzY6MTkuOTY2NjU3NjIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMzA2NTM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIG9mIGtlcm5lbCBkZXZlbG9wbWVudDpcblxuKipMb29uZ0FyY2ggYW5kIEpJVCBDb21waWxhdGlvbjogQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgSklUIGNvbXBpbGVycyB3ZSdyZSB1c2luZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSwgb3IgbWF5YmUganVzdCBkb3VibGUtY2hlY2sgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIGJlY2F1c2UgSSdtIG5vdCBlbnRpcmVseSBjZXJ0YWluIHdoaWNoIG9mIHRoZSBlQlBGL2NCUEYgSklUIG9wdGlvbnMgaXMgYWN0dWFsbHkgZW5hYmxlZCwgb3Igc2hvdWxkIGJlIGVuYWJsZWQsIGZvciBMb29uZ0FyY2guIElzIGl0IGRlZmluZWQgdG8gYEhBVkVfQ0JQRl9KSVRgLCBvciBkb2VzIExvb25nQXJjaCBnbyB3aXRoIGBIQVZFX0VCUEZfSklUYD8gSXQncyBhIGtleSBkZXRhaWwgdG8gcmVtZW1iZXIsIGVzcGVjaWFsbHkgaWYgSSdtIGxvb2tpbmcgYXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgcmVhbGx5IHNob3VsZCBjb25maXJtIHRoZSBjb3JyZWN0IGRlZmluZSwgYW5kIG1heWJlIGxvb2sgYXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB3aGlsZSBJJ20gYXQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNjoyOC45OTczMTQxNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjU4Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhBVkVfRUJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy03OS1cXHRzZWxlY3QgQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLU1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODA6XFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgaWYgSEFWRV9FQlBGX0pJVFxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODEtXFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX1RPUERPV05fTU1BUF9MQVlPVVRcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQzLVxcdHNlbGVjdCBIQVZFX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6MTQ0OlxcdHNlbGVjdCBIQVZFX0VCUEZfSklUIGlmIDY0QklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDUtXFx0c2VsZWN0IEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1MgaWYgIUFSQ0hfU1RSSUNUX0FMSUdOXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM2OjI5LjA0MDU3NzU5N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDY3Njg0MDE2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgU3VwcG9ydCAtIEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGZpbmFsbHkgaGFzIEJQRiBKSVQgYXZhaWxhYmxlLiBUaGF0J3MgZ29vZCBuZXdzLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggYXJlIGNydWNpYWwgY2FwYWJpbGl0aWVzIGZvciBvcHRpbWl6ZWQgQlBGIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IGZvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgdXNlIGNhc2VzLlxuXG5NeSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBidWlsZF9pbnNuYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgb2YgY291cnNlIHRoZSBzdXBwb3J0IGZ1bmN0aW9ucyBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGFuZCBpbnRlZ3JhdGVkLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIGBidWlsZF9pbnNuYCBpcyAqc3RhdGljKj8gUmlnaHQsIHRoYXQgbWVhbnMgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgcmVzdCBvZiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB0aGUgZW50cnkgcG9pbnRzLCBhbmQgb3ZlcmFsbCBjb250cm9sIGZsb3cuIFRoaXMgc3RhdGljIGZ1bmN0aW9uIGRvZXNuJ3QgbWFrZSBpdCBhIGRlYWQgZW5kIHRob3VnaCwgaXQgc3RpbGwgbmVlZHMgdG8gYmUgZXhhbWluZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgdGhlIEpJVC4gTGV0J3Mgc2VlIHdoYXQncyBjYWxsYWJsZSBmcm9tIHRoZSBvdXRzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODkxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjU1LjgwODk4MTgzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMTQ1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0cnVjdCBicGZfcHJvZyBcXFxcKmJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxMS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTo1NS44NTQwMDA0MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MzM4NDY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBCUEYgSklUIGNvbXBpbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCDigJMgaXQncyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRzLiBUaGVuLCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGlzIHRoZSBjb3JyZXNwb25kaW5nIGFzc2VtYmx5IGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VmdWwgdG8gaGF2ZSBhIGNsb3NlIGV5ZSBvbi5cblxuTm93LCBJJ20gbm90aW5nIHRoYXQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIGFsc28gZXhwb3NlZCwgbWVhbmluZyB0aGV5J3JlIG5vdCBzdGF0aWMuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgYXJlIGVpdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgaG9va3MgdGhhdCBpbXBhY3QgdGhlIG92ZXJhbGwgSklUIGZsb3cuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBpbmRlZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gWWVzLCBpdCdzIHRoZSByaWdodCBlbnRyeSBwb2ludCwgdGhlIHByaW1hcnkgZnVuY3Rpb24gaW5pdGlhdGluZyB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBBbmQsIHllcywgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBsb29rcyBsaWtlIGl0J2xsIGJlIGltcG9ydGFudCB0b28uXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIFRoaXMgd2lsbCBnaXZlIG1lIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBpbnRlcmFjdHMgd2l0aCBhbmQgcG90ZW50aWFsbHkgY3VzdG9taXplcyB0aGVzZSBzdXBwb3J0IGZ1bmN0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uc3RyYWludHMgb2YgdGhlIEpJVCBjb21waWxlciB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYxNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowMC44NDczODgxOTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODc1NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5ib29sIGJwZl9qaXRfc3VwcG9ydHNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNzY9c3RhdGljIHZvaWQgYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjgwLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjgxOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19rZnVuY19jYWxsKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODIte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyODY6Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODcte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzk0PWJvb2wgYnBmX2ppdF9ieXBhc3Nfc3BlY192NCh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzk4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5OTpib29sIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEodm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDAzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQwNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQwOTpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQxNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDE5LS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQyMDpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MjEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowMC44OTAyNjkyOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDEyMTY1ODgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIEludGVyZXN0aW5nIGFkZGl0aW9ucy4gSXQgYWxzbyBsb29rcyBsaWtlIGBidWlsZF9pbnNuYCBpbiB0aGUgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGZ1bmN0aW9uIGlzIGJlaW5nIG1vZGlmaWVkLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGF0IGBidWlsZF9pbnNuYCBjaGFuZ2UgdG8gc2VlIHRoZSBzcGVjaWZpY3MuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlLi4uIGBDT05GSUdfQlBGX0pJVGAgaXMgYSBnaXZlbiwgYW5kIGBDT05GSUdfU01QYCBpcyBwcm9iYWJseSByZWxldmFudCBnaXZlbiB0aGUgcGVyLUNQVSBhc3BlY3QuIEFoLCByaWdodCwgYW5kIHdlIHR5cGljYWxseSBuZWVkIGBDT05GSUdfQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGtlcm5lbC9icGYvYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEdvdHRhIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgSklUIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6NDA6MjEuMDExOTMwNDRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODQxNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyMS4wNTQ3ODA5NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MzkwNDAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEYgSklUIERlcGVuZGVuY3kgQ29udW5kcnVtKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgdGhpbmsgdGhpcyB0aHJvdWdoLi4uICpCUEZfSklUKi4gT2theSwgdGhhdCdzIHdoYXQgSSdtIGZvY3VzaW5nIG9uIHJpZ2h0IG5vdy4gV2FpdCBhIHNlY29uZCwgdGhlIHF1ZXN0aW9uIHRoYXQncyBuYWdnaW5nIG1lIGlzLCBkb2VzIGBCUEZfSklUYCBpbmhlcmVudGx5IGRlcGVuZCBvbiB0aGUgY29yZSBgQlBGYCBpbmZyYXN0cnVjdHVyZSwgb3IgaXMgaXQgaW5leHRyaWNhYmx5IGxpbmtlZCB0byBgQlBGX1NZU0NBTExgPyBUaGF0J3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEpJVCBmdW5jdGlvbnMuIFdpdGhvdXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nLCBteSBuZXh0IHN0ZXBzIGNvdWxkIGJlIGZsYXdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyNS42MDg2OTEzNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDM1MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz00Mj1jb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWc6NDQ6XFx0ZGVwZW5kcyBvbiBCUEZcXG5rZXJuZWwvYnBmL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDYtXFx0c2VsZWN0IEVYRUNNRU1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz02OT1jb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWc6NzE6XFx0ZGVwZW5kcyBvbiBIQVZFX0VCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNzItXFxua2VybmVsL2JwZi9LY29uZmlnPTczPWNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNzUtXFx0ZGVmYXVsdCB5XFxua2VybmVsL2JwZi9LY29uZmlnOjc2OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctNzctXFx0aGVscFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTkyPWNvbmZpZyBCUEZfTFNNXFxua2VybmVsL2JwZi9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWc6OTQ6XFx0ZGVwZW5kcyBvbiBCUEZfRVZFTlRTXFxua2VybmVsL2JwZi9LY29uZmlnOjk1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWc6OTY6XFx0ZGVwZW5kcyBvbiBTRUNVUklUWVxcbmtlcm5lbC9icGYvS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctOTgtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyNS42NTMxMzExMjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5OTU1Njc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgSklUIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgQlBGIEpJVCBzdHVmZi4gSXQgbG9va3MgbGlrZSBgQlBGX0pJVGAgaXMgZnVuZGFtZW50YWwsIHJlbHlpbmcgb24gYEJQRmAgYW5kIGVpdGhlciBgSEFWRV9DQlBGX0pJVGAgb3IgYEhBVkVfRUJQRl9KSVRgLiBBbmQgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBlQlBGIHByb2dyYW1zLiBJIHRoaW5rIEknbGwgaW5jbHVkZSBgQlBGX0pJVGAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgU01QYCB0byBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS5cblxuYGJwZl9pbnRfaml0X2NvbXBpbGVgIGRlZmluaXRlbHkgc3RhbmRzIG91dCBhcyBpbXBvcnRhbnQuIEJ1dCwgSSByZWFsbHkgd2FudCB0byB1bmRlcnN0YW5kIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBtb3JlLiBJIHN1c3BlY3QgaXQncyBnZXR0aW5nIGNhbGxlZCBxdWl0ZSBhIGJpdCwgbGlrZWx5IGR1cmluZyB2ZXJpZmljYXRpb24gb3IgSklUIGNvbXBpbGF0aW9uLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTQyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjMzLjI1MjY5MDQ0OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDE2ODI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMTc4PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19pbnNuKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgYm9vbCBpbl9hcmVuYSlcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMxOTEtXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MzE5Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMTkzLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjQwND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQwOC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI0MDk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEwLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NTU2PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19pbnNuKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgYm9vbCBpbl9hcmVuYSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTcxLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NTcyOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTczLXtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MjEyND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNDItXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMTQzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0NC17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA1Nz1ib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYxLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDYyOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE4Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTgzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExODQtYm9vbCBicGZfaml0X3N1cHBvcnRzX2tmdW5jX2NhbGwodm9pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9MjYzPXN0YXRpYyBpbnQgcGVyY3B1X2FycmF5X21hcF9nZW5fbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMjY3LVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoyNjg6XFx0aWYgKCFicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKCkpXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTI2OS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMjkxPWJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTMyOTUtXFxua2VybmVsL2JwZi9jb3JlLmM6MzI5Njpib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXFxua2VybmVsL2JwZi9jb3JlLmMtMzI5Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE1PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI0MTgtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQxOTpcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSlcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDIwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjc4MD1ib29sIGJwZl92ZXJpZmllcl9pbmxpbmVzX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBpbW0pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3ODgtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2Nzg5OlxcdFxcdHJldHVybiBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWppdF9yZXF1ZXN0ZWQgXFx1MDAyNlxcdTAwMjYgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNjc5MC0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6NDA6MzQuOTIyODYzODQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzA0OTIxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIHdlYWsgc3ltYm9scywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgKExvb25nQXJjaCwgaW4gdGhpcyBjYXNlKSBpcyBwcm92aWRpbmcgaXRzIG93biBvdmVycmlkZXMuIFRoaXMgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24sIGFzIHRoZXkgYXJlIGxpa2VseSBwb2ludHMgb2YgYXJjaGl0ZWN0dXJhbCBkZXZpYXRpb24uXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbDsgaXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgdGhhdCdzIGRpcmVjdGx5IHJlYWNoYWJsZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgQlBGIEpJVCBmb3IgTG9vbmdBcmNoLiBJIHNlZSBpdCdzIHRvdWNoaW5nIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgaW50cm9kdWNpbmcgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb246IGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoaXMgY29uZmlybXMgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIFdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIEJQRiBKSVQncyBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLlxuXG5UaGVyZWZvcmUsIG15IGRlY2lzaW9uIGlzIGVhc3kuIFdvcnRoRnV6emluZyA9IHRydWUuIFRoaXMgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6XG5cbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcbiogICBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gXG4qICAgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gXG4qICAgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gXG5cblRvIGVuYWJsZSB0aG9yb3VnaCB0ZXN0aW5nLCBJJ2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODg3LCJPdXRwdXRUb2tlbnMiOjE4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDo0My4yOTMzNTgwMzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ4NzExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqhmqn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 16:33:02 +0000 UTC FinishedAt: 2026-08-04 16:40:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "60781269e26c786de2bb93fb1e697a5c32ccee48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL", "SMP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "60781269e26c786de2bb93fb1e697a5c32ccee48", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_JIT", "BPF_SYSCALL", "SMP" ], "series_id": "13fd0df4-a412-488e-9a38-cd7322e450f3" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_int_jit_compile", "arch_bpf_timed_may_goto", "bpf_jit_supports_percpu_insn", "bpf_jit_supports_timed_may_goto" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9KSVQmIzM0OywKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7U01QJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX2ludF9qaXRfY29tcGlsZSYjMzQ7LAogICAgJiMzNDthcmNoX2JwZl90aW1lZF9tYXlfZ290byYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuJiMzNDssCiAgICAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYzc5ODkwNTA2MTFiODFhZTgyZThjNzgxN2NjMmY1ZDM0M2I1ODA4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozNDoxMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2QuLjQ0ZmI1YWQyNmQxYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTQwNCw2ICYjNDM7NDA0LDcgQEAgZW51bSBsb29uZ2FyY2hfZ3ByIHtcbiBcdExPT05HQVJDSF9HUFJfVDYsXG4gXHRMT09OR0FSQ0hfR1BSX1Q3LFxuIFx0TE9PTkdBUkNIX0dQUl9UOCxcbiYjNDM7XHRMT09OR0FSQ0hfR1BSX1UwID0gMjEsXHQvKiBLZXJuZWwgcGVyLUNQVSBiYXNlIHJlZ2lzdGVyICgkcjIxKSAqL1xuIFx0TE9PTkdBUkNIX0dQUl9GUCA9IDIyLFxuIFx0TE9PTkdBUkNIX0dQUl9TMCA9IDIzLFxuIFx0TE9PTkdBUkNIX0dQUl9TMSxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbmluZGV4IDFlYzEyYTBjMzI0YTUuLjhkOWRkYjQ4ZjllYWIgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxuQEAgLTQsNCAmIzQzOzQsNCBAQFxuICNcbiAjIENvcHlyaWdodCAoQykgMjAyMiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAjXG4tb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm9cbiYjNDM7b2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1My4uMTE1MjM5NmY4NDg0MiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC03NDMsNiAmIzQzOzc0MywxNSBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dFxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCB0MSk7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKSkge1xuJiM0MztcdFx0XHRpZiAoZHN0ICE9IHNyYylcbiYjNDM7XHRcdFx0XHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcbiYjNDM7I2lmZGVmIENPTkZJR19TTVBcbiYjNDM7XHRcdFx0LyogZHN0ICYjNDM7PSBfX215X2NwdV9vZmZzZXQsIGhlbGQgaW4gJHIyMSAqL1xuJiM0MztcdFx0XHRlbWl0X2luc24oY3R4LCBhZGRkLCBkc3QsIGRzdCwgTE9PTkdBUkNIX0dQUl9VMCk7XG4mIzQzOyNlbmRpZlxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XHRcdH1cbiBcdFx0c3dpdGNoIChvZmYpIHtcbiBcdFx0Y2FzZSAwOlxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xuQEAgLTEyMDQsNyAmIzQzOzEyMTMsMTMgQEAgc3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRcbiBcdFx0bW92ZV9hZGRyKGN0eCwgdDEsIGZ1bmNfYWRkcik7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGppcmwsIExPT05HQVJDSF9HUFJfUkEsIHQxLCAwKTtcbiBcbi1cdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogQ2FsbCB0byBhcmNoX2JwZl90aW1lZF9tYXlfZ290bygpIHVzZXMgYSBjdXN0b20gY2FsbGluZ1xuJiM0MztcdFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXG4mIzQzO1x0XHQgKiBzbyBza2lwIG1vdmluZyB0aGUgQyByZXR1cm4gdmFsdWUgaW50byBCUEZfUkVHXzAuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGZ1bmNfYWRkciAhPSAodTY0KWFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIFx0XHRcdG1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApO1xuIFxuIFx0XHRicmVhaztcbkBAIC0yMzkxLDYgJiM0MzsyNDA2LDE2IEBAIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mztib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiB0cnVlO1xuJiM0Mzt9XG4mIzQzO1xuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0wLDAgJiM0MzsxLDQ3IEBAXG4mIzQzOy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXG4mIzQzOy8qXG4mIzQzOyAqIEF1dGhvcjogR2VvcmdlIEd1byBcdTAwM2NndW9kb25ndGFpQGt5bGlub3MuY25cdTAwM2VcbiYjNDM7ICogQ29weXJpZ2h0IChDKSAyMDI2IEt5bGluU29mdCBDb3Jwb3JhdGlvbi5cbiYjNDM7ICovXG4mIzQzO1xuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vYXNtbWFjcm8uaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbGlua2FnZS5oXHUwMDNlXG4mIzQzO1xuJiM0MztTWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbiYjNDM7XHRhZGRpLmRcdFx0c3AsIHNwLCAtNjRcbiYjNDM7XHRzdC5kXHRcdHJhLCBzcCwgNTZcbiYjNDM7XG4mIzQzO1x0LyogU2F2ZSBCUEYgcmVnaXN0ZXJzIFIwIC0gUjUgKGE1LCBhMCAtIGE0KSAqL1xuJiM0MztcdHN0LmRcdFx0YTUsIHNwLCA4XG4mIzQzO1x0c3QuZFx0XHRhMCwgc3AsIDE2XG4mIzQzO1x0c3QuZFx0XHRhMSwgc3AsIDI0XG4mIzQzO1x0c3QuZFx0XHRhMiwgc3AsIDMyXG4mIzQzO1x0c3QuZFx0XHRhMywgc3AsIDQwXG4mIzQzO1x0c3QuZFx0XHRhNCwgc3AsIDQ4XG4mIzQzO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogQlBGX1JFR19BWCAodDApIGhvbGRzIHRoZSBvZmZzZXQgcGFzc2VkIGluIGJ5IHRoZSB2ZXJpZmllcjsgYWRkIGl0XG4mIzQzO1x0ICogdG8gQlBGX1JFR19GUCAoczQpIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCxcbiYjNDM7XHQgKiB0aGVuIHBhc3MgaXQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGluIGEwLlxuJiM0MztcdCAqXG4mIzQzO1x0ICogVGhlIHZlcmlmaWVyIGVtaXRzIGEgbG9hZCB1c2luZyBGUCByaWdodCBiZWZvcmUgdGhpcyBjYWxsLCBzb1xuJiM0MztcdCAqIEJQRl9SRUdfRlAgKHM0KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBKSVQgaW4gdGhpcyBjYXNlLlxuJiM0MztcdCAqL1xuJiM0MztcdGFkZC5kXHRcdGEwLCB0MCwgczRcbiYjNDM7XHRibFx0XHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbiYjNDM7XHQvKiBCUEZfUkVHX0FYICh0MCkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSB0aGUgcmV0dXJuIHZhbHVlIHRvIGl0LiAqL1xuJiM0MztcdG1vdmVcdFx0dDAsIGEwXG4mIzQzO1xuJiM0MztcdGxkLmRcdFx0cmEsIHNwLCA1NlxuJiM0MztcdGxkLmRcdFx0YTUsIHNwLCA4XG4mIzQzO1x0bGQuZFx0XHRhMCwgc3AsIDE2XG4mIzQzO1x0bGQuZFx0XHRhMSwgc3AsIDI0XG4mIzQzO1x0bGQuZFx0XHRhMiwgc3AsIDMyXG4mIzQzO1x0bGQuZFx0XHRhMywgc3AsIDQwXG4mIzQzO1x0bGQuZFx0XHRhNCwgc3AsIDQ4XG4mIzQzO1x0YWRkaS5kXHRcdHNwLCBzcCwgNjRcbiYjNDM7XG4mIzQzO1x0anJcdFx0cmFcbiYjNDM7U1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmM3OTg5MDUwNjExYjgxYWU4MmU4Yzc4MTdjYzJmNWQzNDNiNTgwOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDQgMTY6MzQ6MTAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmgKaW5kZXggNzZiNzIzNTkwMDIzZC4uNDRmYjVhZDI2ZDFhNiAxMDA2NDQKLS0tIGEvYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vaW5zdC5oCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaApAQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBlbnVtIGxvb25nYXJjaF9ncHIgewogCUxPT05HQVJDSF9HUFJfVDYsCiAJTE9PTkdBUkNIX0dQUl9UNywKIAlMT09OR0FSQ0hfR1BSX1Q4LAomIzQzOwlMT09OR0FSQ0hfR1BSX1UwID0gMjEsCS8qIEtlcm5lbCBwZXItQ1BVIGJhc2UgcmVnaXN0ZXIgKCRyMjEpICovCiAJTE9PTkdBUkNIX0dQUl9GUCA9IDIyLAogCUxPT05HQVJDSF9HUFJfUzAgPSAyMywKIAlMT09OR0FSQ0hfR1BSX1MxLApkaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlIGIvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlCmluZGV4IDFlYzEyYTBjMzI0YTUuLjhkOWRkYjQ4ZjllYWIgMTAwNjQ0Ci0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUKQEAgLTQsNCAmIzQzOzQsNCBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMjIgTG9vbmdzb24gVGVjaG5vbG9neSBDb3Jwb3JhdGlvbiBMaW1pdGVkCiAjCi1vYmotJChDT05GSUdfQlBGX0pJVCkgJiM0Mzs9IGJwZl9qaXQubwomIzQzO29iai0kKENPTkZJR19CUEZfSklUKSAmIzQzOz0gYnBmX2ppdC5vIGJwZl90aW1lZF9tYXlfZ290by5vCmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYwppbmRleCAyNzM4YjRkYjExNjUzLi4xMTUyMzk2Zjg0ODQyIDEwMDY0NAotLS0gYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMKQEAgLTc0Myw2ICYjNDM7NzQzLDE1IEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0CiAJCQltb3ZlX3JlZyhjdHgsIGRzdCwgdDEpOwogCQkJYnJlYWs7CiAJCX0KJiM0MzsJCWlmIChpbnNuX2lzX21vdl9wZXJjcHVfYWRkcihpbnNuKSkgewomIzQzOwkJCWlmIChkc3QgIT0gc3JjKQomIzQzOwkJCQltb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTsKJiM0MzsjaWZkZWYgQ09ORklHX1NNUAomIzQzOwkJCS8qIGRzdCAmIzQzOz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi8KJiM0MzsJCQllbWl0X2luc24oY3R4LCBhZGRkLCBkc3QsIGRzdCwgTE9PTkdBUkNIX0dQUl9VMCk7CiYjNDM7I2VuZGlmCiYjNDM7CQkJYnJlYWs7CiYjNDM7CQl9CiAJCXN3aXRjaCAob2ZmKSB7CiAJCWNhc2UgMDoKIAkJCW1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpOwpAQCAtMTIwNCw3ICYjNDM7MTIxMywxMyBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dAogCQltb3ZlX2FkZHIoY3R4LCB0MSwgZnVuY19hZGRyKTsKIAkJZW1pdF9pbnNuKGN0eCwgamlybCwgTE9PTkdBUkNIX0dQUl9SQSwgdDEsIDApOwogCi0JCWlmIChpbnNuLSZndDtzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCkKJiM0MzsJCS8qCiYjNDM7CQkgKiBDYWxsIHRvIGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKCkgdXNlcyBhIGN1c3RvbSBjYWxsaW5nCiYjNDM7CQkgKiBjb252ZW50aW9uIHdpdGggdGhlIGFyZ3VtZW50IGFuZCByZXR1cm4gdmFsdWUgaW4gQlBGX1JFR19BWCwKJiM0MzsJCSAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC4KJiM0MzsJCSAqLwomIzQzOwkJaWYgKGluc24tJmd0O3NyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMICZhbXA7JmFtcDsKJiM0MzsJCSAgICBmdW5jX2FkZHIgIT0gKHU2NClhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKIAkJCW1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApOwogCiAJCWJyZWFrOwpAQCAtMjM5MSw2ICYjNDM7MjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwomIzQzO2Jvb2wgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290byh2b2lkKQomIzQzO3sKJiM0MzsJcmV0dXJuIHRydWU7CiYjNDM7fQomIzQzOwogLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovCiBib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TCkBAIC0wLDAgJiM0MzsxLDQ3IEBACiYjNDM7LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KJiM0MzsvKgomIzQzOyAqIEF1dGhvcjogR2VvcmdlIEd1byAmbHQ7Z3VvZG9uZ3RhaUBreWxpbm9zLmNuJmd0OwomIzQzOyAqIENvcHlyaWdodCAoQykgMjAyNiBLeWxpblNvZnQgQ29ycG9yYXRpb24uCiYjNDM7ICovCiYjNDM7CiYjNDM7I2luY2x1ZGUgJmx0O2FzbS9hc21tYWNyby5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDthc20vcmVnZGVmLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2V4cG9ydC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9saW5rYWdlLmgmZ3Q7CiYjNDM7CiYjNDM7U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pCiYjNDM7CWFkZGkuZAkJc3AsIHNwLCAtNjQKJiM0MzsJc3QuZAkJcmEsIHNwLCA1NgomIzQzOwomIzQzOwkvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAgLSBSNSAoYTUsIGEwIC0gYTQpICovCiYjNDM7CXN0LmQJCWE1LCBzcCwgOAomIzQzOwlzdC5kCQlhMCwgc3AsIDE2CiYjNDM7CXN0LmQJCWExLCBzcCwgMjQKJiM0MzsJc3QuZAkJYTIsIHNwLCAzMgomIzQzOwlzdC5kCQlhMywgc3AsIDQwCiYjNDM7CXN0LmQJCWE0LCBzcCwgNDgKJiM0MzsKJiM0MzsJLyoKJiM0MzsJICogQlBGX1JFR19BWCAodDApIGhvbGRzIHRoZSBvZmZzZXQgcGFzc2VkIGluIGJ5IHRoZSB2ZXJpZmllcjsgYWRkIGl0CiYjNDM7CSAqIHRvIEJQRl9SRUdfRlAgKHM0KSB0byBnZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGNvdW50IGFuZCB0aW1lc3RhbXAsCiYjNDM7CSAqIHRoZW4gcGFzcyBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuCiYjNDM7CSAqCiYjNDM7CSAqIFRoZSB2ZXJpZmllciBlbWl0cyBhIGxvYWQgdXNpbmcgRlAgcmlnaHQgYmVmb3JlIHRoaXMgY2FsbCwgc28KJiM0MzsJICogQlBGX1JFR19GUCAoczQpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIEpJVCBpbiB0aGlzIGNhc2UuCiYjNDM7CSAqLwomIzQzOwlhZGQuZAkJYTAsIHQwLCBzNAomIzQzOwlibAkJYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvCiYjNDM7CS8qIEJQRl9SRUdfQVggKHQwKSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHRoZSByZXR1cm4gdmFsdWUgdG8gaXQuICovCiYjNDM7CW1vdmUJCXQwLCBhMAomIzQzOwomIzQzOwlsZC5kCQlyYSwgc3AsIDU2CiYjNDM7CWxkLmQJCWE1LCBzcCwgOAomIzQzOwlsZC5kCQlhMCwgc3AsIDE2CiYjNDM7CWxkLmQJCWExLCBzcCwgMjQKJiM0MzsJbGQuZAkJYTIsIHNwLCAzMgomIzQzOwlsZC5kCQlhMywgc3AsIDQwCiYjNDM7CWxkLmQJCWE0LCBzcCwgNDgKJiM0MzsJYWRkaS5kCQlzcCwgc3AsIDY0CiYjNDM7CiYjNDM7CWpyCQlyYQomIzQzO1NZTV9GVU5DX0VORChhcmNoX2JwZl90aW1lZF9tYXlfZ290bykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmc9dHJ1ZSAtIExvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQqKgoKT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdG8gdGhlIExvb25nQXJjaCBCUEYgSklULiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIHRvdWNoaW5nIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgYWxzbyBhZGRzIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLiAgVGhpcyBpcyBzcGVjaWZpYyB0byBMb29uZ0FyY2gsIHdoaWNoIGlzIGdvb2QgdG8ga25vdy4gVGhlIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGFjdHVhbGx5IHRlc3RhYmxlIGFuZCByZWFjaGFibGU/ICBSaWdodCwgUUVNVSBjYW4gZW11bGF0ZSBMb29uZ0FyY2gsIHNvIHRoYXQmIzM5O3MgYSBwb3NpdGl2ZSBzaWduLiAgU3l6a2FsbGVyIHR5cGljYWxseSB0YXJnZXRzIHg4Nl82NCBhbmQgYXJtNjQsIGJ1dCBpdCBjYW4gaGFuZGxlIG90aGVyIGFyY2hpdGVjdHVyZXMsIHNvIHRoYXQmIzM5O3Mgbm90IGEgc2hvd3N0b3BwZXIgZWl0aGVyLgoKTm93LCBhY2NvcmRpbmcgdG8gdGhlIGluc3RydWN0aW9ucywgc2luY2UgdGhpcyBtb2RpZmllcyBjb3JlIGtlcm5lbCBsb2dpYyAoc3BlY2lmaWNhbGx5LCB0aGUgQlBGIEpJVCBpbmZyYXN0cnVjdHVyZSwgd2hpY2ggaXMgZGVmaW5pdGVseSBjb3JlKSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZSBjb2RlIGNhbiBhY3R1YWxseSBiZSBleGVjdXRlZC4gVGhlbiBJIG5lZWQgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBMZXQmIzM5O3MgbG9vayBhdCBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgYW5kIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbnMgYXJlIGFmZmVjdGVkLiBMb29rcyBsaWtlIHRoZSBjaGFuZ2VzIG1vZGlmeSBgYnVpbGRfaW5zbmAgYW5kIGFkZCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAsIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgYW5kIHRoZSBhc3NlbWJseSBmdW5jdGlvbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLgoKQWxyaWdodCwgbm93IGxldCYjMzk7cyBzZWUgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgY29kZSBjb21waWxlZCBhbmQgZXhlY3V0ZWQuIEl0JiMzOTtzIG9idmlvdXNseSBnb2luZyB0byBuZWVkIGBDT05GSUdfQlBGX0pJVGAuIEJ1dCBpcyB0aGF0ICphbGwqPyAgQSBxdWljayBjaGVjayBvZiB0aGUgYGFyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZWAgY29uZmlybXMgdGhhdCBgb2JqLSQoQ09ORklHX0JQRl9KSVQpICYjNDM7PSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9gLCBzbyBgQlBGX0pJVGAgaXMgdGhlIGNyaXRpY2FsIGNvbmZpZy4KCkxldCYjMzk7cyBkaWcgYSBiaXQgZGVlcGVyLiAgSSBub3RpY2VkIGBDT05GSUdfU01QYCBiZWluZyB1c2VkIGluIGBicGZfaml0LmNgOiBzcGVjaWZpY2FsbHkgaW4gdGhlIGVtaXR0ZWQgY29kZSBmb3IgcGVyLUNQVSBvZmZzZXRzOgoKYGBgYwojaWZkZWYgQ09ORklHX1NNUAogICAgICAgICAgICAvKiBkc3QgJiM0Mzs9IF9fbXlfY3B1X29mZnNldCwgaGVsZCBpbiAkcjIxICovCiAgICAgICAgICAgIGVtaXRfaW5zbihjdHgsIGFkZGQsIGRzdCwgZHN0LCBMT09OR0FSQ0hfR1BSX1UwKTsKI2VuZGlmCmBgYAoKU28gYFNNUGAgaXMgYWxzbyByZWxldmFudCBoZXJlLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZSBjb25maWdzIGFyZSB0aGVyZSBpbiB0aGUgTG9vbmdBcmNoIGBLY29uZmlnYCBhcyB3ZWxsLiBUaGF0IHdpbGwgYmUgbmVlZGVkIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLgoKT2theSwgZ2l2ZW4gdGhhdCB0aGlzIG1vZGlmaWVzIGNvcmUgZnVuY3Rpb25hbGl0eSBhbmQgaXMgcmVhY2hhYmxlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhpcyBpcyB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRmluZGluZyB0aGUgQlBGX0pJVCBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB3aGVyZSB0aGUgYEJQRl9KSVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGxpdmVzLiBJdCYjMzk7cyBhIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzbyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCB3b3VsZCBiZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGZpbGVzLCByaWdodD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L2JwZi9LY29uZmlnYCBiZWNhdXNlIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGdpdmVuIHRoZSBCUEYgY29ubmVjdGlvbi4gSWYgaXQgaXNuJiMzOTt0IHRoZXJlLCB0aGVuIEkmIzM5O2xsIGltbWVkaWF0ZWx5IGdvIGZvciBgaW5pdC9LY29uZmlnYCBhcyB0aGF0JiMzOTtzIG9mdGVuIGEgZ2VuZXJhbCBjYXRjaC1hbGwgZm9yIGNvcmUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IGFueXRoaW5nIGZ1bmRhbWVudGFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTQxLVxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNDMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXCYjMzQ7XG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxua2VybmVsL2JwZi9LY29uZmlnOjU4OmNvbmZpZyBCUEZfSklUX0FMV0FZU19PTlxua2VybmVsL2JwZi9LY29uZmlnLTU5LVx0Ym9vbCBcJiMzNDtQZXJtYW5lbnRseSBlbmFibGUgQlBGIEpJVCBhbmQgcmVtb3ZlIEJQRiBpbnRlcnByZXRlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy02OC1cbmtlcm5lbC9icGYvS2NvbmZpZzo2OTpjb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXHRkZWZfYm9vbCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIHx8IEJQRl9KSVRfQUxXQVlTX09OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHdvcmtpbmcgdGhyb3VnaCB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBKSVQgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKioKCkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogSSByZWNhbGwgc2VlaW5nIGBCUEZfSklUYCBzb21ld2hlcmUsIGFuZCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIHR1Y2tlZCBhd2F5IGluIHRoZSBga2VybmVsL2JwZi9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGxvY2F0aW9uIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGF0JiMzOTtzIG15IGluaXRpYWwgaHlwb3RoZXNpcy4KCk5vdywgSSYjMzk7bSB0cnlpbmcgdG8gcmVjYWxsIGFub3RoZXIgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgdGltaW5nIGNoZWNrcywgYW5kIHRoZSBuYW1lIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGlzIGNvbWluZyB0byBtaW5kLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSByZW1lbWJlciBpdCBiZWluZyBjYWxsZWQgYnkgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28uCgpTbywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIG9mIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gLiBJIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZXJlIGl0JiMzOTtzIGltcGxlbWVudGVkLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uJiMzOTtzIGRlY2xhcmF0aW9uL2RlZmluaXRpb24gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTY9U1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMjYtXHRhZGRcdHgwLCB4OSwgeDI1XG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoyNzpcdGJsXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTI4LVx0LyogQlBGX1JFR19BWCh4OSkgd2lsbCBiZSBzdG9yZWQgaW50byBjb3VudCwgc28gbW92ZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTEyPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMi1cdGFkZC5kXHRcdGEwLCB0MCwgczRcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozMzpcdGJsXHRcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM0LVx0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTEzLSAqXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjE0OiAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTUtICogXHQtIHIzID0gcHRyLCByZXR1cm4gaW4gcjNcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTIwPVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXHRhZGQgICAgIHIzLCByMzEsIHIxMlxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozOTpcdGJsICAgICAgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTQwLVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzoxMjogKiBDYWxscyBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG8ocHRyKSB3aXRoIHRoZSBzdGFuZGFyZCBSSVNDLVYgQUJJLCB3aGVyZVxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICogcHRyID0gQlBGX1JFR19GUCAoczUpICYjNDM7IEJQRl9SRUdfQVggKHQwKS4gQlBGIFIwLVI1IChhNSwgYTAtYTQpIGFyZSBzYXZlZFxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE3PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTMxLVx0YWRkXHRhMCwgdDAsIHM1XG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzozMjpcdGNhbGxcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzMtXHRtdlx0dDAsIGEwXG4tLVxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTM2LVx0bGF5ICVyMiwwKCVyMTIsJXIxMylcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mzc6XHRicmFzbCAlcjE0LGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cdGxnciAlcjEyLCVyMlxuLS1cbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcbi0tXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzktXHRDQUxMX0RFUFRIX0FDQ09VTlRcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUzo0MDpcdGNhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDEtXG4tLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaD0xMTk2PXU2NCBhcmNoX2JwZl90aW1lZF9tYXlfZ290byh2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE5Nzp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExOTgtYm9vbCBicGZfaGVscGVyX2NoYW5nZXNfcGt0X2RhdGEoZW51bSBicGZfZnVuY19pZCBmdW5jX2lkKTtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDAwPXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDE1LVxua2VybmVsL2JwZi9jb3JlLmM6MzQxNjp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXG5rZXJuZWwvYnBmL2NvcmUuYy0zNDE3LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDI4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgdGltZWQgYGdvdG9gIGFuZCBwZXItQ1BVIGluc3RydWN0aW9uIHN1cHBvcnQgZm9yIEJQRiBKSVQgb24gTG9vbmdBcmNoLiBUaGUgZnVuY3Rpb25zIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBzZWVtIGxpa2UgdGhlIGtleSBwbGF5ZXJzIGhlcmUuIExvZ2ljYWxseSwgYXNzdW1pbmcgd2UmIzM5O3JlIHJ1bm5pbmcgb24gTG9vbmdBcmNoLCB0aGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGFjY2Vzc2libGUgYW5kLCB3ZWxsLCAqZG8qIHdoYXQgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gZG8uCgpJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRoYXQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb25zIGFwcGVhciB0byBiZSBgQlBGX0pJVGAgYW5kIGBTTVBgLiBIbW0sIGFyZSB0aGVyZSBhbnkgb3RoZXIgZGVwZW5kZW5jaWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgYGFyY2gvbG9vbmdhcmNoL0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSB0aGUgYEJQRl9KSVRgIHNlY3Rpb24sIHRvIGJlIGFic29sdXRlbHkgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgQlBGX0pJVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDAxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgb2Yga2VybmVsIGRldmVsb3BtZW50OgoKKipMb29uZ0FyY2ggYW5kIEpJVCBDb21waWxhdGlvbjogQSBRdWljayBDaGVjayoqCgpSaWdodCwgSSYjMzk7bSBqdXN0IHF1aWNrbHkgdHJ5aW5nIHRvIGNsYXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBKSVQgY29tcGlsZXJzIHdlJiMzOTtyZSB1c2luZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSwgb3IgbWF5YmUganVzdCBkb3VibGUtY2hlY2sgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIGJlY2F1c2UgSSYjMzk7bSBub3QgZW50aXJlbHkgY2VydGFpbiB3aGljaCBvZiB0aGUgZUJQRi9jQlBGIEpJVCBvcHRpb25zIGlzIGFjdHVhbGx5IGVuYWJsZWQsIG9yIHNob3VsZCBiZSBlbmFibGVkLCBmb3IgTG9vbmdBcmNoLiBJcyBpdCBkZWZpbmVkIHRvIGBIQVZFX0NCUEZfSklUYCwgb3IgZG9lcyBMb29uZ0FyY2ggZ28gd2l0aCBgSEFWRV9FQlBGX0pJVGA/IEl0JiMzOTtzIGEga2V5IGRldGFpbCB0byByZW1lbWJlciwgZXNwZWNpYWxseSBpZiBJJiMzOTttIGxvb2tpbmcgYXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgcmVhbGx5IHNob3VsZCBjb25maXJtIHRoZSBjb3JyZWN0IGRlZmluZSwgYW5kIG1heWJlIGxvb2sgYXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB3aGlsZSBJJiMzOTttIGF0IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtIQVZFX0VCUEZfSklUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctNzktXHRzZWxlY3QgQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLU1xuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzo4MDpcdHNlbGVjdCBBUkNIX1dBTlRfREVGQVVMVF9CUEZfSklUIGlmIEhBVkVfRUJQRl9KSVRcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODEtXHRzZWxlY3QgQVJDSF9XQU5UX0RFRkFVTFRfVE9QRE9XTl9NTUFQX0xBWU9VVFxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQzLVx0c2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0VfV0lUSF9SRUdTXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjE0NDpcdHNlbGVjdCBIQVZFX0VCUEZfSklUIGlmIDY0QklUXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTE0NS1cdHNlbGVjdCBIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTIGlmICFBUkNIX1NUUklDVF9BTElHTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3ODkxCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKgoKT2theSwgc28gdGhlIExvb25nQXJjaCBhcmNoaXRlY3R1cmUgZmluYWxseSBoYXMgQlBGIEpJVCBhdmFpbGFibGUuIFRoYXQmIzM5O3MgZ29vZCBuZXdzLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggYXJlIGNydWNpYWwgY2FwYWJpbGl0aWVzIGZvciBvcHRpbWl6ZWQgQlBGIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IGZvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgdXNlIGNhc2VzLgoKTXkgaW5pdGlhbCBmb2N1cyBuZWVkcyB0byBiZSBvbiBhIGZldyBrZXkgZnVuY3Rpb25zOiBgYnVpbGRfaW5zbmAgd2l0aGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpbiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TYCwgYW5kIG9mIGNvdXJzZSB0aGUgc3VwcG9ydCBmdW5jdGlvbnMgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdGhlbXNlbHZlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGFyZSBpbXBsZW1lbnRlZCBhbmQgaW50ZWdyYXRlZC4KCkhvbGQgb24gYSBzZWNvbmQuLi4gYGJ1aWxkX2luc25gIGlzICpzdGF0aWMqPyBSaWdodCwgdGhhdCBtZWFucyBpdCYjMzk7cyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBJJiMzOTtsbCBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIHJlc3Qgb2YgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIHRvIGlkZW50aWZ5IHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucywgdGhlIGVudHJ5IHBvaW50cywgYW5kIG92ZXJhbGwgY29udHJvbCBmbG93LiBUaGlzIHN0YXRpYyBmdW5jdGlvbiBkb2VzbiYjMzk7dCBtYWtlIGl0IGEgZGVhZCBlbmQgdGhvdWdoLCBpdCBzdGlsbCBuZWVkcyB0byBiZSBleGFtaW5lZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCB3b3JraW5ncyBvZiB0aGUgSklULiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgY2FsbGFibGUgZnJvbSB0aGUgb3V0c2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0cnVjdCBicGZfcHJvZyBcXCpicGZfaW50X2ppdF9jb21waWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTEtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxMy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MTYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgSklUIENvbXBpbGF0aW9uIEZsb3cqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBCUEYgSklUIGNvbXBpbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCDigJMgaXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIHN0YXJ0cy4gVGhlbiwgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBpcyB0aGUgY29ycmVzcG9uZGluZyBhc3NlbWJseSBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZnVsIHRvIGhhdmUgYSBjbG9zZSBleWUgb24uCgpOb3csIEkmIzM5O20gbm90aW5nIHRoYXQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIGFsc28gZXhwb3NlZCwgbWVhbmluZyB0aGV5JiMzOTtyZSBub3Qgc3RhdGljLiBUaGlzIHN1Z2dlc3RzIHRoZXNlIGFyZSBlaXRoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhvb2tzIHRoYXQgaW1wYWN0IHRoZSBvdmVyYWxsIEpJVCBmbG93LgoKTGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBpbmRlZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gWWVzLCBpdCYjMzk7cyB0aGUgcmlnaHQgZW50cnkgcG9pbnQsIHRoZSBwcmltYXJ5IGZ1bmN0aW9uIGluaXRpYXRpbmcgdGhlIEJQRiBKSVQgY29tcGlsYXRpb24gcHJvY2Vzcy4gQW5kLCB5ZXMsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AgbG9va3MgbGlrZSBpdCYjMzk7bGwgYmUgaW1wb3J0YW50IHRvby4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIFRoaXMgd2lsbCBnaXZlIG1lIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBpbnRlcmFjdHMgd2l0aCBhbmQgcG90ZW50aWFsbHkgY3VzdG9taXplcyB0aGVzZSBzdXBwb3J0IGZ1bmN0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uc3RyYWludHMgb2YgdGhlIEpJVCBjb21waWxlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XmJvb2wgYnBmX2ppdF9zdXBwb3J0c18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9Mjc2PXN0YXRpYyB2b2lkIGJ1aWxkX2VwaWxvZ3VlKHN0cnVjdCBqaXRfY3R4ICpjdHgpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODAtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI4MTpib29sIGJwZl9qaXRfc3VwcG9ydHNfa2Z1bmNfY2FsbCh2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODIte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjg1LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyODY6Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI4Ny17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzk0PWJvb2wgYnBmX2ppdF9ieXBhc3Nfc3BlY192NCh2b2lkKVxuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjM5OC1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5OTpib29sIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEodm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQwMC17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDAzLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDA0OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19mc2Vzc2lvbih2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA1LXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDgtXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI0MDk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTAte1xuLS1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQxMy1cbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQxNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQxNS17XG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDE5LS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDIwOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDIxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTgyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLiBJbnRlcmVzdGluZyBhZGRpdGlvbnMuIEl0IGFsc28gbG9va3MgbGlrZSBgYnVpbGRfaW5zbmAgaW4gdGhlIGBicGZfaW50X2ppdF9jb21waWxlYCBmdW5jdGlvbiBpcyBiZWluZyBtb2RpZmllZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gdGhhdCBgYnVpbGRfaW5zbmAgY2hhbmdlIHRvIHNlZSB0aGUgc3BlY2lmaWNzLgoKTm93LCBiZWZvcmUgSSBzaWduIG9mZiBvbiB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0JiMzOTtzIHNlZS4uLiBgQ09ORklHX0JQRl9KSVRgIGlzIGEgZ2l2ZW4sIGFuZCBgQ09ORklHX1NNUGAgaXMgcHJvYmFibHkgcmVsZXZhbnQgZ2l2ZW4gdGhlIHBlci1DUFUgYXNwZWN0LiBBaCwgcmlnaHQsIGFuZCB3ZSB0eXBpY2FsbHkgbmVlZCBgQ09ORklHX0JQRl9TWVNDQUxMYCBlbmFibGVkIGZvciBCUEYgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtkIGJldHRlciBkb3VibGUtY2hlY2sgdGhlIEtjb25maWcgZmlsZSBpbiBga2VybmVsL2JwZi9gIGp1c3QgdG8gYmUgY2VydGFpbi4gR290dGEgYmUgdGhvcm91Z2ggd2l0aCB0aGVzZSBKSVQgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9KSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy00MS1cbmtlcm5lbC9icGYvS2NvbmZpZzo0Mjpjb25maWcgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclwmIzM0O1xuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy01Ny1cbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZy01OS1cdGJvb2wgXCYjMzQ7UGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcJiMzNDtcbi0tXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXG5rZXJuZWwvYnBmL0tjb25maWc6Njk6Y29uZmlnIEJQRl9KSVRfREVGQVVMVF9PTlxua2VybmVsL2JwZi9LY29uZmlnLTcwLVx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQxNgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQlBGIEpJVCBEZXBlbmRlbmN5IENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBsZXQgbWUganVzdCB0aGluayB0aGlzIHRocm91Z2guLi4gKkJQRl9KSVQqLiBPa2F5LCB0aGF0JiMzOTtzIHdoYXQgSSYjMzk7bSBmb2N1c2luZyBvbiByaWdodCBub3cuIFdhaXQgYSBzZWNvbmQsIHRoZSBxdWVzdGlvbiB0aGF0JiMzOTtzIG5hZ2dpbmcgbWUgaXMsIGRvZXMgYEJQRl9KSVRgIGluaGVyZW50bHkgZGVwZW5kIG9uIHRoZSBjb3JlIGBCUEZgIGluZnJhc3RydWN0dXJlLCBvciBpcyBpdCBpbmV4dHJpY2FibHkgbGlua2VkIHRvIGBCUEZfU1lTQ0FMTGA/IFRoYXQmIzM5O3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEpJVCBmdW5jdGlvbnMuIFdpdGhvdXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nLCBteSBuZXh0IHN0ZXBzIGNvdWxkIGJlIGZsYXdlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL0tjb25maWc9NDI9Y29uZmlnIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cdGJvb2wgXCYjMzQ7RW5hYmxlIEJQRiBKdXN0IEluIFRpbWUgY29tcGlsZXJcJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZzo0NDpcdGRlcGVuZHMgb24gQlBGXG5rZXJuZWwvYnBmL0tjb25maWc6NDU6XHRkZXBlbmRzIG9uIEhBVkVfQ0JQRl9KSVQgfHwgSEFWRV9FQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTQ2LVx0c2VsZWN0IEVYRUNNRU1cbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9NTg9Y29uZmlnIEJQRl9KSVRfQUxXQVlTX09OXG5rZXJuZWwvYnBmL0tjb25maWctNTktXHRib29sIFwmIzM0O1Blcm1hbmVudGx5IGVuYWJsZSBCUEYgSklUIGFuZCByZW1vdmUgQlBGIGludGVycHJldGVyXCYjMzQ7XG5rZXJuZWwvYnBmL0tjb25maWc6NjA6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBIQVZFX0VCUEZfSklUIFx1MDAyNlx1MDAyNiBCUEZfSklUXG5rZXJuZWwvYnBmL0tjb25maWctNjEtXHRoZWxwXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTY5PWNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cbmtlcm5lbC9icGYvS2NvbmZpZy03MC1cdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cbmtlcm5lbC9icGYvS2NvbmZpZzo3MTpcdGRlcGVuZHMgb24gSEFWRV9FQlBGX0pJVCBcdTAwMjZcdTAwMjYgQlBGX0pJVFxua2VybmVsL2JwZi9LY29uZmlnLTcyLVxua2VybmVsL2JwZi9LY29uZmlnPTczPWNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTc1LVx0ZGVmYXVsdCB5XG5rZXJuZWwvYnBmL0tjb25maWc6NzY6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWctNzctXHRoZWxwXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTkyPWNvbmZpZyBCUEZfTFNNXG5rZXJuZWwvYnBmL0tjb25maWctOTMtXHRib29sIFwmIzM0O0VuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblwmIzM0O1xua2VybmVsL2JwZi9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBCUEZfRVZFTlRTXG5rZXJuZWwvYnBmL0tjb25maWc6OTU6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXG5rZXJuZWwvYnBmL0tjb25maWc6OTY6XHRkZXBlbmRzIG9uIFNFQ1VSSVRZXG5rZXJuZWwvYnBmL0tjb25maWc6OTc6XHRkZXBlbmRzIG9uIEJQRl9KSVRcbmtlcm5lbC9icGYvS2NvbmZpZy05OC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTExNDIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQlBGIEpJVCBUaG91Z2h0cyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgQlBGIEpJVCBzdHVmZi4gSXQgbG9va3MgbGlrZSBgQlBGX0pJVGAgaXMgZnVuZGFtZW50YWwsIHJlbHlpbmcgb24gYEJQRmAgYW5kIGVpdGhlciBgSEFWRV9DQlBGX0pJVGAgb3IgYEhBVkVfRUJQRl9KSVRgLiBBbmQgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBlQlBGIHByb2dyYW1zLiBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAgdG8gY292ZXIgYWxsIG15IGJhc2VzLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS4KCmBicGZfaW50X2ppdF9jb21waWxlYCBkZWZpbml0ZWx5IHN0YW5kcyBvdXQgYXMgaW1wb3J0YW50LiBCdXQsIEkgcmVhbGx5IHdhbnQgdG8gdW5kZXJzdGFuZCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgbW9yZS4gSSBzdXNwZWN0IGl0JiMzOTtzIGdldHRpbmcgY2FsbGVkIHF1aXRlIGEgYml0LCBsaWtlbHkgZHVyaW5nIHZlcmlmaWNhdGlvbiBvciBKSVQgY29tcGlsYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM9MzE3OD1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXG4tLVxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmMtMzE5MS1cbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jOjMxOTI6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMTkzLXtcbi0tXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTI0MDQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2ZzZXNzaW9uKHZvaWQpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA4LVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyNDA5OmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEwLXtcbi0tXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jPTU1Nj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXG4tLVxuYXJjaC9wb3dlcnBjL25ldC9icGZfaml0X2NvbXAuYy01NzEtXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl9qaXRfY29tcC5jOjU3Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTczLXtcbi0tXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jPTIxMjQ9Ym9vbCBicGZfaml0X3N1cHBvcnRzX2luc24oc3RydWN0IGJwZl9pbnNuICppbnNuLCBib29sIGluX2FyZW5hKVxuLS1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0Mi1cbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM6MjE0Mzpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0NC17XG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jPTQwNTc9Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpXG4tLVxuYXJjaC94ODYvbmV0L2JwZl9qaXRfY29tcC5jLTQwNjEtXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM6NDA2Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYzLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExODI9Ym9vbCBicGZfaml0X3N1cHBvcnRzX3N1YnByb2dfdGFpbGNhbGxzKHZvaWQpO1xuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTgzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtMTE4NC1ib29sIGJwZl9qaXRfc3VwcG9ydHNfa2Z1bmNfY2FsbCh2b2lkKTtcbi0tXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9MjYzPXN0YXRpYyBpbnQgcGVyY3B1X2FycmF5X21hcF9nZW5fbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXG4tLVxua2VybmVsL2JwZi9hcnJheW1hcC5jLTI2Ny1cbmtlcm5lbC9icGYvYXJyYXltYXAuYzoyNjg6XHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSlcbmtlcm5lbC9icGYvYXJyYXltYXAuYy0yNjktXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYz0zMjkxPWJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcbi0tXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjk1LVxua2VybmVsL2JwZi9jb3JlLmM6MzI5Njpib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXG5rZXJuZWwvYnBmL2NvcmUuYy0zMjk3LXtcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE1PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1Zilcbi0tXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDE4LVxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQxOTpcdGlmICghYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpKVxua2VybmVsL2JwZi9oYXNodGFiLmMtMjQyMC1cdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjc4MD1ib29sIGJwZl92ZXJpZmllcl9pbmxpbmVzX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBpbW0pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE2Nzg4LSNlbmRpZlxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2Nzg5Olx0XHRyZXR1cm4gZW52LVx1MDAzZXByb2ctXHUwMDNlaml0X3JlcXVlc3RlZCBcdTAwMjZcdTAwMjYgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE2NzkwLSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjg4NwoJCQkJCQkJb3V0cHV0OiAxODkKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcmUgd2VhayBzeW1ib2xzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSAoTG9vbmdBcmNoLCBpbiB0aGlzIGNhc2UpIGlzIHByb3ZpZGluZyBpdHMgb3duIG92ZXJyaWRlcy4gVGhpcyBtYWtlcyB0aGVtIGV4Y2VsbGVudCBjYW5kaWRhdGVzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiwgYXMgdGhleSBhcmUgbGlrZWx5IHBvaW50cyBvZiBhcmNoaXRlY3R1cmFsIGRldmlhdGlvbi4KClRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbDsgaXQmIzM5O3MgbW9kaWZ5aW5nIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQmIzM5O3MgZGlyZWN0bHkgcmVhY2hhYmxlIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBCUEYgSklUIGZvciBMb29uZ0FyY2guIEkgc2VlIGl0JiMzOTtzIHRvdWNoaW5nIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgaW50cm9kdWNpbmcgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb246IGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoaXMgY29uZmlybXMgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIFdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIEJQRiBKSVQmIzM5O3MgY29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbi4KClRoZXJlZm9yZSwgbXkgZGVjaXNpb24gaXMgZWFzeS4gV29ydGhGdXp6aW5nID0gdHJ1ZS4gVGhpcyB3YXJyYW50cyBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6CgoqICAgYGJwZl9pbnRfaml0X2NvbXBpbGVgCiogICBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gCiogICBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAKKiAgIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYAoKVG8gZW5hYmxlIHRob3JvdWdoIHRlc3RpbmcsIEkmIzM5O2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfSklUJiMzNDssCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O1NNUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9pbnRfaml0X2NvbXBpbGUmIzM0OywKICAgICYjMzQ7YXJjaF9icGZfdGltZWRfbWF5X2dvdG8mIzM0OywKICAgICYjMzQ7YnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbiYjMzQ7LAogICAgJiMzNDticGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzQ6MTEuMjI1MTc0OTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkyMTQ2NjgxMjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9KSVRcIixcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJTTVBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfaW50X2ppdF9jb21waWxlXCIsXG4gICAgXCJhcmNoX2JwZl90aW1lZF9tYXlfZ290b1wiLFxuICAgIFwiYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zblwiLFxuICAgIFwiYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGVyLUNQVSBpbnN0cnVjdGlvbnMgYW5kIGBicGZfdGltZWRfbWF5X2dvdG9gIGluIHRoZSBMb29uZ0FyY2ggQlBGIEpJVCBjb21waWxlci4gSXQgbW9kaWZpZXMgdGhlIEpJVCBpbnN0cnVjdGlvbiBidWlsZGVyIGFuZCBhZGRzIGEgbmV3IGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIEJQRiBKSVQgb24gTG9vbmdBcmNoIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSBjb3JyZWN0IEpJVCBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNDoxMS4yMjUxODE1NTRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzE2MTYyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZjNzk4OTA1MDYxMWI4MWFlODJlOGM3ODE3Y2MyZjVkMzQzYjU4MDhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozNDoxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcXG5pbmRleCA3NmI3MjM1OTAwMjNkLi40NGZiNWFkMjZkMWE2IDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxcbkBAIC00MDQsNiArNDA0LDcgQEAgZW51bSBsb29uZ2FyY2hfZ3ByIHtcXG4gXFx0TE9PTkdBUkNIX0dQUl9UNixcXG4gXFx0TE9PTkdBUkNIX0dQUl9UNyxcXG4gXFx0TE9PTkdBUkNIX0dQUl9UOCxcXG4rXFx0TE9PTkdBUkNIX0dQUl9VMCA9IDIxLFxcdC8qIEtlcm5lbCBwZXItQ1BVIGJhc2UgcmVnaXN0ZXIgKCRyMjEpICovXFxuIFxcdExPT05HQVJDSF9HUFJfRlAgPSAyMixcXG4gXFx0TE9PTkdBUkNIX0dQUl9TMCA9IDIzLFxcbiBcXHRMT09OR0FSQ0hfR1BSX1MxLFxcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGUgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcXG5pbmRleCAxZWMxMmEwYzMyNGE1Li44ZDlkZGI0OGY5ZWFiIDEwMDY0NFxcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9NYWtlZmlsZVxcbkBAIC00LDQgKzQsNCBAQFxcbiAjXFxuICMgQ29weXJpZ2h0IChDKSAyMDIyIExvb25nc29uIFRlY2hub2xvZ3kgQ29ycG9yYXRpb24gTGltaXRlZFxcbiAjXFxuLW9iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0Lm9cXG4rb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQubyBicGZfdGltZWRfbWF5X2dvdG8ub1xcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbmluZGV4IDI3MzhiNGRiMTE2NTMuLjExNTIzOTZmODQ4NDIgMTAwNjQ0XFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcXG5AQCAtNzQzLDYgKzc0MywxNSBAQCBzdGF0aWMgaW50IGJ1aWxkX2luc24oY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuLCBzdHJ1Y3Qgaml0X2N0eCAqY3R4LCBib29sIGV4dFxcbiBcXHRcXHRcXHRtb3ZlX3JlZyhjdHgsIGRzdCwgdDEpO1xcbiBcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0fVxcbitcXHRcXHRpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcXG4rXFx0XFx0XFx0aWYgKGRzdCAhPSBzcmMpXFxuK1xcdFxcdFxcdFxcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xcbisjaWZkZWYgQ09ORklHX1NNUFxcbitcXHRcXHRcXHQvKiBkc3QgKz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi9cXG4rXFx0XFx0XFx0ZW1pdF9pbnNuKGN0eCwgYWRkZCwgZHN0LCBkc3QsIExPT05HQVJDSF9HUFJfVTApO1xcbisjZW5kaWZcXG4rXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdH1cXG4gXFx0XFx0c3dpdGNoIChvZmYpIHtcXG4gXFx0XFx0Y2FzZSAwOlxcbiBcXHRcXHRcXHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcXG5AQCAtMTIwNCw3ICsxMjEzLDEzIEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0XFxuIFxcdFxcdG1vdmVfYWRkcihjdHgsIHQxLCBmdW5jX2FkZHIpO1xcbiBcXHRcXHRlbWl0X2luc24oY3R4LCBqaXJsLCBMT09OR0FSQ0hfR1BSX1JBLCB0MSwgMCk7XFxuIFxcbi1cXHRcXHRpZiAoaW5zbi1cXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXFxuK1xcdFxcdC8qXFxuK1xcdFxcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB1c2VzIGEgY3VzdG9tIGNhbGxpbmdcXG4rXFx0XFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXFxuK1xcdFxcdCAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdGlmIChpbnNuLVxcdTAwM2VzcmNfcmVnICE9IEJQRl9QU0VVRE9fQ0FMTCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuIFxcdFxcdFxcdG1vdmVfcmVnKGN0eCwgcmVnbWFwW0JQRl9SRUdfMF0sIExPT05HQVJDSF9HUFJfQTApO1xcbiBcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTIzOTEsNiArMjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuK2Jvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbit7XFxuK1xcdHJldHVybiB0cnVlO1xcbit9XFxuK1xcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG4re1xcbitcXHRyZXR1cm4gdHJ1ZTtcXG4rfVxcbitcXG4gLyogSW5kaWNhdGUgdGhlIEpJVCBiYWNrZW5kIHN1cHBvcnRzIG1peGluZyBicGYyYnBmIGFuZCB0YWlsY2FsbHMuICovXFxuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxcbiB7XFxuZGlmZiAtLWdpdCBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU1xcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uOGE0YzE1NDE4OTk4Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcXG5AQCAtMCwwICsxLDQ3IEBAXFxuKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovXFxuKy8qXFxuKyAqIEF1dGhvcjogR2VvcmdlIEd1byBcXHUwMDNjZ3VvZG9uZ3RhaUBreWxpbm9zLmNuXFx1MDAzZVxcbisgKiBDb3B5cmlnaHQgKEMpIDIwMjYgS3lsaW5Tb2Z0IENvcnBvcmF0aW9uLlxcbisgKi9cXG4rXFxuKyNpbmNsdWRlIFxcdTAwM2Nhc20vYXNtbWFjcm8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2FzbS9yZWdkZWYuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V4cG9ydC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbitcXG4rU1lNX0ZVTkNfU1RBUlQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuK1xcdGFkZGkuZFxcdFxcdHNwLCBzcCwgLTY0XFxuK1xcdHN0LmRcXHRcXHRyYSwgc3AsIDU2XFxuK1xcbitcXHQvKiBTYXZlIEJQRiByZWdpc3RlcnMgUjAgLSBSNSAoYTUsIGEwIC0gYTQpICovXFxuK1xcdHN0LmRcXHRcXHRhNSwgc3AsIDhcXG4rXFx0c3QuZFxcdFxcdGEwLCBzcCwgMTZcXG4rXFx0c3QuZFxcdFxcdGExLCBzcCwgMjRcXG4rXFx0c3QuZFxcdFxcdGEyLCBzcCwgMzJcXG4rXFx0c3QuZFxcdFxcdGEzLCBzcCwgNDBcXG4rXFx0c3QuZFxcdFxcdGE0LCBzcCwgNDhcXG4rXFxuK1xcdC8qXFxuK1xcdCAqIEJQRl9SRUdfQVggKHQwKSBob2xkcyB0aGUgb2Zmc2V0IHBhc3NlZCBpbiBieSB0aGUgdmVyaWZpZXI7IGFkZCBpdFxcbitcXHQgKiB0byBCUEZfUkVHX0ZQIChzNCkgdG8gZ2V0IHRoZSBwb2ludGVyIHRvIHRoZSBjb3VudCBhbmQgdGltZXN0YW1wLFxcbitcXHQgKiB0aGVuIHBhc3MgaXQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGluIGEwLlxcbitcXHQgKlxcbitcXHQgKiBUaGUgdmVyaWZpZXIgZW1pdHMgYSBsb2FkIHVzaW5nIEZQIHJpZ2h0IGJlZm9yZSB0aGlzIGNhbGwsIHNvXFxuK1xcdCAqIEJQRl9SRUdfRlAgKHM0KSBpcyBhbHdheXMgc2V0IHVwIGJ5IHRoZSBKSVQgaW4gdGhpcyBjYXNlLlxcbitcXHQgKi9cXG4rXFx0YWRkLmRcXHRcXHRhMCwgdDAsIHM0XFxuK1xcdGJsXFx0XFx0YnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuK1xcdC8qIEJQRl9SRUdfQVggKHQwKSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHRoZSByZXR1cm4gdmFsdWUgdG8gaXQuICovXFxuK1xcdG1vdmVcXHRcXHR0MCwgYTBcXG4rXFxuK1xcdGxkLmRcXHRcXHRyYSwgc3AsIDU2XFxuK1xcdGxkLmRcXHRcXHRhNSwgc3AsIDhcXG4rXFx0bGQuZFxcdFxcdGEwLCBzcCwgMTZcXG4rXFx0bGQuZFxcdFxcdGExLCBzcCwgMjRcXG4rXFx0bGQuZFxcdFxcdGEyLCBzcCwgMzJcXG4rXFx0bGQuZFxcdFxcdGEzLCBzcCwgNDBcXG4rXFx0bGQuZFxcdFxcdGE0LCBzcCwgNDhcXG4rXFx0YWRkaS5kXFx0XFx0c3AsIHNwLCA2NFxcbitcXG4rXFx0anJcXHRcXHRyYVxcbitTWU1fRlVOQ19FTkQoYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM0OjExLjY1OTEzNzA5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM5MTcxMjcxMDk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfSklUXCIsXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiU01QXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX2ludF9qaXRfY29tcGlsZVwiLFxuICAgIFwiYXJjaF9icGZfdGltZWRfbWF5X2dvdG9cIixcbiAgICBcImJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25cIixcbiAgICBcImJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHBlci1DUFUgaW5zdHJ1Y3Rpb25zIGFuZCBgYnBmX3RpbWVkX21heV9nb3RvYCBpbiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgY29tcGlsZXIuIEl0IG1vZGlmaWVzIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgYWRkcyBhIG5ldyBhc3NlbWJseSBmdW5jdGlvbiBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBCUEYgSklUIG9uIExvb25nQXJjaCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgY29ycmVjdCBKSVQgY29tcGlsYXRpb24gYW5kIGV4ZWN1dGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZmM3OTg5MDUwNjExYjgxYWU4MmU4Yzc4MTdjYzJmNWQzNDNiNTgwOFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6MzQ6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmggYi9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbmluZGV4IDc2YjcyMzU5MDAyM2QuLjQ0ZmI1YWQyNmQxYTYgMTAwNjQ0XG4tLS0gYS9hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS9pbnN0LmhcbisrKyBiL2FyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2luc3QuaFxuQEAgLTQwNCw2ICs0MDQsNyBAQCBlbnVtIGxvb25nYXJjaF9ncHIge1xuIFx0TE9PTkdBUkNIX0dQUl9UNixcbiBcdExPT05HQVJDSF9HUFJfVDcsXG4gXHRMT09OR0FSQ0hfR1BSX1Q4LFxuK1x0TE9PTkdBUkNIX0dQUl9VMCA9IDIxLFx0LyogS2VybmVsIHBlci1DUFUgYmFzZSByZWdpc3RlciAoJHIyMSkgKi9cbiBcdExPT05HQVJDSF9HUFJfRlAgPSAyMixcbiBcdExPT05HQVJDSF9HUFJfUzAgPSAyMyxcbiBcdExPT05HQVJDSF9HUFJfUzEsXG5kaWZmIC0tZ2l0IGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlIGIvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlXG5pbmRleCAxZWMxMmEwYzMyNGE1Li44ZDlkZGI0OGY5ZWFiIDEwMDY0NFxuLS0tIGEvYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvTWFrZWZpbGVcbkBAIC00LDQgKzQsNCBAQFxuICNcbiAjIENvcHlyaWdodCAoQykgMjAyMiBMb29uZ3NvbiBUZWNobm9sb2d5IENvcnBvcmF0aW9uIExpbWl0ZWRcbiAjXG4tb2JqLSQoQ09ORklHX0JQRl9KSVQpICs9IGJwZl9qaXQub1xuK29iai0kKENPTkZJR19CUEZfSklUKSArPSBicGZfaml0Lm8gYnBmX3RpbWVkX21heV9nb3RvLm9cbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jIGIvYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1xuaW5kZXggMjczOGI0ZGIxMTY1My4uMTE1MjM5NmY4NDg0MiAxMDA2NDRcbi0tLSBhL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbisrKyBiL2FyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcbkBAIC03NDMsNiArNzQzLDE1IEBAIHN0YXRpYyBpbnQgYnVpbGRfaW5zbihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24sIHN0cnVjdCBqaXRfY3R4ICpjdHgsIGJvb2wgZXh0XG4gXHRcdFx0bW92ZV9yZWcoY3R4LCBkc3QsIHQxKTtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAoaW5zbl9pc19tb3ZfcGVyY3B1X2FkZHIoaW5zbikpIHtcbitcdFx0XHRpZiAoZHN0ICE9IHNyYylcbitcdFx0XHRcdG1vdmVfcmVnKGN0eCwgZHN0LCBzcmMpO1xuKyNpZmRlZiBDT05GSUdfU01QXG4rXHRcdFx0LyogZHN0ICs9IF9fbXlfY3B1X29mZnNldCwgaGVsZCBpbiAkcjIxICovXG4rXHRcdFx0ZW1pdF9pbnNuKGN0eCwgYWRkZCwgZHN0LCBkc3QsIExPT05HQVJDSF9HUFJfVTApO1xuKyNlbmRpZlxuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHRcdHN3aXRjaCAob2ZmKSB7XG4gXHRcdGNhc2UgMDpcbiBcdFx0XHRtb3ZlX3JlZyhjdHgsIGRzdCwgc3JjKTtcbkBAIC0xMjA0LDcgKzEyMTMsMTMgQEAgc3RhdGljIGludCBidWlsZF9pbnNuKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgc3RydWN0IGppdF9jdHggKmN0eCwgYm9vbCBleHRcbiBcdFx0bW92ZV9hZGRyKGN0eCwgdDEsIGZ1bmNfYWRkcik7XG4gXHRcdGVtaXRfaW5zbihjdHgsIGppcmwsIExPT05HQVJDSF9HUFJfUkEsIHQxLCAwKTtcbiBcbi1cdFx0aWYgKGluc24tXHUwMDNlc3JjX3JlZyAhPSBCUEZfUFNFVURPX0NBTEwpXG4rXHRcdC8qXG4rXHRcdCAqIENhbGwgdG8gYXJjaF9icGZfdGltZWRfbWF5X2dvdG8oKSB1c2VzIGEgY3VzdG9tIGNhbGxpbmdcbitcdFx0ICogY29udmVudGlvbiB3aXRoIHRoZSBhcmd1bWVudCBhbmQgcmV0dXJuIHZhbHVlIGluIEJQRl9SRUdfQVgsXG4rXHRcdCAqIHNvIHNraXAgbW92aW5nIHRoZSBDIHJldHVybiB2YWx1ZSBpbnRvIEJQRl9SRUdfMC5cbitcdFx0ICovXG4rXHRcdGlmIChpbnNuLVx1MDAzZXNyY19yZWcgIT0gQlBGX1BTRVVET19DQUxMIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgZnVuY19hZGRyICE9ICh1NjQpYXJjaF9icGZfdGltZWRfbWF5X2dvdG8pXG4gXHRcdFx0bW92ZV9yZWcoY3R4LCByZWdtYXBbQlBGX1JFR18wXSwgTE9PTkdBUkNIX0dQUl9BMCk7XG4gXG4gXHRcdGJyZWFrO1xuQEAgLTIzOTEsNiArMjQwNiwxNiBAQCBib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbitib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcbit7XG4rXHRyZXR1cm4gdHJ1ZTtcbit9XG4rXG4rYm9vbCBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvKHZvaWQpXG4re1xuK1x0cmV0dXJuIHRydWU7XG4rfVxuK1xuIC8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xuIGJvb2wgYnBmX2ppdF9zdXBwb3J0c19zdWJwcm9nX3RhaWxjYWxscyh2b2lkKVxuIHtcbmRpZmYgLS1naXQgYS9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi44YTRjMTU0MTg5OThmXG4tLS0gL2Rldi9udWxsXG4rKysgYi9hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNcbkBAIC0wLDAgKzEsNDcgQEBcbisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqL1xuKy8qXG4rICogQXV0aG9yOiBHZW9yZ2UgR3VvIFx1MDAzY2d1b2Rvbmd0YWlAa3lsaW5vcy5jblx1MDAzZVxuKyAqIENvcHlyaWdodCAoQykgMjAyNiBLeWxpblNvZnQgQ29ycG9yYXRpb24uXG4rICovXG4rXG4rI2luY2x1ZGUgXHUwMDNjYXNtL2FzbW1hY3JvLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2Nhc20vcmVnZGVmLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9leHBvcnQuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuK1xuK1NZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuK1x0YWRkaS5kXHRcdHNwLCBzcCwgLTY0XG4rXHRzdC5kXHRcdHJhLCBzcCwgNTZcbitcbitcdC8qIFNhdmUgQlBGIHJlZ2lzdGVycyBSMCAtIFI1IChhNSwgYTAgLSBhNCkgKi9cbitcdHN0LmRcdFx0YTUsIHNwLCA4XG4rXHRzdC5kXHRcdGEwLCBzcCwgMTZcbitcdHN0LmRcdFx0YTEsIHNwLCAyNFxuK1x0c3QuZFx0XHRhMiwgc3AsIDMyXG4rXHRzdC5kXHRcdGEzLCBzcCwgNDBcbitcdHN0LmRcdFx0YTQsIHNwLCA0OFxuK1xuK1x0LypcbitcdCAqIEJQRl9SRUdfQVggKHQwKSBob2xkcyB0aGUgb2Zmc2V0IHBhc3NlZCBpbiBieSB0aGUgdmVyaWZpZXI7IGFkZCBpdFxuK1x0ICogdG8gQlBGX1JFR19GUCAoczQpIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGUgY291bnQgYW5kIHRpbWVzdGFtcCxcbitcdCAqIHRoZW4gcGFzcyBpdCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgaW4gYTAuXG4rXHQgKlxuK1x0ICogVGhlIHZlcmlmaWVyIGVtaXRzIGEgbG9hZCB1c2luZyBGUCByaWdodCBiZWZvcmUgdGhpcyBjYWxsLCBzb1xuK1x0ICogQlBGX1JFR19GUCAoczQpIGlzIGFsd2F5cyBzZXQgdXAgYnkgdGhlIEpJVCBpbiB0aGlzIGNhc2UuXG4rXHQgKi9cbitcdGFkZC5kXHRcdGEwLCB0MCwgczRcbitcdGJsXHRcdGJwZl9jaGVja190aW1lZF9tYXlfZ290b1xuK1x0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cbitcdG1vdmVcdFx0dDAsIGEwXG4rXG4rXHRsZC5kXHRcdHJhLCBzcCwgNTZcbitcdGxkLmRcdFx0YTUsIHNwLCA4XG4rXHRsZC5kXHRcdGEwLCBzcCwgMTZcbitcdGxkLmRcdFx0YTEsIHNwLCAyNFxuK1x0bGQuZFx0XHRhMiwgc3AsIDMyXG4rXHRsZC5kXHRcdGEzLCBzcCwgNDBcbitcdGxkLmRcdFx0YTQsIHNwLCA0OFxuK1x0YWRkaS5kXHRcdHNwLCBzcCwgNjRcbitcbitcdGpyXHRcdHJhXG4rU1lNX0ZVTkNfRU5EKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzQ6MTEuNjU5MTM4MzA5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMxMjE0NjYwOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPXRydWUgLSBMb29uZ0FyY2ggQlBGIEpJVCBTdXBwb3J0KipcblxuT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggaGVyZSB0aGF0IGFkZHMgc3VwcG9ydCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgdG8gdGhlIExvb25nQXJjaCBCUEYgSklULiBJdCBsb29rcyBsaWtlIGl0J3MgdG91Y2hpbmcgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgIGFuZCBhbHNvIGFkZHMgYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uU2AuICBUaGlzIGlzIHNwZWNpZmljIHRvIExvb25nQXJjaCwgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBUaGUgcXVlc3Rpb24gaXMsIGlzIHRoaXMgYWN0dWFsbHkgdGVzdGFibGUgYW5kIHJlYWNoYWJsZT8gIFJpZ2h0LCBRRU1VIGNhbiBlbXVsYXRlIExvb25nQXJjaCwgc28gdGhhdCdzIGEgcG9zaXRpdmUgc2lnbi4gIFN5emthbGxlciB0eXBpY2FsbHkgdGFyZ2V0cyB4ODZfNjQgYW5kIGFybTY0LCBidXQgaXQgY2FuIGhhbmRsZSBvdGhlciBhcmNoaXRlY3R1cmVzLCBzbyB0aGF0J3Mgbm90IGEgc2hvd3N0b3BwZXIgZWl0aGVyLlxuXG5Ob3csIGFjY29yZGluZyB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzaW5jZSB0aGlzIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIChzcGVjaWZpY2FsbHksIHRoZSBCUEYgSklUIGluZnJhc3RydWN0dXJlLCB3aGljaCBpcyBkZWZpbml0ZWx5IGNvcmUpLCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIGNvZGUgY2FuIGFjdHVhbGx5IGJlIGV4ZWN1dGVkLiBUaGVuIEkgbmVlZCB0byByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYC5cblxuTGV0J3MgYnJlYWsgdGhpcyBkb3duLiBMZXQncyBsb29rIGF0IGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBhbmQgZmlndXJlIG91dCB3aGF0IGZ1bmN0aW9ucyBhcmUgYWZmZWN0ZWQuIExvb2tzIGxpa2UgdGhlIGNoYW5nZXMgbW9kaWZ5IGBidWlsZF9pbnNuYCBhbmQgYWRkIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLCBhbmQgdGhlIGFzc2VtYmx5IGZ1bmN0aW9uIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuXG5cbkFscmlnaHQsIG5vdyBsZXQncyBzZWUgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZ2V0IHRoaXMgY29kZSBjb21waWxlZCBhbmQgZXhlY3V0ZWQuIEl0J3Mgb2J2aW91c2x5IGdvaW5nIHRvIG5lZWQgYENPTkZJR19CUEZfSklUYC4gQnV0IGlzIHRoYXQgKmFsbCo/ICBBIHF1aWNrIGNoZWNrIG9mIHRoZSBgYXJjaC9sb29uZ2FyY2gvbmV0L01ha2VmaWxlYCBjb25maXJtcyB0aGF0IGBvYmotJChDT05GSUdfQlBGX0pJVCkgKz0gYnBmX2ppdC5vIGJwZl90aW1lZF9tYXlfZ290by5vYCwgc28gYEJQRl9KSVRgIGlzIHRoZSBjcml0aWNhbCBjb25maWcuXG5cbkxldCdzIGRpZyBhIGJpdCBkZWVwZXIuICBJIG5vdGljZWQgYENPTkZJR19TTVBgIGJlaW5nIHVzZWQgaW4gYGJwZl9qaXQuY2A6IHNwZWNpZmljYWxseSBpbiB0aGUgZW1pdHRlZCBjb2RlIGZvciBwZXItQ1BVIG9mZnNldHM6XG5cbmBgYGNcbiNpZmRlZiBDT05GSUdfU01QXG4gICAgICAgICAgICAvKiBkc3QgKz0gX19teV9jcHVfb2Zmc2V0LCBoZWxkIGluICRyMjEgKi9cbiAgICAgICAgICAgIGVtaXRfaW5zbihjdHgsIGFkZGQsIGRzdCwgZHN0LCBMT09OR0FSQ0hfR1BSX1UwKTtcbiNlbmRpZlxuYGBgXG5cblNvIGBTTVBgIGlzIGFsc28gcmVsZXZhbnQgaGVyZS4gTGV0J3MgbWFrZSBzdXJlIHRoZSBjb25maWdzIGFyZSB0aGVyZSBpbiB0aGUgTG9vbmdBcmNoIGBLY29uZmlnYCBhcyB3ZWxsLiBUaGF0IHdpbGwgYmUgbmVlZGVkIGZvciBvdXIgZnV6emluZyBjb25maWd1cmF0aW9uLlxuXG5Pa2F5LCBnaXZlbiB0aGF0IHRoaXMgbW9kaWZpZXMgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBpcyByZWFjaGFibGUsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoaXMgaXMgd29ydGggZnV6emluZy4gSSdsbCBiZSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz10cnVlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY5NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjA0Ljc4MDYwNjk4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mzk4MTgyMiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzU6MDQuODU0NTk3ODY4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc0NjIxNzMxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipGaW5kaW5nIHRoZSBCUEZfSklUIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gd2hlcmUgdGhlIGBCUEZfSklUYCBjb25maWd1cmF0aW9uIG9wdGlvbiBsaXZlcy4gSXQncyBhIGtlcm5lbCBjb25maWd1cmF0aW9uLCBzbyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCB3b3VsZCBiZSB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGZpbGVzLCByaWdodD8gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBjaGVjayBgbmV0L2JwZi9LY29uZmlnYCBiZWNhdXNlIHRoYXQgZGlyZWN0b3J5IHNlZW1zIGxpa2UgYSBsaWtlbHkgY2FuZGlkYXRlIGdpdmVuIHRoZSBCUEYgY29ubmVjdGlvbi4gSWYgaXQgaXNuJ3QgdGhlcmUsIHRoZW4gSSdsbCBpbW1lZGlhdGVseSBnbyBmb3IgYGluaXQvS2NvbmZpZ2AgYXMgdGhhdCdzIG9mdGVuIGEgZ2VuZXJhbCBjYXRjaC1hbGwgZm9yIGNvcmUga2VybmVsIGNvbmZpZ3VyYXRpb25zLCBlc3BlY2lhbGx5IGFueXRoaW5nIGZ1bmRhbWVudGFsLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwMCwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjA4LjYwMDgxODEwNloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY4MzYzNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNToxMC43NjkxODU5NzhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTAzMDIwMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgd29ya2luZyB0aHJvdWdoIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgSklUIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdDogSSByZWNhbGwgc2VlaW5nIGBCUEZfSklUYCBzb21ld2hlcmUsIGFuZCBJJ20gcHJldHR5IHN1cmUgaXQncyB0dWNrZWQgYXdheSBpbiB0aGUgYGtlcm5lbC9icGYvS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGxvY2F0aW9uIHRvIGJlIGNlcnRhaW4sIGJ1dCB0aGF0J3MgbXkgaW5pdGlhbCBoeXBvdGhlc2lzLlxuXG5Ob3csIEknbSB0cnlpbmcgdG8gcmVjYWxsIGFub3RoZXIgZnVuY3Rpb24gcmVsYXRlZCB0byB0aGUgdGltaW5nIGNoZWNrcywgYW5kIHRoZSBuYW1lIGBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9gIGlzIGNvbWluZyB0byBtaW5kLiBUaGlzIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSByZW1lbWJlciBpdCBiZWluZyBjYWxsZWQgYnkgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgd2FudCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSB0d28uXG5cblNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGRlZmluaXRpb24gb2YgYGJwZl9jaGVja190aW1lZF9tYXlfZ290b2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlcmUgaXQncyBpbXBsZW1lbnRlZC4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uJ3MgZGVjbGFyYXRpb24vZGVmaW5pdGlvbiB0byB1bmRlcnN0YW5kIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGhpbiB0aGUgQlBGIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjE3LjI3MjIwODY2OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODUwODc5NTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9jaGVja190aW1lZF9tYXlfZ290b1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM9Nj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTI2LVxcdGFkZFxcdHgwLCB4OSwgeDI1XFxuYXJjaC9hcm02NC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6Mjc6XFx0YmxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL2FybTY0L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0yOC1cXHQvKiBCUEZfUkVHX0FYKHg5KSB3aWxsIGJlIHN0b3JlZCBpbnRvIGNvdW50LCBzbyBtb3ZlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMi1cXHRhZGQuZFxcdFxcdGEwLCB0MCwgczRcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MzM6XFx0YmxcXHRcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzQtXFx0LyogQlBGX1JFR19BWCAodDApIHdpbGwgYmUgc3RvcmVkIGludG8gY291bnQsIHNvIG1vdmUgdGhlIHJldHVybiB2YWx1ZSB0byBpdC4gKi9cXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMTMtICpcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjE0OiAqIENhbGwgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCBub3JtYWwgcG93ZXJwYzY0IEFCSTpcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTE1LSAqIFxcdC0gcjMgPSBwdHIsIHJldHVybiBpbiByM1xcbi0tXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMD1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzgtXFx0YWRkICAgICByMywgcjMxLCByMTJcXG5hcmNoL3Bvd2VycGMvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM5OlxcdGJsICAgICAgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9wb3dlcnBjL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy00MC1cXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TLTExLSAqXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6MTI6ICogQ2FsbHMgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHB0cikgd2l0aCB0aGUgc3RhbmRhcmQgUklTQy1WIEFCSSwgd2hlcmVcXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0xMy0gKiBwdHIgPSBCUEZfUkVHX0ZQIChzNSkgKyBCUEZfUkVHX0FYICh0MCkuIEJQRiBSMC1SNSAoYTUsIGEwLWE0KSBhcmUgc2F2ZWRcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TPTE3PVNZTV9GVU5DX1NUQVJUKGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKVxcbi0tXFxuYXJjaC9yaXNjdi9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzEtXFx0YWRkXFx0YTAsIHQwLCBzNVxcbmFyY2gvcmlzY3YvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjMyOlxcdGNhbGxcXHRicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3Jpc2N2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zMy1cXHRtdlxcdHQwLCBhMFxcbi0tXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0yMj1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gvczM5MC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtMzYtXFx0bGF5ICVyMiwwKCVyMTIsJXIxMylcXG5hcmNoL3MzOTAvbmV0L2JwZl90aW1lZF9tYXlfZ290by5TOjM3OlxcdGJyYXNsICVyMTQsYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvXFxuYXJjaC9zMzkwL25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOC1cXHRsZ3IgJXIxMiwlcjJcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUz0xMT1TWU1fRlVOQ19TVEFSVChhcmNoX2JwZl90aW1lZF9tYXlfZ290bylcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfdGltZWRfbWF5X2dvdG8uUy0zOS1cXHRDQUxMX0RFUFRIX0FDQ09VTlRcXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlM6NDA6XFx0Y2FsbCBicGZfY2hlY2tfdGltZWRfbWF5X2dvdG9cXG5hcmNoL3g4Ni9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlMtNDEtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTExOTY9dTY0IGFyY2hfYnBmX3RpbWVkX21heV9nb3RvKHZvaWQpO1xcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6MTE5Nzp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKik7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC0xMTk4LWJvb2wgYnBmX2hlbHBlcl9jaGFuZ2VzX3BrdF9kYXRhKGVudW0gYnBmX2Z1bmNfaWQgZnVuY19pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zNDAwPXN0YXRpYyBub2lubGluZSB2b2lkIGJwZl9wcm9nX3JlcG9ydF9tYXlfZ290b192aW9sYXRpb24odm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTM0MTUtXFxua2VybmVsL2JwZi9jb3JlLmM6MzQxNjp1NjQgYnBmX2NoZWNrX3RpbWVkX21heV9nb3RvKHN0cnVjdCBicGZfdGltZWRfbWF5X2dvdG8gKnApXFxua2VybmVsL2JwZi9jb3JlLmMtMzQxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM1OjE5LjEyMzA5MjcxM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwNDUxOTUzMTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvb25nQXJjaCBCUEYgSklUIFN1cHBvcnQgLSBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGluZnJhc3RydWN0dXJlIGZvciB0aW1lZCBgZ290b2AgYW5kIHBlci1DUFUgaW5zdHJ1Y3Rpb24gc3VwcG9ydCBmb3IgQlBGIEpJVCBvbiBMb29uZ0FyY2guIFRoZSBmdW5jdGlvbnMgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCwgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gLCBhbmQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIHNlZW0gbGlrZSB0aGUga2V5IHBsYXllcnMgaGVyZS4gTG9naWNhbGx5LCBhc3N1bWluZyB3ZSdyZSBydW5uaW5nIG9uIExvb25nQXJjaCwgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBhY2Nlc3NpYmxlIGFuZCwgd2VsbCwgKmRvKiB3aGF0IHRoZXkncmUgaW50ZW5kZWQgdG8gZG8uXG5cbkknbSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0aGF0IHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9ucyBhcHBlYXIgdG8gYmUgYEJQRl9KSVRgIGFuZCBgU01QYC4gSG1tLCBhcmUgdGhlcmUgYW55IG90aGVyIGRlcGVuZGVuY2llcyBJIHNob3VsZCBiZSBhd2FyZSBvZj8gTGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBhcmNoL2xvb25nYXJjaC9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIGBCUEZfSklUYCBzZWN0aW9uLCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsLiBHb3R0YSBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAyOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNjoxOS41NzUwNDgzMzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5MTYwMDg1OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IEJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6MzY6MTkuOTY2NjU3NjIyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMzA2NTM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXAgaW4gdGhlIHdlZWRzIG9mIGtlcm5lbCBkZXZlbG9wbWVudDpcblxuKipMb29uZ0FyY2ggYW5kIEpJVCBDb21waWxhdGlvbjogQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBJJ20ganVzdCBxdWlja2x5IHRyeWluZyB0byBjbGFyaWZ5IHNvbWV0aGluZyBhYm91dCB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgSklUIGNvbXBpbGVycyB3ZSdyZSB1c2luZy4gSSBuZWVkIHRvIG1ha2UgYSBtZW50YWwgbm90ZSwgb3IgbWF5YmUganVzdCBkb3VibGUtY2hlY2sgYSBjb25maWd1cmF0aW9uIHNldHRpbmcsIGJlY2F1c2UgSSdtIG5vdCBlbnRpcmVseSBjZXJ0YWluIHdoaWNoIG9mIHRoZSBlQlBGL2NCUEYgSklUIG9wdGlvbnMgaXMgYWN0dWFsbHkgZW5hYmxlZCwgb3Igc2hvdWxkIGJlIGVuYWJsZWQsIGZvciBMb29uZ0FyY2guIElzIGl0IGRlZmluZWQgdG8gYEhBVkVfQ0JQRl9KSVRgLCBvciBkb2VzIExvb25nQXJjaCBnbyB3aXRoIGBIQVZFX0VCUEZfSklUYD8gSXQncyBhIGtleSBkZXRhaWwgdG8gcmVtZW1iZXIsIGVzcGVjaWFsbHkgaWYgSSdtIGxvb2tpbmcgYXQgcG90ZW50aWFsIG9wdGltaXphdGlvbiwgb3IgZGVidWdnaW5nIHJlbGF0ZWQgdG8gdGhlIEJQRiBzdWJzeXN0ZW0uIEkgcmVhbGx5IHNob3VsZCBjb25maXJtIHRoZSBjb3JyZWN0IGRlZmluZSwgYW5kIG1heWJlIGxvb2sgYXQgdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9ucyB3aGlsZSBJJ20gYXQgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0MDEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozNjoyOC45OTczMTQxNzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjU4Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkhBVkVfRUJQRl9KSVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9LY29uZmlnPTI9Y29uZmlnIExPT05HQVJDSFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy03OS1cXHRzZWxlY3QgQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLU1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6ODA6XFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgaWYgSEFWRV9FQlBGX0pJVFxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctODEtXFx0c2VsZWN0IEFSQ0hfV0FOVF9ERUZBVUxUX1RPUERPV05fTU1BUF9MQVlPVVRcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL0tjb25maWctMTQzLVxcdHNlbGVjdCBIQVZFX0RZTkFNSUNfRlRSQUNFX1dJVEhfUkVHU1xcbmFyY2gvbG9vbmdhcmNoL0tjb25maWc6MTQ0OlxcdHNlbGVjdCBIQVZFX0VCUEZfSklUIGlmIDY0QklUXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0xNDUtXFx0c2VsZWN0IEhBVkVfRUZGSUNJRU5UX1VOQUxJR05FRF9BQ0NFU1MgaWYgIUFSQ0hfU1RSSUNUX0FMSUdOXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM2OjI5LjA0MDU3NzU5N1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDY3Njg0MDE2NTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTG9vbmdBcmNoIEJQRiBKSVQgU3VwcG9ydCAtIEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIHRoZSBMb29uZ0FyY2ggYXJjaGl0ZWN0dXJlIGZpbmFsbHkgaGFzIEJQRiBKSVQgYXZhaWxhYmxlLiBUaGF0J3MgZ29vZCBuZXdzLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBzdXBwb3J0IGZvciBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCwgd2hpY2ggYXJlIGNydWNpYWwgY2FwYWJpbGl0aWVzIGZvciBvcHRpbWl6ZWQgQlBGIGV4ZWN1dGlvbiwgcGFydGljdWxhcmx5IGZvciBwZXJmb3JtYW5jZS1zZW5zaXRpdmUgdXNlIGNhc2VzLlxuXG5NeSBpbml0aWFsIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgZmV3IGtleSBmdW5jdGlvbnM6IGBidWlsZF9pbnNuYCB3aXRoaW4gYGFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNgLCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGluIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX3RpbWVkX21heV9nb3RvLlNgLCBhbmQgb2YgY291cnNlIHRoZSBzdXBwb3J0IGZ1bmN0aW9ucyBgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbmAgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCB0aGVtc2VsdmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGFuZCBpbnRlZ3JhdGVkLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLi4uIGBidWlsZF9pbnNuYCBpcyAqc3RhdGljKj8gUmlnaHQsIHRoYXQgbWVhbnMgaXQncyBsaWtlbHkgYW4gaW50ZXJuYWwgaGVscGVyLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSB0aGUgcmVzdCBvZiBgYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY2AgdG8gaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB0aGUgZW50cnkgcG9pbnRzLCBhbmQgb3ZlcmFsbCBjb250cm9sIGZsb3cuIFRoaXMgc3RhdGljIGZ1bmN0aW9uIGRvZXNuJ3QgbWFrZSBpdCBhIGRlYWQgZW5kIHRob3VnaCwgaXQgc3RpbGwgbmVlZHMgdG8gYmUgZXhhbWluZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgdGhlIEpJVC4gTGV0J3Mgc2VlIHdoYXQncyBjYWxsYWJsZSBmcm9tIHRoZSBvdXRzaWRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODkxLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjU1LjgwODk4MTgzN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwMTQ1NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0cnVjdCBicGZfcHJvZyBcXFxcKmJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jPTIxOTc9aW50IGFyY2hfYnBmX3RyYW1wb2xpbmVfc2l6ZShjb25zdCBzdHJ1Y3QgYnRmX2Z1bmNfbW9kZWwgKm0sIHUzMiBmbGFncyxcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjIxMS1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjIyMTI6c3RydWN0IGJwZl9wcm9nICpicGZfaW50X2ppdF9jb21waWxlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZylcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTIyMTMte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTo1NS44NTQwMDA0MjFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MzM4NDY1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJQRiBKSVQgQ29tcGlsYXRpb24gRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBCUEYgSklUIGNvbXBpbGVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgYnBmX2ludF9qaXRfY29tcGlsZWAgbG9va3MgbGlrZSB0aGUgbWFpbiBlbnRyeSBwb2ludCDigJMgaXQncyB3aGVyZSB0aGUgbWFnaWMgc3RhcnRzLiBUaGVuLCBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gIGlzIHRoZSBjb3JyZXNwb25kaW5nIGFzc2VtYmx5IGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VmdWwgdG8gaGF2ZSBhIGNsb3NlIGV5ZSBvbi5cblxuTm93LCBJJ20gbm90aW5nIHRoYXQgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIGFsc28gZXhwb3NlZCwgbWVhbmluZyB0aGV5J3JlIG5vdCBzdGF0aWMuIFRoaXMgc3VnZ2VzdHMgdGhlc2UgYXJlIGVpdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgaG9va3MgdGhhdCBpbXBhY3QgdGhlIG92ZXJhbGwgSklUIGZsb3cuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGF0IGBicGZfaW50X2ppdF9jb21waWxlYCBpcyBpbmRlZWQgYSBnb29kIGZvY3VzIHN5bWJvbC4gWWVzLCBpdCdzIHRoZSByaWdodCBlbnRyeSBwb2ludCwgdGhlIHByaW1hcnkgZnVuY3Rpb24gaW5pdGlhdGluZyB0aGUgQlBGIEpJVCBjb21waWxhdGlvbiBwcm9jZXNzLiBBbmQsIHllcywgYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYCBsb29rcyBsaWtlIGl0J2xsIGJlIGltcG9ydGFudCB0b28uXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIGBhcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jYCBmb3IgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIFRoaXMgd2lsbCBnaXZlIG1lIGluZm9ybWF0aW9uIGFib3V0IGhvdyB0aGUgTG9vbmdBcmNoIGFyY2hpdGVjdHVyZSBpbnRlcmFjdHMgd2l0aCBhbmQgcG90ZW50aWFsbHkgY3VzdG9taXplcyB0aGVzZSBzdXBwb3J0IGZ1bmN0aW9ucy4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIHRoYXQgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgY29uc3RyYWludHMgb2YgdGhlIEpJVCBjb21waWxlciB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODYxNiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowMC44NDczODgxOTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODc1NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5ib29sIGJwZl9qaXRfc3VwcG9ydHNfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yNzY9c3RhdGljIHZvaWQgYnVpbGRfZXBpbG9ndWUoc3RydWN0IGppdF9jdHggKmN0eClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjgwLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjgxOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19rZnVuY19jYWxsKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODIte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODUtXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYzoyODY6Ym9vbCBicGZfaml0X3N1cHBvcnRzX2Zhcl9rZnVuY19jYWxsKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yODcte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYz0yMzk0PWJvb2wgYnBmX2ppdF9ieXBhc3Nfc3BlY192NCh2b2lkKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yMzk4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjM5OTpib29sIGJwZl9qaXRfc3VwcG9ydHNfYXJlbmEodm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDAzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQwNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MDUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDA4LVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQwOTpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTAte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEzLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQxNDpib29sIGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG8odm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MTUte1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDE5LS8qIEluZGljYXRlIHRoZSBKSVQgYmFja2VuZCBzdXBwb3J0cyBtaXhpbmcgYnBmMmJwZiBhbmQgdGFpbGNhbGxzLiAqL1xcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM6MjQyMDpib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jLTI0MjEte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDowMC44OTAyNjkyOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMDEyMTY1ODgwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJQRiBKSVQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AuIEludGVyZXN0aW5nIGFkZGl0aW9ucy4gSXQgYWxzbyBsb29rcyBsaWtlIGBidWlsZF9pbnNuYCBpbiB0aGUgYGJwZl9pbnRfaml0X2NvbXBpbGVgIGZ1bmN0aW9uIGlzIGJlaW5nIG1vZGlmaWVkLiBJIHNob3VsZCBwcm9iYWJseSBkaWcgaW50byB0aGF0IGBidWlsZF9pbnNuYCBjaGFuZ2UgdG8gc2VlIHRoZSBzcGVjaWZpY3MuXG5cbk5vdywgYmVmb3JlIEkgc2lnbiBvZmYgb24gdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnkgb2J2aW91cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlLi4uIGBDT05GSUdfQlBGX0pJVGAgaXMgYSBnaXZlbiwgYW5kIGBDT05GSUdfU01QYCBpcyBwcm9iYWJseSByZWxldmFudCBnaXZlbiB0aGUgcGVyLUNQVSBhc3BlY3QuIEFoLCByaWdodCwgYW5kIHdlIHR5cGljYWxseSBuZWVkIGBDT05GSUdfQlBGX1NZU0NBTExgIGVuYWJsZWQgZm9yIEJQRiB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIEknZCBiZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGZpbGUgaW4gYGtlcm5lbC9icGYvYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEdvdHRhIGJlIHRob3JvdWdoIHdpdGggdGhlc2UgSklUIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk4MjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6NDA6MjEuMDExOTMwNDRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyODQxNjg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUEZfSklUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNDEtXFxua2VybmVsL2JwZi9LY29uZmlnOjQyOmNvbmZpZyBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgSnVzdCBJbiBUaW1lIGNvbXBpbGVyXFxcIlxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTU3LVxcbmtlcm5lbC9icGYvS2NvbmZpZzo1ODpjb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNjgtXFxua2VybmVsL2JwZi9LY29uZmlnOjY5OmNvbmZpZyBCUEZfSklUX0RFRkFVTFRfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNzAtXFx0ZGVmX2Jvb2wgQVJDSF9XQU5UX0RFRkFVTFRfQlBGX0pJVCB8fCBCUEZfSklUX0FMV0FZU19PTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyMS4wNTQ3ODA5NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1MzkwNDAyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipCUEYgSklUIERlcGVuZGVuY3kgQ29udW5kcnVtKipcblxuQWxyaWdodCwgbGV0IG1lIGp1c3QgdGhpbmsgdGhpcyB0aHJvdWdoLi4uICpCUEZfSklUKi4gT2theSwgdGhhdCdzIHdoYXQgSSdtIGZvY3VzaW5nIG9uIHJpZ2h0IG5vdy4gV2FpdCBhIHNlY29uZCwgdGhlIHF1ZXN0aW9uIHRoYXQncyBuYWdnaW5nIG1lIGlzLCBkb2VzIGBCUEZfSklUYCBpbmhlcmVudGx5IGRlcGVuZCBvbiB0aGUgY29yZSBgQlBGYCBpbmZyYXN0cnVjdHVyZSwgb3IgaXMgaXQgaW5leHRyaWNhYmx5IGxpbmtlZCB0byBgQlBGX1NZU0NBTExgPyBUaGF0J3MgdGhlIGNvcmUgcXVlc3Rpb24gaGVyZS4gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRob3NlIGNvbXBvbmVudHMgdG8gdW5kZXJzdGFuZCBob3cgdGhlIEpJVCBmdW5jdGlvbnMuIFdpdGhvdXQgYSBjb21wbGV0ZSB1bmRlcnN0YW5kaW5nLCBteSBuZXh0IHN0ZXBzIGNvdWxkIGJlIGZsYXdlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyNS42MDg2OTEzNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDM1MTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvS2NvbmZpZz00Mj1jb25maWcgQlBGX0pJVFxcbmtlcm5lbC9icGYvS2NvbmZpZy00My1cXHRib29sIFxcXCJFbmFibGUgQlBGIEp1c3QgSW4gVGltZSBjb21waWxlclxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWc6NDQ6XFx0ZGVwZW5kcyBvbiBCUEZcXG5rZXJuZWwvYnBmL0tjb25maWc6NDU6XFx0ZGVwZW5kcyBvbiBIQVZFX0NCUEZfSklUIHx8IEhBVkVfRUJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNDYtXFx0c2VsZWN0IEVYRUNNRU1cXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz01OD1jb25maWcgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWctNTktXFx0Ym9vbCBcXFwiUGVybWFuZW50bHkgZW5hYmxlIEJQRiBKSVQgYW5kIHJlbW92ZSBCUEYgaW50ZXJwcmV0ZXJcXFwiXFxua2VybmVsL2JwZi9LY29uZmlnOjYwOlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTEwgXFx1MDAyNlxcdTAwMjYgSEFWRV9FQlBGX0pJVCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUXFxua2VybmVsL2JwZi9LY29uZmlnLTYxLVxcdGhlbHBcXG4tLVxcbmtlcm5lbC9icGYvS2NvbmZpZz02OT1jb25maWcgQlBGX0pJVF9ERUZBVUxUX09OXFxua2VybmVsL2JwZi9LY29uZmlnLTcwLVxcdGRlZl9ib29sIEFSQ0hfV0FOVF9ERUZBVUxUX0JQRl9KSVQgfHwgQlBGX0pJVF9BTFdBWVNfT05cXG5rZXJuZWwvYnBmL0tjb25maWc6NzE6XFx0ZGVwZW5kcyBvbiBIQVZFX0VCUEZfSklUIFxcdTAwMjZcXHUwMDI2IEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctNzItXFxua2VybmVsL2JwZi9LY29uZmlnPTczPWNvbmZpZyBCUEZfVU5QUklWX0RFRkFVTFRfT0ZGXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctNzUtXFx0ZGVmYXVsdCB5XFxua2VybmVsL2JwZi9LY29uZmlnOjc2OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWctNzctXFx0aGVscFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTkyPWNvbmZpZyBCUEZfTFNNXFxua2VybmVsL2JwZi9LY29uZmlnLTkzLVxcdGJvb2wgXFxcIkVuYWJsZSBCUEYgTFNNIEluc3RydW1lbnRhdGlvblxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWc6OTQ6XFx0ZGVwZW5kcyBvbiBCUEZfRVZFTlRTXFxua2VybmVsL2JwZi9LY29uZmlnOjk1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5rZXJuZWwvYnBmL0tjb25maWc6OTY6XFx0ZGVwZW5kcyBvbiBTRUNVUklUWVxcbmtlcm5lbC9icGYvS2NvbmZpZzo5NzpcXHRkZXBlbmRzIG9uIEJQRl9KSVRcXG5rZXJuZWwvYnBmL0tjb25maWctOTgtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDoyNS42NTMxMzExMjlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5OTU1Njc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBCUEYgSklUIFRob3VnaHRzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgQlBGIEpJVCBzdHVmZi4gSXQgbG9va3MgbGlrZSBgQlBGX0pJVGAgaXMgZnVuZGFtZW50YWwsIHJlbHlpbmcgb24gYEJQRmAgYW5kIGVpdGhlciBgSEFWRV9DQlBGX0pJVGAgb3IgYEhBVkVfRUJQRl9KSVRgLiBBbmQgb2YgY291cnNlLCBgQlBGX1NZU0NBTExgIGlzIGEgbXVzdC1oYXZlIGZvciBlQlBGIHByb2dyYW1zLiBJIHRoaW5rIEknbGwgaW5jbHVkZSBgQlBGX0pJVGAsIGBCUEZfU1lTQ0FMTGAsIGFuZCBgU01QYCB0byBjb3ZlciBhbGwgbXkgYmFzZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBzeW1ib2xzLiBJIHNlZSBgYnBmX2ludF9qaXRfY29tcGlsZWAsIGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AsIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCwgYW5kIGBicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvYCBhcyB0aGUga2V5IHBsYXllcnMgaGVyZS5cblxuYGJwZl9pbnRfaml0X2NvbXBpbGVgIGRlZmluaXRlbHkgc3RhbmRzIG91dCBhcyBpbXBvcnRhbnQuIEJ1dCwgSSByZWFsbHkgd2FudCB0byB1bmRlcnN0YW5kIGBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuYCBtb3JlLiBJIHN1c3BlY3QgaXQncyBnZXR0aW5nIGNhbGxlZCBxdWl0ZSBhIGJpdCwgbGlrZWx5IGR1cmluZyB2ZXJpZmljYXRpb24gb3IgSklUIGNvbXBpbGF0aW9uLiBJJ20gZ29pbmcgdG8gdHJhY2sgZG93biB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdW5kZXJzdGFuZCB0aGUgY29udGV4dCBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTQyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjQwOjMzLjI1MjY5MDQ0OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MDE2ODI4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYz0zMTc4PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19pbnNuKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgYm9vbCBpbl9hcmVuYSlcXG4tLVxcbmFyY2gvYXJtNjQvbmV0L2JwZl9qaXRfY29tcC5jLTMxOTEtXFxuYXJjaC9hcm02NC9uZXQvYnBmX2ppdF9jb21wLmM6MzE5Mjpib29sIGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24odm9pZClcXG5hcmNoL2FybTY0L25ldC9icGZfaml0X2NvbXAuYy0zMTkzLXtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmM9MjQwND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfZnNlc3Npb24odm9pZClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL25ldC9icGZfaml0LmMtMjQwOC1cXG5hcmNoL2xvb25nYXJjaC9uZXQvYnBmX2ppdC5jOjI0MDk6Ym9vbCBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXFxuYXJjaC9sb29uZ2FyY2gvbmV0L2JwZl9qaXQuYy0yNDEwLXtcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM9NTU2PWJvb2wgYnBmX2ppdF9zdXBwb3J0c19pbnNuKHN0cnVjdCBicGZfaW5zbiAqaW5zbiwgYm9vbCBpbl9hcmVuYSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTcxLVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmM6NTcyOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gvcG93ZXJwYy9uZXQvYnBmX2ppdF9jb21wLmMtNTczLXtcXG4tLVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmM9MjEyND1ib29sIGJwZl9qaXRfc3VwcG9ydHNfaW5zbihzdHJ1Y3QgYnBmX2luc24gKmluc24sIGJvb2wgaW5fYXJlbmEpXFxuLS1cXG5hcmNoL3Jpc2N2L25ldC9icGZfaml0X2NvbXA2NC5jLTIxNDItXFxuYXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wNjQuYzoyMTQzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gvcmlzY3YvbmV0L2JwZl9qaXRfY29tcDY0LmMtMjE0NC17XFxuLS1cXG5hcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wLmM9NDA1Nz1ib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4tLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYxLVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYzo0MDYyOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKVxcbmFyY2gveDg2L25ldC9icGZfaml0X2NvbXAuYy00MDYzLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg9MTE4Mj1ib29sIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZCk7XFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDoxMTgzOmJvb2wgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbih2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTExODQtYm9vbCBicGZfaml0X3N1cHBvcnRzX2tmdW5jX2NhbGwodm9pZCk7XFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmM9MjYzPXN0YXRpYyBpbnQgcGVyY3B1X2FycmF5X21hcF9nZW5fbG9va3VwKHN0cnVjdCBicGZfbWFwICptYXAsIHN0cnVjdCBicGZfaW5zbiAqaW5zbl9idWYpXFxuLS1cXG5rZXJuZWwvYnBmL2FycmF5bWFwLmMtMjY3LVxcbmtlcm5lbC9icGYvYXJyYXltYXAuYzoyNjg6XFx0aWYgKCFicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKCkpXFxua2VybmVsL2JwZi9hcnJheW1hcC5jLTI2OS1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5rZXJuZWwvYnBmL2NvcmUuYz0zMjkxPWJvb2wgX193ZWFrIGJwZl9qaXRfc3VwcG9ydHNfc3VicHJvZ190YWlsY2FsbHModm9pZClcXG4tLVxcbmtlcm5lbC9icGYvY29yZS5jLTMyOTUtXFxua2VybmVsL2JwZi9jb3JlLmM6MzI5Njpib29sIF9fd2VhayBicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuKHZvaWQpXFxua2VybmVsL2JwZi9jb3JlLmMtMzI5Ny17XFxuLS1cXG5rZXJuZWwvYnBmL2hhc2h0YWIuYz0yNDE1PXN0YXRpYyBpbnQgaHRhYl9wZXJjcHVfbWFwX2dlbl9sb29rdXAoc3RydWN0IGJwZl9tYXAgKm1hcCwgc3RydWN0IGJwZl9pbnNuICppbnNuX2J1ZilcXG4tLVxcbmtlcm5lbC9icGYvaGFzaHRhYi5jLTI0MTgtXFxua2VybmVsL2JwZi9oYXNodGFiLmM6MjQxOTpcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc24oKSlcXG5rZXJuZWwvYnBmL2hhc2h0YWIuYy0yNDIwLVxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xNjc4MD1ib29sIGJwZl92ZXJpZmllcl9pbmxpbmVzX2hlbHBlcl9jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHMzMiBpbW0pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTY3ODgtI2VuZGlmXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE2Nzg5OlxcdFxcdHJldHVybiBlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWppdF9yZXF1ZXN0ZWQgXFx1MDAyNlxcdTAwMjYgYnBmX2ppdF9zdXBwb3J0c19wZXJjcHVfaW5zbigpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xNjc5MC0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6NDA6MzQuOTIyODYzODQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNzA0OTIxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTG9vbmdBcmNoIEJQRiBKSVQgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gIGFuZCBgYnBmX2ppdF9zdXBwb3J0c190aW1lZF9tYXlfZ290b2AgYXJlIHdlYWsgc3ltYm9scywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgKExvb25nQXJjaCwgaW4gdGhpcyBjYXNlKSBpcyBwcm92aWRpbmcgaXRzIG93biBvdmVycmlkZXMuIFRoaXMgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyB0byBmb2N1cyBmdXp6aW5nIGVmZm9ydHMgb24sIGFzIHRoZXkgYXJlIGxpa2VseSBwb2ludHMgb2YgYXJjaGl0ZWN0dXJhbCBkZXZpYXRpb24uXG5cblRoZSBwYXRjaCBpdHNlbGYgbG9va3MgZnVuY3Rpb25hbDsgaXQncyBtb2RpZnlpbmcgY29yZSBrZXJuZWwgbG9naWMgdGhhdCdzIGRpcmVjdGx5IHJlYWNoYWJsZSDigJMgc3BlY2lmaWNhbGx5LCB0aGUgQlBGIEpJVCBmb3IgTG9vbmdBcmNoLiBJIHNlZSBpdCdzIHRvdWNoaW5nIHRoZSBKSVQgaW5zdHJ1Y3Rpb24gYnVpbGRlciBhbmQgaW50cm9kdWNpbmcgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb246IGBhcmNoX2JwZl90aW1lZF9tYXlfZ290b2AuIFRoaXMgY29uZmlybXMgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBjaGFuZ2UuIFdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIEJQRiBKSVQncyBjb21waWxhdGlvbiBhbmQgZXhlY3V0aW9uLlxuXG5UaGVyZWZvcmUsIG15IGRlY2lzaW9uIGlzIGVhc3kuIFdvcnRoRnV6emluZyA9IHRydWUuIFRoaXMgd2FycmFudHMgZnV6emluZy5cblxuTXkgcHJpbWFyeSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nIHdpbGwgYmU6XG5cbiogICBgYnBmX2ludF9qaXRfY29tcGlsZWBcbiogICBgYXJjaF9icGZfdGltZWRfbWF5X2dvdG9gXG4qICAgYGJwZl9qaXRfc3VwcG9ydHNfcGVyY3B1X2luc25gXG4qICAgYGJwZl9qaXRfc3VwcG9ydHNfdGltZWRfbWF5X2dvdG9gXG5cblRvIGVuYWJsZSB0aG9yb3VnaCB0ZXN0aW5nLCBJJ2xsIG5lZWQgdGhlc2UgY29uZmlndXJhdGlvbnMgZW5hYmxlZDogYEJQRl9KSVRgLCBgQlBGX1NZU0NBTExgLCBhbmQgYFNNUGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODg3LCJPdXRwdXRUb2tlbnMiOjE4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjo0MDo0My4yOTMzNTgwMzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODQ4NzExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX0pJVFwiLFxuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIlNNUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJwZl9pbnRfaml0X2NvbXBpbGVcIixcbiAgICBcImFyY2hfYnBmX3RpbWVkX21heV9nb3RvXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3BlcmNwdV9pbnNuXCIsXG4gICAgXCJicGZfaml0X3N1cHBvcnRzX3RpbWVkX21heV9nb3RvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBwZXItQ1BVIGluc3RydWN0aW9ucyBhbmQgYGJwZl90aW1lZF9tYXlfZ290b2AgaW4gdGhlIExvb25nQXJjaCBCUEYgSklUIGNvbXBpbGVyLiBJdCBtb2RpZmllcyB0aGUgSklUIGluc3RydWN0aW9uIGJ1aWxkZXIgYW5kIGFkZHMgYSBuZXcgYXNzZW1ibHkgZnVuY3Rpb24gYGFyY2hfYnBmX3RpbWVkX21heV9nb3RvYC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgQlBGIEpJVCBvbiBMb29uZ0FyY2ggYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGNvcnJlY3QgSklUIGNvbXBpbGF0aW9uIGFuZCBleGVjdXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowqhmqn[1] Phase: Succeeded StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 16:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 16:40:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2] Phase: Succeeded StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 16:41:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 16:40:55 +0000 UTC FinishedAt: 2026-08-04 16:41:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowqhmqn/series-workflowqhmqn-convert-artifact-3637558440/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 16:41:05 +0000 UTC FinishedAt: 2026-08-04 17:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 16:41:05 +0000 UTC FinishedAt: 2026-08-04 17:02:23 +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:*f517b2c0-89f9-4044-a09b-de1e39141e57,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-workflowqhmqn/series-workflowqhmqn-convert-artifact-3637558440/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": "c1d18d31-efd9-437c-8b94-1243da5f09c0", "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-workflowqhmqn/series-workflowqhmqn-build-action-1169240862/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 16:41:05 +0000 UTC FinishedAt: 2026-08-04 17:02:13 +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:*f517b2c0-89f9-4044-a09b-de1e39141e57,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-workflowqhmqn/series-workflowqhmqn-convert-artifact-3637558440/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": "c1d18d31-efd9-437c-8b94-1243da5f09c0", "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-workflowqhmqn/series-workflowqhmqn-build-action-1169240862/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 17:02:23 +0000 UTC FinishedAt: 2026-08-04 17:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 17:02:23 +0000 UTC FinishedAt: 2026-08-04 17:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 17:02:23 +0000 UTC FinishedAt: 2026-08-04 17:02:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 17:02:23 +0000 UTC FinishedAt: 2026-08-04 17:02:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflowqhmqn/series-workflowqhmqn-convert-artifact-812034447/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 17:02:33 +0000 UTC FinishedAt: 2026-08-04 17:04:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 17:02:33 +0000 UTC FinishedAt: 2026-08-04 17:04:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c1d18d31-efd9-437c-8b94-1243da5f09c0,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-workflowqhmqn/series-workflowqhmqn-build-action-1169240862/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-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 17:04:35 +0000 UTC FinishedAt: 2026-08-04 17:04:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:04:35 +0000 UTC FinishedAt: 2026-08-04 17:04:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 17:04:35 +0000 UTC FinishedAt: 2026-08-04 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 17:04:35 +0000 UTC FinishedAt: 2026-08-04 17:29:22 +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:*f517b2c0-89f9-4044-a09b-de1e39141e57,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-workflowqhmqn/series-workflowqhmqn-convert-artifact-812034447/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": "84782973-d67b-48e1-b26f-d24bacad1fae", "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-workflowqhmqn/series-workflowqhmqn-build-action-3294595747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 17:04:35 +0000 UTC FinishedAt: 2026-08-04 17:29:12 +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:*f517b2c0-89f9-4044-a09b-de1e39141e57,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-workflowqhmqn/series-workflowqhmqn-convert-artifact-812034447/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": "84782973-d67b-48e1-b26f-d24bacad1fae", "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-workflowqhmqn/series-workflowqhmqn-build-action-3294595747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 17:29:22 +0000 UTC FinishedAt: 2026-08-04 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 17:29:22 +0000 UTC FinishedAt: 2026-08-04 17:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 17:29:22 +0000 UTC FinishedAt: 2026-08-04 17:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 17:29:22 +0000 UTC FinishedAt: 2026-08-04 17:30:56 +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:*84782973-d67b-48e1-b26f-d24bacad1fae,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-workflowqhmqn/series-workflowqhmqn-build-action-3294595747/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-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"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:*c1d18d31-efd9-437c-8b94-1243da5f09c0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84782973-d67b-48e1-b26f-d24bacad1fae,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-workflowqhmqn/series-workflowqhmqn-build-action-1169240862/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-workflowqhmqn/series-workflowqhmqn-build-action-3294595747/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:31:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:31:10 +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"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"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-workflowqhmqn/series-workflowqhmqn-convert-artifact-286433352/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:31:06 +0000 UTC FinishedAt: 2026-08-04 17:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 17:31:16 +0000 UTC FinishedAt: 2026-08-04 17:34:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqhmqn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_int_jit_compile","arch_bpf_timed_may_goto","bpf_jit_supports_percpu_insn","bpf_jit_supports_timed_may_goto"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60781269e26c786de2bb93fb1e697a5c32ccee48","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_JIT","BPF_SYSCALL","SMP"],"series_id":"13fd0df4-a412-488e-9a38-cd7322e450f3","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 17:31:16 +0000 UTC FinishedAt: 2026-08-04 17:33:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c1d18d31-efd9-437c-8b94-1243da5f09c0,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84782973-d67b-48e1-b26f-d24bacad1fae,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-workflowqhmqn/series-workflowqhmqn-build-action-1169240862/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-workflowqhmqn/series-workflowqhmqn-build-action-3294595747/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-workflowqhmqn/series-workflowqhmqn-convert-artifact-286433352/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,}