Name: series-workflowz2dpv Phase: Succeeded StartedAt: 2026-07-03 20:53:27 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[0] Phase: Succeeded StartedAt: 2026-07-03 20:53:27 +0000 UTC FinishedAt: 2026-07-03 21:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 20:53:27 +0000 UTC FinishedAt: 2026-07-03 21:14:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV" ], "series_id": "6c2e3091-b6b8-46a2-8955-1f0de68e4eac" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_hv_process_stimers", "stimer_start", "stimer_set_config", "stimer_set_count" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjNkNzczNGM2ZjM5MThmYjY1ZDJmYWRkOWNmNWY4ZWQ0ODJhNzRlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMjE6MTI6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXG5pbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuQEAgLTYyNiw2ICYjNDM7NjI2LDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBzdGltZXJfdGltZXJfY2FsbGJhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhblxuJiM0MzsgKiBhbiBhYnNvbHV0ZSBkZWFkbGluZS4gU2F0dXJhdGVzIG9uIG92ZXJmbG93LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGRlbHRhXzEwMG5zIFx1MDAzZSBLVElNRV9NQVggLyAxMDApXG4mIzQzO1x0XHRyZXR1cm4gS1RJTUVfTUFYO1xuJiM0MztcdHJldHVybiBrdGltZV9hZGRfc2FmZShub3csIDEwMCAqIGRlbHRhXzEwMG5zKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuICAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuQEAgLTYzNSw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuIHtcbiBcdHU2NCB0aW1lX25vdztcbiBcdGt0aW1lX3Qga3RpbWVfbm93O1xuJiM0MztcdGt0aW1lX3QgZGVhZGxpbmU7XG4gXG4gXHR0aW1lX25vdyA9IGdldF90aW1lX3JlZl9jb3VudGVyKGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNla3ZtKTtcbiBcdGt0aW1lX25vdyA9IGt0aW1lX2dldCgpO1xuQEAgLTY1NywxMCAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0c3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHR0aW1lX25vdywgc3RpbWVyLVx1MDAzZWV4cF90aW1lKTtcbiBcbi1cdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsXG4tXHRcdFx0ICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdyxcbi1cdFx0XHRcdFx0ICAgMTAwICogKHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXG4tXHRcdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1x0XHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXHUwMDNlZXhwX3RpbWUgLSB0aW1lX25vdyk7XG4mIzQzO1x0XHRocnRpbWVyX3N0YXJ0KFx1MDAyNnN0aW1lci1cdTAwM2V0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdHN0aW1lci1cdTAwM2VleHBfdGltZSA9IHN0aW1lci1cdTAwM2Vjb3VudDtcbkBAIC02NzksOSAmIzQzOzY4OSw5IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHQgICB0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50KTtcbiBcbi1cdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLFxuLVx0XHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpKSxcbi1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1x0ZGVhZGxpbmUgPSBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpO1xuJiM0MztcdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2Q3NzM0YzZmMzkxOGZiNjVkMmZhZGQ5Y2Y1ZjhlZDQ4MmE3NGVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAyMToxMjo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuYwppbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMKQEAgLTYyNiw2ICYjNDM7NjI2LDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBzdGltZXJfdGltZXJfY2FsbGJhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKQogCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKIH0KIAomIzQzOy8qCiYjNDM7ICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhbgomIzQzOyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuCiYjNDM7ICovCiYjNDM7c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKQomIzQzO3sKJiM0MzsJaWYgKGRlbHRhXzEwMG5zICZndDsgS1RJTUVfTUFYIC8gMTAwKQomIzQzOwkJcmV0dXJuIEtUSU1FX01BWDsKJiM0MzsJcmV0dXJuIGt0aW1lX2FkZF9zYWZlKG5vdywgMTAwICogZGVsdGFfMTAwbnMpOwomIzQzO30KJiM0MzsKIC8qCiAgKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczoKICAqIGEpIHN0aW1lci0mZ3Q7Y291bnQgaXMgbm90IGVxdWFsIHRvIDAKQEAgLTYzNSw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKQogewogCXU2NCB0aW1lX25vdzsKIAlrdGltZV90IGt0aW1lX25vdzsKJiM0MzsJa3RpbWVfdCBkZWFkbGluZTsKIAogCXRpbWVfbm93ID0gZ2V0X3RpbWVfcmVmX2NvdW50ZXIoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS0mZ3Q7a3ZtKTsKIAlrdGltZV9ub3cgPSBrdGltZV9nZXQoKTsKQEAgLTY1NywxMCAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcikKIAkJCQkJc3RpbWVyLSZndDtpbmRleCwKIAkJCQkJdGltZV9ub3csIHN0aW1lci0mZ3Q7ZXhwX3RpbWUpOwogCi0JCWhydGltZXJfc3RhcnQoJmFtcDtzdGltZXItJmd0O3RpbWVyLAotCQkJICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdywKLQkJCQkJICAgMTAwICogKHN0aW1lci0mZ3Q7ZXhwX3RpbWUgLSB0aW1lX25vdykpLAotCQkJICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7CiYjNDM7CQlkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItJmd0O2V4cF90aW1lIC0gdGltZV9ub3cpOwomIzQzOwkJaHJ0aW1lcl9zdGFydCgmYW1wO3N0aW1lci0mZ3Q7dGltZXIsIGRlYWRsaW5lLCBIUlRJTUVSX01PREVfQUJTKTsKIAkJcmV0dXJuIDA7CiAJfQogCXN0aW1lci0mZ3Q7ZXhwX3RpbWUgPSBzdGltZXItJmd0O2NvdW50OwpAQCAtNjc5LDkgJiM0Mzs2ODksOSBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpCiAJCQkJCSAgIHN0aW1lci0mZ3Q7aW5kZXgsCiAJCQkJCSAgIHRpbWVfbm93LCBzdGltZXItJmd0O2NvdW50KTsKIAotCWhydGltZXJfc3RhcnQoJmFtcDtzdGltZXItJmd0O3RpbWVyLAotCQkgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLSZndDtjb3VudCAtIHRpbWVfbm93KSksCi0JCSAgICAgIEhSVElNRVJfTU9ERV9BQlMpOwomIzQzOwlkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItJmd0O2NvdW50IC0gdGltZV9ub3cpOwomIzQzOwlocnRpbWVyX3N0YXJ0KCZhbXA7c3RpbWVyLSZndDt0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpOwomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKktWTSBIeXBlci1WIFRpbWVyIFBhdGNoIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaW4gYGFyY2gveDg2L2t2bS9oeXBlcnYuY2AgdGhhdCYjMzk7cyBjYXVnaHQgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0aGUgdGltZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGggYHN0aW1lcl9zdGFydGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgY2hhbmdlZCBoZXJlPyYjMzQ7IFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIG5ldyBoZWxwZXIsIGBzdGltZXJfYWRkX2RlbHRhYCwgYW5kIHRoYXQgaXQgaW50cm9kdWNlcyBzYXR1cmF0aW9uIG9uIG92ZXJmbG93IHdoZW4gZGVhbGluZyB3aXRoIDEwMG5zIHJlZmVyZW5jZSB0aWNrcy4gVGhhdCBzb3VuZHMgbGlrZSBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gSHlwZXItViBlbXVsYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJiMzOTt2ZSBnb3QgdG8gZGlnIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBkZWZpbml0aW9ucyBhbmQgdXNhZ2Ugb2YgYm90aCBgc3RpbWVyX3N0YXJ0YCBhbmQgdGhpcyBuZXcgYHN0aW1lcl9hZGRfZGVsdGFgIGhlbHBlci4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCDigJMgaG93IGBzdGltZXJfc3RhcnRgIHdhcyAqYmVmb3JlKiB0aGUgcGF0Y2gsIGhvdyBpdCAqaXMqIG5vdywgYW5kIGhvdyBgc3RpbWVyX2FkZF9kZWx0YWAgaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgc2F0dXJhdGlvbiBvbiBvdmVyZmxvdyBpcyBpbXBvcnRhbnQsIGFuZCB3aHkgaXQmIzM5O3MgYmVlbiBpbnRyb2R1Y2VkLiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIHByZWNpc2UgaGFuZGxpbmcgb2YgdmlydHVhbCB0aW1lIG9uIEh5cGVyLVYgZ3Vlc3RzLCBzbyBJIHdpbGwgaGF2ZSB0byBmaW5kIGFsbCB0aGUgY2hhbmdlcyB0aGF0IGl0IGltcGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RpbWVyX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYz02MzM9c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDAtLypcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDE6ICogc3RpbWVyX3N0YXJ0KCkgYXNzdW1wdGlvbnM6XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQyLSAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDQtICovXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQ1OnN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDYte1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjYtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjY3Olx0XHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X3BlcmlvZGljKFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2OC1cdFx0XHRcdFx0aHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODctXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg4Olx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9vbmVfc2hvdChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZXZjcHVfaWQsXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg5LVx0XHRcdFx0XHQgICBzdGltZXItXHUwMDNlaW5kZXgsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTg3Nz12b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDItXHRcdFx0XHRcdGlmICghc3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjkwMzpcdFx0XHRcdFx0XHRzdGltZXJfc3RhcnQoc3RpbWVyKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDQtXHRcdFx0XHR9IGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gU3RpbWVycyoqCgpBbHJpZ2h0LCBzbyBgc3RpbWVyX3N0YXJ0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYC4gR2l2ZW4gdGhpcyBpcyBLVk0gY29kZSwgbXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGdvaW5nIHRvIGRvIGlzIGZpZ3VyZSBvdXQgd2hlcmUgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbS4gSSBoYXZlIGEgaHVuY2ggaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IHNvbWUgaHlwZXJ2aXNvciBldmVudCwgbWF5YmUgYSB0aW1lciBpbnRlcnJ1cHQgb3IgYSB2aXJ0dWFsIENQVSBldmVudC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIGBzdGltZXJfc3RhcnRgIGNhbGwuIEtub3dpbmcgdGhlIHN1cnJvdW5kaW5nIGFyY2hpdGVjdHVyZSBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODU5PXN0YXRpYyB2b2lkIHN0aW1lcl9leHBpcmF0aW9uKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc2LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjg3Nzp2b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTg3OC17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oPTE1OD1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2h2X2ludnRzY19zdXBwcmVzc2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgtMTgwLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjE4MTp2b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0xODItXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMDA9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE0OC1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYzo4MTQ5Olx0XHRcdGt2bV9odl9wcm9jZXNzX3N0aW1lcnModmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODE1MC0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIeXBlci1WIFN0aW1lciBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZml4IHJlbGF0ZWQgdG8gdGhlIEh5cGVyLVYgc3RpbWVyLiBJdCYjMzk7cyB0cmlnZ2VyZWQgd2l0aGluIGB2Y3B1X2VudGVyX2d1ZXN0YCB3aGVuIGEgYEtWTV9SRVFfSFZfU1RJTUVSYCByZXF1ZXN0IGNvbWVzIGluIOKAkyB3aGljaCBjb25maXJtcyBpdHMgaW50ZW5kZWQgcGF0aCBhbmQgZnVuY3Rpb24uIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGluZyB0aGUgcmlnaHQgY29kZS4gVGhlIGNvcmUgb2YgdGhlIGZpeCBhcHBlYXJzIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3NzaWJsZSBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBgc3RpbWVyX3N0YXJ0YCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBgc3RpbWVyX2FkZF9kZWx0YWAuIE1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIHNhZmVyIHdheSB0byBoYW5kbGUgdGltaW5nIGFkanVzdG1lbnRzLCBsaWtlbHkgcHJldmVudGluZyBpbnRlZ2VyIHdyYXAtYXJvdW5kIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBvciBldmVuIGV4cGxvaXRzLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHNwZWNpZmljIGZpeCB0byBjb21lIGludG8gZWZmZWN0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm90IG90aGVyIGNvbmZpZ3MgZGVwZW5kZW5jaWVzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIG90aGVyIHBvdGVudGlhbCBjb25maWcgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgdGhpcyBpcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTk5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNX0hZUEVSViBDb25maWd1cmF0aW9uKioKCk9rYXksIHRoZSBgS1ZNX0hZUEVSVmAgY29uZmlndXJhdGlvbiBzZXR0aW5nIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgaHlwZXJ2aXNvciBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0g4oCTIHNwZWNpZmljYWxseSwgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlIGBoeXBlcnYuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB1bmRlciB0aGUgYEtWTV9IWVBFUlZgIGNvbmRpdGlvbi4gVGhhdCB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiB0aGlzIGNvbmZpZyBkaXJlY3RseSBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBIeXBlci1WIHNwZWNpZmljIHBhcnRzIG9mIEtWTSwgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJvdWJsZXNob290aW5nIG9yIHdoYXRldmVyIEkgbWlnaHQgYmUgZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoeXBlcnYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTEyPWt2bS0kKENPTkZJR19LVk1fSU9BUElDKSAmIzQzOz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICYjNDM7PSBoeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE0LWt2bS0kKENPTkZJR19LVk1fWEVOKVx0JiM0Mzs9IHhlbi5vXG4tLVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcdCYjNDM7PSB2bXgvc2d4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMTprdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcdCYjNDM7PSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjIta3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXHQmIzQzOz0gdm14L3RkeC5vXG4tLVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI2PWt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXHQmIzQzOz0gc3ZtL3Nldi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHN2bS9oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI5PWlmZGVmIENPTkZJR19IWVBFUlZcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozMDprdm0teVx0XHRcdCYjNDM7PSBrdm1fb25oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjMxOmt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14X29uaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzI6a3ZtLWFtZC15XHRcdCYjNDM7PSBzdm0vc3ZtX29uaHlwZXJ2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0zMy1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGF0IGBDT05GSUdfS1ZNX0hZUEVSVmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgbmFycm93cyB0aGluZ3MgZG93biBhIGJpdC4gTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgc3RpbWVyX3N0YXJ0YCBmdW5jdGlvbiDigJMgaXQmIzM5O3MgdGhlIGNvcmUgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIEJ1dCwgSSBzaG91bGQgYWxzbyBsb29rIGNsb3NlbHkgYXQgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGFuZCBgc3RpbWVyX2V4cGlyYXRpb25gOyB0aGV5JiMzOTtyZSBsaWtlbHkgcmVsYXRlZCBhbmQgd29ydGggaW5jbHVkaW5nIGluIG15IHRlc3Qgc3VpdGUsIHBvdGVudGlhbGx5IGFzIHRhcmdldHMgdG8gZmVlZCB0byBgc3RpbWVyX3N0YXJ0YC4gSSBzaG91bGQgYWxzbyBydW4gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJdCYjMzk7cyBnb29kIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyB0YXJnZXQsIGJ1dCBrZWVwaW5nIGFuIG9wZW4gbWluZCBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaXMgYWxzbyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjMzPXN0YXRpYyBrdGltZV90IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfdCBub3csIHU2NCBkZWx0YV8xMDBucylcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQwLS8qXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQxOiAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Mi0gKiBhKSBzdGltZXItXHUwMDNlY291bnQgaXMgbm90IGVxdWFsIHRvIDBcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ0LSAqL1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0NTpzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY2LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY2NzpcdFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9wZXJpb2RpYyhcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjgtXHRcdFx0XHRcdGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNldmNwdV9pZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY4ODpcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfb25lX3Nob3QoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4OS1cdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz04Nzc9dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTAyLVx0XHRcdFx0XHRpZiAoIXN0aW1lci1cdTAwM2Vtc2dfcGVuZGluZylcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo5MDM6XHRcdFx0XHRcdFx0c3RpbWVyX3N0YXJ0KHN0aW1lcik7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTA0LVx0XHRcdFx0fSBlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipBbmFseXppbmcgYHN0aW1lcl9zdGFydGAgYW5kIGl0cyBQb3RlbnRpYWwgU3RhdGljIE5hdHVyZSoqCgpIbW0sICpzdGltZXJfc3RhcnQqIGlzIGZsYWdnZWQgYXMgKnN0YXRpYyouIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dCB1c3VhbGx5IG1lYW4gdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgdGltZXIgYXJjaGl0ZWN0dXJlLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gd2hlcmUgdGltZXJzIGNhbiBiZSBzdGFydGVkIGFuZCBzdG9wcGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4KCk15IG5leHQgaW1tZWRpYXRlIHRob3VnaHQgaXM6IGFyZSAqc3RpbWVyX3NldF9jb25maWcqIG9yICpzdGltZXJfc2V0X2NvdW50KiB1c2luZyAqc3RpbWVyX3N0YXJ0Kj8gU2luY2UgdGhpcyBpcyB3aGVyZSBjb25maWd1cmF0aW9uIG9yIGNvdW50IHNldHRpbmcgd2lsbCBiZSBkb25lLCB0aGlzIHdvdWxkIGJlIGEgcmVhbGx5IGhlbHBmdWwgbGluayBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdGltZXIgaXMgc2V0IHVwLCBjb25maWd1cmVkIGFuZCBzdGFydGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHNlZSB3aGVyZSB0aGV5IG1pZ2h0IGNhbGwgKnN0aW1lcl9zdGFydCouIEl0IHdvdWxkIHByb2JhYmx5IGlsbHVtaW5hdGUgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzdGFydCBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RpbWVyX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjQ1PXN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjk3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY5ODpzdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02OTktXHRcdFx0ICAgICBib29sIGhvc3QpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MTU6XHR0cmFjZV9rdm1faHZfc3RpbWVyX3NldF9jb25maWcoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNi1cdFx0XHRcdCAgICAgICBzdGltZXItXHUwMDNlaW5kZXgsIGNvbmZpZywgaG9zdCk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcyOS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MzA6c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTczMS1cdFx0XHQgICAgYm9vbCBob3N0KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzgtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzM5Olx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zZXRfY291bnQoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc0MC1cdFx0XHRcdCAgICAgIHN0aW1lci1cdTAwM2VpbmRleCwgY291bnQsIGhvc3QpO1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0xNTI5PXN0YXRpYyBpbnQga3ZtX2h2X3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCB1NjQgZGF0YSwgYm9vbCBob3N0KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNjE0LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE2MTU6XHRcdHJldHVybiBzdGltZXJfc2V0X2NvbmZpZyh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE2MTYtXHRcdFx0XHRcdCBkYXRhLCBob3N0KTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYyMy1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNjI0Olx0XHRyZXR1cm4gc3RpbWVyX3NldF9jb3VudCh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE2MjUtXHRcdFx0XHRcdGRhdGEsIGhvc3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNIEh5cGVyLVYgTVNSIEludGVyYWN0aW9uKioKCkFscmlnaHQsIG15IGluaXRpYWwgdGhvdWdodCBoZXJlIGlzIHRvIHplcm8gaW4gb24gaG93IHRoZSBzeXN0ZW0gaXMgc2V0dGluZyB0aGUgSHlwZXItViBNU1JzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgZnJvbSBga3ZtX2h2X3NldF9tc3JgLCBhbmQgdGhhdCYjMzk7cyB0aGUgdHJpZ2dlciBJJiMzOTttIGludGVyZXN0ZWQgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdWJyb3V0aW5lcyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCB0aG9zZSBzcGVjaWZpYyBNU1Igc2V0dGluZ3MuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRob3NlIGZ1bmN0aW9uIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGltZXJfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jPTYzMz1zdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0MC0vKlxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0MTogKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczpcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDItICogYSkgc3RpbWVyLVx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0NC0gKi9cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDU6c3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Ni17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2Ni1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2Njc6XHRcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfcGVyaW9kaWMoXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY4LVx0XHRcdFx0XHRodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZXZjcHVfaWQsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4Ny1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODg6XHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X29uZV9zaG90KGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNldmNwdV9pZCxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODktXHRcdFx0XHRcdCAgIHN0aW1lci1cdTAwM2VpbmRleCxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODc3PXZvaWQga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwMi1cdFx0XHRcdFx0aWYgKCFzdGltZXItXHUwMDNlbXNnX3BlbmRpbmcpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6OTAzOlx0XHRcdFx0XHRcdHN0aW1lcl9zdGFydChzdGltZXIpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwNC1cdFx0XHRcdH0gZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqVHJhY2luZyB0aGUgSHlwZXItViBTdGltZXIgRmxvdyoqCgpPa2F5LCBzbyBgc3RpbWVyX3N0YXJ0YOKAlHRoYXQmIzM5O3MgdGhlIGtleS4gIE15IGluaXRpYWwgaHVuY2ggaXMgY29uZmlybWVkOiBpdCYjMzk7cyAqb25seSogY2FsbGVkIGZyb20gYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgLiAgVGhhdCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWRlZCB0byBzZWUuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGNoYXNlIGRvd24gaG93IHRoYXQgJiMzOTtzdGltZXJzJiMzOTsgcmVxdWVzdCBnZXRzIHNldCBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHJhdGhlciwgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gaGFwcGVucy4gIEkgbmVlZCB0byBjaGVjayBob3cgYEtWTV9SRVFfSFZfU1RJTUVSYCBpcyBhY3R1YWxseSB0cmlnZ2VyZWQuIFRoZSBuYXR1cmFsIG5leHQgdGFyZ2V0cyBhcmUgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB0aGUgYEtWTV9SRVFfSFZfU1RJTUVSYCBmbGFnLCB3aGljaCB3b3VsZCBiZSB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20gdGhhdCB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBzdGltZXJfc3RhcnRgIGJlaW5nIGludm9rZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9SRVFfSFZfU1RJTUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYz01OTE9c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5Ny1cdFx0dG9faHZfdmNwdSh2Y3B1KS1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5ODpcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9IVl9TVElNRVIsIHZjcHUpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5OS1cdGlmICh2Y3B1X2tpY2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYHN0aW1lcl9tYXJrX3BlbmRpbmdgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBzdGltZXJfbWFya19wZW5kaW5nYC4mIzM0OyBUaGF0IGZ1bmN0aW9uIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgaXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBsaWtlbHkgaXMgaWYgd2UmIzM5O3JlIHNlZWluZyBbaW5zZXJ0IHByb2JsZW0gdGhlIHVzZXIgaXMgZGVhbGluZyB3aXRoLCBlLmcuLCBsYXRlbmN5LCB1bmV4cGVjdGVkIGJlaGF2aW9yLCBldGMuXS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NoZWR1bGVyLCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBpdHMgc2lkZSBlZmZlY3RzIG1pZ2h0IGJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGl0cyBpbXBsZW1lbnRhdGlvbiwgdHJhY2luZyBpdCBiYWNrIHRvIGl0cyBjYWxsIHNpdGVzLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBvYnZpb3VzIGlzIG1pc3NlZCB3aGVuIHNjYW5uaW5nIGZvciByYWNlIGNvbmRpdGlvbnMsIHN1YnRsZSBsb2NraW5nIGlzc3Vlcywgb3IgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHZhcmlvdXMgZWRnZSBjYXNlcy4gVGhlIHBsYW4gaXMsIGluIGEgbWV0aG9kaWNhbCBtYW5uZXIsIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBjYXVzaW5nIHdoYXRldmVyIGlzc3VlIHdlJiMzOTtyZSBmYWNpbmcuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGltZXJfbWFya19wZW5kaW5nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYy02NC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02Ni1cdFx0XHRcdGJvb2wgdmNwdV9raWNrKTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjE5PXN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzQtXHRcdCAgICBzdGltZXItXHUwMDNlY29uZmlnLnNpbnR4ID09IHNpbnQpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjM1Olx0XHRcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjM2LVx0fVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz01NzI9c3RhdGljIHU2NCBnZXRfdGltZV9yZWZfY291bnRlcihzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5MC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo1OTE6c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTkyLVx0XHRcdFx0Ym9vbCB2Y3B1X2tpY2spXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTYxNz1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjIzLVx0XHRcdFx0ICAgICBzdGltZXItXHUwMDNlaW5kZXgpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjYyNDpcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02MjUtXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY0NT1zdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4My1cdFx0ICovXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg0Olx0XHRzdGltZXJfbWFya19wZW5kaW5nKHN0aW1lciwgZmFsc2UpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY5OD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzI0LVx0aWYgKHN0aW1lci1cdTAwM2Vjb25maWcuZW5hYmxlKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjcyNTpcdFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MjYtXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTczMD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY291bnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyLCB1NjQgY291bnQsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc1MS1cdGlmIChzdGltZXItXHUwMDNlY29uZmlnLmVuYWJsZSlcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3NTI6XHRcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzUzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ5OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGlzIEh5cGVyLVYgc3RpbWVyIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCBsb29rcyBsaWtlIGBzdGltZXJfc2V0X2NvbmZpZ2AgYW5kIGBzdGltZXJfc2V0X2NvdW50YCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMsIGFzIHRoZXkgYm90aCBsZWFkIHRvIGBzdGltZXJfbWFya19wZW5kaW5nYC4gVGhhdCBpbiB0dXJuIHNldHMgYEtWTV9SRVFfSFZfU1RJTUVSYCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIFRoZW4sIG9uIGd1ZXN0IGVudHJ5LCBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIGBzdGltZXJfc3RhcnRgIGNvbWVzIGludG8gcGxheS4gVGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfTVNSU2Agb3IgdGhyb3VnaCBndWVzdCBNU1Igd3JpdGVzLCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0aHdheSBmb3IgdHJpZ2dlcmluZyB0aGUgcmVsZXZhbnQgYmVoYXZpb3IuCgpJJiMzOTttIHplcm9pbmcgaW4gb24gYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucyBoZXJlOiBga3ZtX2h2X3NldF9tc3JgLCBgc3RpbWVyX3NldF9jb25maWdgLCBgc3RpbWVyX3NldF9jb3VudGAsIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCwgYW5kIGBzdGltZXJfc3RhcnRgLiBIb2xkIG9uLCBgc3RpbWVyX3N0YXJ0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCBsaW1pdHMgd2hlcmUgd2UgY2FuIGNhbGwgaXQgZnJvbS4gSSB0aGluayBga3ZtX2h2X3NldF9tc3JgIHNlZW1zIGxpa2UgYSBzb2xpZCBlbnRyeSBwb2ludCB0byBzdGFydCBkaWdnaW5nIGludG8uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faHZfc2V0X21zciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTM3Mz12b2lkIGt2bV9odl94c2F2ZXNfeHNhdmVjX21heWJlX3dhcm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xMzg1LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjEzODY6c3RhdGljIGludCBrdm1faHZfc2V0X21zcl9wdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTEzODctXHRcdFx0ICAgICBib29sIGhvc3QpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1MjA9c3RhdGljIHU2NCBjdXJyZW50X3Rhc2tfcnVudGltZV8xMDBucyh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNTI4LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE1Mjk6c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTUzMC17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE2OTc9c3RhdGljIGludCBrdm1faHZfZ2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCAqcGRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NjEtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc2MjppbnQga3ZtX2h2X3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zciwgdTY0IGRhdGEsIGJvb2wgaG9zdClcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzYzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3NS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZodi1cdTAwM2Vodl9sb2NrKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNzc2Olx0XHRyID0ga3ZtX2h2X3NldF9tc3JfcHcodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzc3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2aHYtXHUwMDNlaHZfbG9jayk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NzktXHR9IGVsc2VcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNzgwOlx0XHRyZXR1cm4ga3ZtX2h2X3NldF9tc3IodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzgxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gSHlwZXItViBUaW1lciBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBIeXBlci1WIHRpbWVycyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAgaXMgYSBrZXkgZW50cnkgcG9pbnQuIEFsc28sIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBnZXRzIGNhbGxlZCBmcm9tIGB2Y3B1X2VudGVyX2d1ZXN0YCwgd2hpY2ggaXMgZGVmaW5pdGVseSB3b3J0aCBub3RpbmcuIFRoZSBwbGFuIGlzIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucy4KCldhaXQsIGBrdm1faHZfc2V0X21zcl9jb21tb25gIGxvb2tzIHByZXR0eSBnZW5lcmljLCBub3Qgc3BlY2lmaWMgdG8gdGltZXJzLi4uIFJpZ2h0LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCBjb3VsZCBzeXprYWxsZXIgZnV6eiB0aGVtIGlmIEkgc3BlY2lmeSB0aGVtIGFzIHRhcmdldHM/IEhtbSwgbm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3Jrcy4gU3l6a2FsbGVyIHVzZXMga2NvdiB3aGljaCB0cmFja3MgZXZlcnl0aGluZywgc28gaXQgZG9lc24mIzM5O3QgbmVlZCBleHBsaWNpdCB0YXJnZXRzIGZvciBjb3ZlcmFnZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCB0aG91Z2gsIGl0JiMzOTtzIGJldHRlciB0byBwcm92aWRlIGZ1bmN0aW9ucyBpbiB0aGUgc3ltYm9sIHRhYmxlLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSBvbmx5IGluIHRoZSBzeW1ib2wgdGFibGUgaWYgdGhleSYjMzk7cmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIGBzdGltZXJfc3RhcnRgIGlzIGlubGluZWQuIEl0JiMzOTtzIHByZXR0eSBiaWcsIHNvIHByb2JhYmx5IG5vdC4gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlbiBpdCYjMzk7cyBhIGNhbmRpZGF0ZS4gQnV0IGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBpcyBhbHJlYWR5IGV4cG9ydGVkLCBzbyBJIGNhbiB1c2UgdGhhdCBhbmQgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAuCgpTbyB0aGUgcmVmaW5lZCBsaXN0IGlzIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBhbmQgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAuIEFsc28sIGlmIGBzdGltZXJfc3RhcnRgIGlzbiYjMzk7dCBpbmxpbmVkLCBpdCYjMzk7bGwgbWFrZSBhIGdvb2QgdGFyZ2V0LiBUaW1lIHRvIGNoZWNrIHRoZSBzaXplIG9mIGBzdGltZXJfc3RhcnRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDI5CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzdGltZXJfc3RhcnRgIOKAkyB0aGF0IGdhdmUgbWUgYSBzbmlwcGV0IGFib3V0IDUwIGxpbmVzIGxvbmcuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBwaW5wb2ludGluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBIeXBlci1WIHN0aW1lciBmaXguIEkmIzM5O20gdGhpbmtpbmcgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGFuZCBgc3RpbWVyX3N0YXJ0YCBhcmUgZGVmaW5pdGVseSB0aGUgY29yZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBhbHNvIGFkZCBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAgdG8gdGhlIGxpc3Q7IHRoZXkmIzM5O3JlIGxpa2VseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIGFuZCBtYW5hZ2luZyB0aGVzZSB0aW1lcnMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9uLiBJcyBgS1ZNX0hZUEVSVmAgdGhlIHNvbGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI/IFllcywgaXQgYXBwZWFycyBzbzsgYEtWTV9IWVBFUlZgIGlzIHRoZSBrZXkgdG8gZW5hYmxpbmcgdGhlIGBoeXBlcnYuY2AgZmlsZS4gSW1wb3J0YW50IG5vdGU6IGBLVk1gIGlzIGEgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kgb2YgYEtWTV9IWVBFUlZgIGluIHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGZpbGUuIEFuZCwgY29uZmlybWVkLCBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYEtWTWAuIFRoZXJlZm9yZSwgYEtWTV9IWVBFUlZgIGlzIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG5lZWRlZC4KClNvLCBoZXJlJiMzOTtzIG15IGNvbmNsdXNpb246CgpUaGlzIGZpeCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBGb2N1c1N5bWJvbHMgYXJlOiBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AsIGBzdGltZXJfc3RhcnRgLCBgc3RpbWVyX3NldF9jb25maWdgLCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLgoKVGhlIHJlcXVpcmVkIEVuYWJsZUNvbmZpZ3MgYXJlOiBgS1ZNX0hZUEVSVmAuCgpNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyB3aXRoaW4gdGhlIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGFuZCBndWVzdCBNU1Igd3JpdGVzLiBJdCYjMzk7cyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHRoZSBLVk0gaHlwZXItdiBlbXVsYXRpb24sIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc3RhcnQmIzM0OywKICAgICYjMzQ7c3RpbWVyX3NldF9jb25maWcmIzM0OywKICAgICYjMzQ7c3RpbWVyX3NldF9jb3VudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyBpbiBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IE1TUiB3cml0ZXMsIGFuZCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIEtWTSBoeXBlci12IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjQ2LjQ0NTMxMzM3MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3ODQxMjEyNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9IWVBFUlZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faHZfcHJvY2Vzc19zdGltZXJzXCIsXG4gICAgXCJzdGltZXJfc3RhcnRcIixcbiAgICBcInN0aW1lcl9zZXRfY29uZmlnXCIsXG4gICAgXCJzdGltZXJfc2V0X2NvdW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gaHlwZXItdiBzdGltZXIgZXhwaXJhdGlvbiBjYWxjdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBNU1Igd3JpdGVzLCBhbmQgaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGZvciBLVk0gaHlwZXItdiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjQ2LjQ0NTMyMDA3MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1NDQzNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNkNzczNGM2ZjM5MThmYjY1ZDJmYWRkOWNmNWY4ZWQ0ODJhNzRlYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDIxOjEyOjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbmluZGV4IGZkNGViMWU1NjFmN2ZiLi4zMTU2MzVkMzY2MDY4YiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcXG5AQCAtNjI2LDYgKzYyNiwxNyBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4gXFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbiB9XFxuIFxcbisvKlxcbisgKiBUcmFuc2xhdGUgYSBzdGltZXIgZXhwaXJ5IGdpdmVuIGluIDEwMG5zIHJlZmVyZW5jZSB0aWNrcyBpbnRvIGFuXFxuKyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuXFxuKyAqL1xcbitzdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXFxuK3tcXG4rXFx0aWYgKGRlbHRhXzEwMG5zIFxcdTAwM2UgS1RJTUVfTUFYIC8gMTAwKVxcbitcXHRcXHRyZXR1cm4gS1RJTUVfTUFYO1xcbitcXHRyZXR1cm4ga3RpbWVfYWRkX3NhZmUobm93LCAxMDAgKiBkZWx0YV8xMDBucyk7XFxuK31cXG4rXFxuIC8qXFxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxcbiAgKiBhKSBzdGltZXItXFx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXFxuQEAgLTYzNSw2ICs2NDYsNyBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuIHtcXG4gXFx0dTY0IHRpbWVfbm93O1xcbiBcXHRrdGltZV90IGt0aW1lX25vdztcXG4rXFx0a3RpbWVfdCBkZWFkbGluZTtcXG4gXFxuIFxcdHRpbWVfbm93ID0gZ2V0X3RpbWVfcmVmX2NvdW50ZXIoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNla3ZtKTtcXG4gXFx0a3RpbWVfbm93ID0ga3RpbWVfZ2V0KCk7XFxuQEAgLTY1NywxMCArNjY5LDggQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbiBcXHRcXHRcXHRcXHRcXHRzdGltZXItXFx1MDAzZWluZGV4LFxcbiBcXHRcXHRcXHRcXHRcXHR0aW1lX25vdywgc3RpbWVyLVxcdTAwM2VleHBfdGltZSk7XFxuIFxcbi1cXHRcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLFxcbi1cXHRcXHRcXHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LFxcbi1cXHRcXHRcXHRcXHRcXHQgICAxMDAgKiAoc3RpbWVyLVxcdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXFxuLVxcdFxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlMpO1xcbitcXHRcXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXFx1MDAzZWV4cF90aW1lIC0gdGltZV9ub3cpO1xcbitcXHRcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdHN0aW1lci1cXHUwMDNlZXhwX3RpbWUgPSBzdGltZXItXFx1MDAzZWNvdW50O1xcbkBAIC02NzksOSArNjg5LDkgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdGltZXItXFx1MDAzZWluZGV4LFxcbiBcXHRcXHRcXHRcXHRcXHQgICB0aW1lX25vdywgc3RpbWVyLVxcdTAwM2Vjb3VudCk7XFxuIFxcbi1cXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLFxcbi1cXHRcXHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVxcdTAwM2Vjb3VudCAtIHRpbWVfbm93KSksXFxuLVxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlMpO1xcbitcXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXFx1MDAzZWNvdW50IC0gdGltZV9ub3cpO1xcbitcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NDcuMDYxNjM3MjM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzIyNDg3MjQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc1wiLFxuICAgIFwic3RpbWVyX3N0YXJ0XCIsXG4gICAgXCJzdGltZXJfc2V0X2NvbmZpZ1wiLFxuICAgIFwic3RpbWVyX3NldF9jb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIzZDc3MzRjNmYzOTE4ZmI2NWQyZmFkZDljZjVmOGVkNDgyYTc0ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDIxOjEyOjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXG5pbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuQEAgLTYyNiw2ICs2MjYsMTcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHN0aW1lcl90aW1lcl9jYWxsYmFjayhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7XG4gfVxuIFxuKy8qXG4rICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhblxuKyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuXG4rICovXG4rc3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuK3tcbitcdGlmIChkZWx0YV8xMDBucyBcdTAwM2UgS1RJTUVfTUFYIC8gMTAwKVxuK1x0XHRyZXR1cm4gS1RJTUVfTUFYO1xuK1x0cmV0dXJuIGt0aW1lX2FkZF9zYWZlKG5vdywgMTAwICogZGVsdGFfMTAwbnMpO1xuK31cbitcbiAvKlxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuICAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuQEAgLTYzNSw2ICs2NDYsNyBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG4ge1xuIFx0dTY0IHRpbWVfbm93O1xuIFx0a3RpbWVfdCBrdGltZV9ub3c7XG4rXHRrdGltZV90IGRlYWRsaW5lO1xuIFxuIFx0dGltZV9ub3cgPSBnZXRfdGltZV9yZWZfY291bnRlcihodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZWt2bSk7XG4gXHRrdGltZV9ub3cgPSBrdGltZV9nZXQoKTtcbkBAIC02NTcsMTAgKzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0c3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHR0aW1lX25vdywgc3RpbWVyLVx1MDAzZWV4cF90aW1lKTtcbiBcbi1cdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsXG4tXHRcdFx0ICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdyxcbi1cdFx0XHRcdFx0ICAgMTAwICogKHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXG4tXHRcdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4rXHRcdGRlYWRsaW5lID0gc3RpbWVyX2FkZF9kZWx0YShrdGltZV9ub3csIHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KTtcbitcdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsIGRlYWRsaW5lLCBIUlRJTUVSX01PREVfQUJTKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSBzdGltZXItXHUwMDNlY291bnQ7XG5AQCAtNjc5LDkgKzY4OSw5IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHQgICB0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50KTtcbiBcbi1cdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLFxuLVx0XHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpKSxcbi1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4rXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXHUwMDNlY291bnQgLSB0aW1lX25vdyk7XG4rXHRocnRpbWVyX3N0YXJ0KFx1MDAyNnN0aW1lci1cdTAwM2V0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NDcuMDYxNjM5NDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MjU5ODg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKktWTSBIeXBlci1WIFRpbWVyIFBhdGNoIEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNgIHRoYXQncyBjYXVnaHQgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0aGUgdGltZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGggYHN0aW1lcl9zdGFydGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBjaGFuZ2VkIGhlcmU/XCIgVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgbmV3IGhlbHBlciwgYHN0aW1lcl9hZGRfZGVsdGFgLCBhbmQgdGhhdCBpdCBpbnRyb2R1Y2VzIHNhdHVyYXRpb24gb24gb3ZlcmZsb3cgd2hlbiBkZWFsaW5nIHdpdGggMTAwbnMgcmVmZXJlbmNlIHRpY2tzLiBUaGF0IHNvdW5kcyBsaWtlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBIeXBlci1WIGVtdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSd2ZSBnb3QgdG8gZGlnIGludG8gdGhlIGNvZGUuIEknbGwgdXNlIGBncmVwcGVyYCB0byBsb2NhdGUgdGhlIGRlZmluaXRpb25zIGFuZCB1c2FnZSBvZiBib3RoIGBzdGltZXJfc3RhcnRgIGFuZCB0aGlzIG5ldyBgc3RpbWVyX2FkZF9kZWx0YWAgaGVscGVyLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IOKAkyBob3cgYHN0aW1lcl9zdGFydGAgd2FzICpiZWZvcmUqIHRoZSBwYXRjaCwgaG93IGl0ICppcyogbm93LCBhbmQgaG93IGBzdGltZXJfYWRkX2RlbHRhYCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBzYXR1cmF0aW9uIG9uIG92ZXJmbG93IGlzIGltcG9ydGFudCwgYW5kIHdoeSBpdCdzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwcmVjaXNlIGhhbmRsaW5nIG9mIHZpcnR1YWwgdGltZSBvbiBIeXBlci1WIGd1ZXN0cywgc28gSSB3aWxsIGhhdmUgdG8gZmluZCBhbGwgdGhlIGNoYW5nZXMgdGhhdCBpdCBpbXBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NTAuOTI0MjQxNTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjA0NzE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGltZXJfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz02MzM9c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0MC0vKlxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDE6ICogc3RpbWVyX3N0YXJ0KCkgYXNzdW1wdGlvbnM6XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Mi0gKiBhKSBzdGltZXItXFx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ0LSAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDU6c3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2Ni1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjY3OlxcdFxcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfcGVyaW9kaWMoXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2OC1cXHRcXHRcXHRcXHRcXHRodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4Ny1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg4OlxcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfb25lX3Nob3QoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNldmNwdV9pZCxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg5LVxcdFxcdFxcdFxcdFxcdCAgIHN0aW1lci1cXHUwMDNlaW5kZXgsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODc3PXZvaWQga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTAyLVxcdFxcdFxcdFxcdFxcdGlmICghc3RpbWVyLVxcdTAwM2Vtc2dfcGVuZGluZylcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6OTAzOlxcdFxcdFxcdFxcdFxcdFxcdHN0aW1lcl9zdGFydChzdGltZXIpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDQtXFx0XFx0XFx0XFx0fSBlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjUxLjA1MDI5NTE5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjQyMDEyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFN0aW1lcnMqKlxuXG5BbHJpZ2h0LCBzbyBgc3RpbWVyX3N0YXJ0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYC4gR2l2ZW4gdGhpcyBpcyBLVk0gY29kZSwgbXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZmlndXJlIG91dCB3aGVyZSBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tLiBJIGhhdmUgYSBodW5jaCBpdCdzIHRyaWdnZXJlZCBieSBzb21lIGh5cGVydmlzb3IgZXZlbnQsIG1heWJlIGEgdGltZXIgaW50ZXJydXB0IG9yIGEgdmlydHVhbCBDUFUgZXZlbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgKndoeSogb2YgdGhpcyBgc3RpbWVyX3N0YXJ0YCBjYWxsLiBLbm93aW5nIHRoZSBzdXJyb3VuZGluZyBhcmNoaXRlY3R1cmUgaXMgY3JpdGljYWwuIEknbGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQwNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjUzLjk3NDQ5ODU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDg4NzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1faHZfcHJvY2Vzc19zdGltZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jPTg1OT1zdGF0aWMgdm9pZCBzdGltZXJfZXhwaXJhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc2LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo4Nzc6dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc4LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaD0xNTg9c3RhdGljIGlubGluZSBib29sIGt2bV9odl9pbnZ0c2Nfc3VwcHJlc3NlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgtMTgwLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaDoxODE6dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTE4Mi1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04MDAwPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE0OC1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9TVElNRVIsIHZjcHUpKVxcbmFyY2gveDg2L2t2bS94ODYuYzo4MTQ5OlxcdFxcdFxcdGt2bV9odl9wcm9jZXNzX3N0aW1lcnModmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTAtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjU0LjA4NTM5NDY0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzI4MDY1MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBTdGltZXIgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB0aGUgSHlwZXItViBzdGltZXIuIEl0J3MgdHJpZ2dlcmVkIHdpdGhpbiBgdmNwdV9lbnRlcl9ndWVzdGAgd2hlbiBhIGBLVk1fUkVRX0hWX1NUSU1FUmAgcmVxdWVzdCBjb21lcyBpbiDigJMgd2hpY2ggY29uZmlybXMgaXRzIGludGVuZGVkIHBhdGggYW5kIGZ1bmN0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hpbmcgdGhlIHJpZ2h0IGNvZGUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGEgcG9zc2libGUgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYHN0aW1lcl9zdGFydGAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHN0aW1lcl9hZGRfZGVsdGFgLiBNYWtlcyBzZW5zZTsgaXQncyBhIHNhZmVyIHdheSB0byBoYW5kbGUgdGltaW5nIGFkanVzdG1lbnRzLCBsaWtlbHkgcHJldmVudGluZyBpbnRlZ2VyIHdyYXAtYXJvdW5kIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBvciBldmVuIGV4cGxvaXRzLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHNwZWNpZmljIGZpeCB0byBjb21lIGludG8gZWZmZWN0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm90IG90aGVyIGNvbmZpZ3MgZGVwZW5kZW5jaWVzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgcG90ZW50aWFsIGNvbmZpZyBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdG8gYmUgc3VyZSB0aGlzIGlzIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MDcuNDEzNDYyNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTQ4OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzowNy41NTM2MTgzNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1ODEwNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEtWTV9IWVBFUlYgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRoZSBgS1ZNX0hZUEVSVmAgY29uZmlndXJhdGlvbiBzZXR0aW5nIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgaHlwZXJ2aXNvciBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0g4oCTIHNwZWNpZmljYWxseSwgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGUgYGh5cGVydi5jYCBmaWxlIGlzIGJlaW5nIGNvbXBpbGVkIHVuZGVyIHRoZSBgS1ZNX0hZUEVSVmAgY29uZGl0aW9uLiBUaGF0IHdpbGwgcXVpY2tseSB0ZWxsIG1lIGlmIHRoaXMgY29uZmlnIGRpcmVjdGx5IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgdGhlIEh5cGVyLVYgc3BlY2lmaWMgcGFydHMgb2YgS1ZNLCB3aGljaCBpcyBsaWtlbHkgdGhlIHJvb3Qgb2Ygd2hhdCBJJ20gZGVhbGluZyB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRyb3VibGVzaG9vdGluZyBvciB3aGF0ZXZlciBJIG1pZ2h0IGJlIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjEwLjU1OTQzMDU4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0ODI2MTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh5cGVydlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTEyPWt2bS0kKENPTkZJR19LVk1fSU9BUElDKSArPSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE0LWt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuLS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVxcdCs9IHZteC9zZ3gub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMTprdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTIyLWt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVxcdCs9IHZteC90ZHgub1xcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI2PWt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXFx0Kz0gc3ZtL3Nldi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjI3Omt2bS1hbWQtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSBzdm0vaHlwZXJ2Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjgtXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI5PWlmZGVmIENPTkZJR19IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzA6a3ZtLXlcXHRcXHRcXHQrPSBrdm1fb25oeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozMTprdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzI6a3ZtLWFtZC15XFx0XFx0Kz0gc3ZtL3N2bV9vbmh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTMzLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjEwLjY2NDI2NzQ0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA4MjA0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoYXQgYENPTkZJR19LVk1fSFlQRVJWYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQncyBnb29kIHRvIGtub3csIG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQuIE15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSB0aGUgYHN0aW1lcl9zdGFydGAgZnVuY3Rpb24g4oCTIGl0J3MgdGhlIGNvcmUgb2Ygd2hhdCBJJ20gbG9va2luZyBhdC4gQnV0LCBJIHNob3VsZCBhbHNvIGxvb2sgY2xvc2VseSBhdCBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBzdGltZXJfZXhwaXJhdGlvbmA7IHRoZXkncmUgbGlrZWx5IHJlbGF0ZWQgYW5kIHdvcnRoIGluY2x1ZGluZyBpbiBteSB0ZXN0IHN1aXRlLCBwb3RlbnRpYWxseSBhcyB0YXJnZXRzIHRvIGZlZWQgdG8gYHN0aW1lcl9zdGFydGAuIEkgc2hvdWxkIGFsc28gcnVuIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJdCdzIGdvb2QgdG8gc3RhcnQgd2l0aCBhIHNwZWNpZmljIHRhcmdldCwgYnV0IGtlZXBpbmcgYW4gb3BlbiBtaW5kIGZvciByZWxhdGVkIGZ1bmN0aW9ucyBpcyBhbHNvIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjE0Ljk3MjQ3MzgwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNzgyNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0aW1lcl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jPTYzMz1zdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQwLS8qXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0MTogKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczpcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQyLSAqIGEpIHN0aW1lci1cXHUwMDNlY291bnQgaXMgbm90IGVxdWFsIHRvIDBcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDQtICovXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0NTpzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY2LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2Njc6XFx0XFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9wZXJpb2RpYyhcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY4LVxcdFxcdFxcdFxcdFxcdGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXFx1MDAzZXZjcHVfaWQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg3LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODg6XFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9vbmVfc2hvdChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODktXFx0XFx0XFx0XFx0XFx0ICAgc3RpbWVyLVxcdTAwM2VpbmRleCxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz04Nzc9dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDItXFx0XFx0XFx0XFx0XFx0aWYgKCFzdGltZXItXFx1MDAzZW1zZ19wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo5MDM6XFx0XFx0XFx0XFx0XFx0XFx0c3RpbWVyX3N0YXJ0KHN0aW1lcik7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwNC1cXHRcXHRcXHRcXHR9IGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MTUuMDczMjY1OTM4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDQxNjcwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgYHN0aW1lcl9zdGFydGAgYW5kIGl0cyBQb3RlbnRpYWwgU3RhdGljIE5hdHVyZSoqXG5cbkhtbSwgKnN0aW1lcl9zdGFydCogaXMgZmxhZ2dlZCBhcyAqc3RhdGljKi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0IHVzdWFsbHkgbWVhbiB0aGV5J3JlIGludGVybmFsIHRvIGEgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IGRpcmVjdGx5IGNhbGxhYmxlIGZyb20gb3V0c2lkZS4gVGhlIGltcGxpY2F0aW9ucyBhcmUgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHRpbWVyIGFyY2hpdGVjdHVyZSwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gd2hlcmUgdGltZXJzIGNhbiBiZSBzdGFydGVkIGFuZCBzdG9wcGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlICpzdGltZXJfc2V0X2NvbmZpZyogb3IgKnN0aW1lcl9zZXRfY291bnQqIHVzaW5nICpzdGltZXJfc3RhcnQqPyBTaW5jZSB0aGlzIGlzIHdoZXJlIGNvbmZpZ3VyYXRpb24gb3IgY291bnQgc2V0dGluZyB3aWxsIGJlIGRvbmUsIHRoaXMgd291bGQgYmUgYSByZWFsbHkgaGVscGZ1bCBsaW5rIGluIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB0aW1lciBpcyBzZXQgdXAsIGNvbmZpZ3VyZWQgYW5kIHN0YXJ0ZWQuIEkgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZXkgbWlnaHQgY2FsbCAqc3RpbWVyX3N0YXJ0Ki4gSXQgd291bGQgcHJvYmFibHkgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHN0YXJ0IHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTU1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MjYuNTE0OTM5NDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkwMzQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGltZXJfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjQ1PXN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02OTctXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY5ODpzdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjk5LVxcdFxcdFxcdCAgICAgYm9vbCBob3N0KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNC1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzE1OlxcdHRyYWNlX2t2bV9odl9zdGltZXJfc2V0X2NvbmZpZyhodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0aW1lci1cXHUwMDNlaW5kZXgsIGNvbmZpZywgaG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzI5LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MzA6c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzEtXFx0XFx0XFx0ICAgIGJvb2wgaG9zdClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzgtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjczOTpcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3NldF9jb3VudChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03NDAtXFx0XFx0XFx0XFx0ICAgICAgc3RpbWVyLVxcdTAwM2VpbmRleCwgY291bnQsIGhvc3QpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1Mjk9c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYxNC1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTYxNTpcXHRcXHRyZXR1cm4gc3RpbWVyX3NldF9jb25maWcodG9faHZfc3RpbWVyKHZjcHUsIHRpbWVyX2luZGV4KSxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYxNi1cXHRcXHRcXHRcXHRcXHQgZGF0YSwgaG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYyMy1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTYyNDpcXHRcXHRyZXR1cm4gc3RpbWVyX3NldF9jb3VudCh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNjI1LVxcdFxcdFxcdFxcdFxcdGRhdGEsIGhvc3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzoyNi42NTg4NDk4MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1NjExNTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIEh5cGVyLVYgTVNSIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIHN5c3RlbSBpcyBzZXR0aW5nIHRoZSBIeXBlci1WIE1TUnMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBpbnZva2VkIGZyb20gYGt2bV9odl9zZXRfbXNyYCwgYW5kIHRoYXQncyB0aGUgdHJpZ2dlciBJJ20gaW50ZXJlc3RlZCBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN1YnJvdXRpbmVzIGFyZSBpbnRlcmFjdGluZyB3aXRoIHRob3NlIHNwZWNpZmljIE1TUiBzZXR0aW5ncy4gTGV0J3MgZGVsdmUgaW50byB0aG9zZSBmdW5jdGlvbiBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEwOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjI5LjgxNDk2OTUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzMDMzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RpbWVyX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjMzPXN0YXRpYyBrdGltZV90IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfdCBub3csIHU2NCBkZWx0YV8xMDBucylcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDAtLypcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQxOiAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDItICogYSkgc3RpbWVyLVxcdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0NC0gKi9cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQ1OnN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ2LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjYtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY2NzpcXHRcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X3BlcmlvZGljKFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjgtXFx0XFx0XFx0XFx0XFx0aHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNldmNwdV9pZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODctXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY4ODpcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X29uZV9zaG90KGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXFx1MDAzZXZjcHVfaWQsXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4OS1cXHRcXHRcXHRcXHRcXHQgICBzdGltZXItXFx1MDAzZWluZGV4LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTg3Nz12b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwMi1cXHRcXHRcXHRcXHRcXHRpZiAoIXN0aW1lci1cXHUwMDNlbXNnX3BlbmRpbmcpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjkwMzpcXHRcXHRcXHRcXHRcXHRcXHRzdGltZXJfc3RhcnQoc3RpbWVyKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTA0LVxcdFxcdFxcdFxcdH0gZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzoyOS45NTUyNzkyNjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3ODg1OTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgSHlwZXItViBTdGltZXIgRmxvdyoqXG5cbk9rYXksIHNvIGBzdGltZXJfc3RhcnRg4oCUdGhhdCdzIHRoZSBrZXkuICBNeSBpbml0aWFsIGh1bmNoIGlzIGNvbmZpcm1lZDogaXQncyAqb25seSogY2FsbGVkIGZyb20gYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgLiAgVGhhdCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWRlZCB0byBzZWUuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGNoYXNlIGRvd24gaG93IHRoYXQgJ3N0aW1lcnMnIHJlcXVlc3QgZ2V0cyBzZXQgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciByYXRoZXIsIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGhhcHBlbnMuICBJIG5lZWQgdG8gY2hlY2sgaG93IGBLVk1fUkVRX0hWX1NUSU1FUmAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkLiBUaGUgbmF0dXJhbCBuZXh0IHRhcmdldHMgYXJlIGBzdGltZXJfc2V0X2NvbmZpZ2AgYW5kIGBzdGltZXJfc2V0X2NvdW50YC4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBLVk1fUkVRX0hWX1NUSU1FUmAgZmxhZywgd2hpY2ggd291bGQgYmUgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIHRoYXQgdWx0aW1hdGVseSBsZWFkcyB0byBgc3RpbWVyX3N0YXJ0YCBiZWluZyBpbnZva2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29udHJvbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODc3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MzMuNDM0MTQyMzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMyNzUxMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1JFUV9IVl9TVElNRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz01OTE9c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTk3LVxcdFxcdHRvX2h2X3ZjcHUodmNwdSktXFx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5ODpcXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTk5LVxcdGlmICh2Y3B1X2tpY2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjMzLjU0NzQyNDkxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg1MTQxMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgc3RpbWVyX21hcmtfcGVuZGluZ2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBzdGltZXJfbWFya19wZW5kaW5nYC5cIiBUaGF0IGZ1bmN0aW9uIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgaXQncyB3aGVyZSB0aGUgYWN0aW9uIGxpa2VseSBpcyBpZiB3ZSdyZSBzZWVpbmcgW2luc2VydCBwcm9ibGVtIHRoZSB1c2VyIGlzIGRlYWxpbmcgd2l0aCwgZS5nLiwgbGF0ZW5jeSwgdW5leHBlY3RlZCBiZWhhdmlvciwgZXRjLl0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NoZWR1bGVyLCBob3cgaXQncyBiZWluZyBjYWxsZWQsIGFuZCB3aGF0IGl0cyBzaWRlIGVmZmVjdHMgbWlnaHQgYmUuIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdHMgaW1wbGVtZW50YXRpb24sIHRyYWNpbmcgaXQgYmFjayB0byBpdHMgY2FsbCBzaXRlcy4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgb2J2aW91cyBpcyBtaXNzZWQgd2hlbiBzY2FubmluZyBmb3IgcmFjZSBjb25kaXRpb25zLCBzdWJ0bGUgbG9ja2luZyBpc3N1ZXMsIG9yIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiB2YXJpb3VzIGVkZ2UgY2FzZXMuIFRoZSBwbGFuIGlzLCBpbiBhIG1ldGhvZGljYWwgbWFubmVyLCB0byBmaWd1cmUgb3V0IHdoYXQncyBjYXVzaW5nIHdoYXRldmVyIGlzc3VlIHdlJ3JlIGZhY2luZy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzYwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MzYuOTMyNTY5Njg5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4MTMzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RpbWVyX21hcmtfcGVuZGluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjYtXFx0XFx0XFx0XFx0Ym9vbCB2Y3B1X2tpY2spO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTIxOT1zdGF0aWMgdm9pZCBrdm1faHZfbm90aWZ5X2Fja2VkX3NpbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgc2ludClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzQtXFx0XFx0ICAgIHN0aW1lci1cXHUwMDNlY29uZmlnLnNpbnR4ID09IHNpbnQpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIzNTpcXHRcXHRcXHRzdGltZXJfbWFya19wZW5kaW5nKHN0aW1lciwgZmFsc2UpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzYtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTU3Mj1zdGF0aWMgdTY0IGdldF90aW1lX3JlZl9jb3VudGVyKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy01OTAtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5MTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTkyLVxcdFxcdFxcdFxcdGJvb2wgdmNwdV9raWNrKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTYxNz1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02MjMtXFx0XFx0XFx0XFx0ICAgICBzdGltZXItXFx1MDAzZWluZGV4KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjI0OlxcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCB0cnVlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjI1LVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY0NT1zdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjgzLVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODQ6XFx0XFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY5OD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MjQtXFx0aWYgKHN0aW1lci1cXHUwMDNlY29uZmlnLmVuYWJsZSlcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzI1OlxcdFxcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcyNi1cXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz03MzA9c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc1MS1cXHRpZiAoc3RpbWVyLVxcdTAwM2Vjb25maWcuZW5hYmxlKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3NTI6XFx0XFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzUzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzozNy4wNDQzOTA3ODFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0NjQ4ODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhpcyBIeXBlci1WIHN0aW1lciBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgbG9va3MgbGlrZSBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzLCBhcyB0aGV5IGJvdGggbGVhZCB0byBgc3RpbWVyX21hcmtfcGVuZGluZ2AuIFRoYXQgaW4gdHVybiBzZXRzIGBLVk1fUkVRX0hWX1NUSU1FUmAsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGVuLCBvbiBndWVzdCBlbnRyeSwgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGdldHMgY2FsbGVkLCBhbmQgdGhhdCdzIHdoZXJlIGBzdGltZXJfc3RhcnRgIGNvbWVzIGludG8gcGxheS4gVGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfTVNSU2Agb3IgdGhyb3VnaCBndWVzdCBNU1Igd3JpdGVzLCBzbyB3ZSd2ZSBnb3QgYSBwYXRod2F5IGZvciB0cmlnZ2VyaW5nIHRoZSByZWxldmFudCBiZWhhdmlvci5cblxuSSdtIHplcm9pbmcgaW4gb24gYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucyBoZXJlOiBga3ZtX2h2X3NldF9tc3JgLCBgc3RpbWVyX3NldF9jb25maWdgLCBgc3RpbWVyX3NldF9jb3VudGAsIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCwgYW5kIGBzdGltZXJfc3RhcnRgLiBIb2xkIG9uLCBgc3RpbWVyX3N0YXJ0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCBsaW1pdHMgd2hlcmUgd2UgY2FuIGNhbGwgaXQgZnJvbS4gSSB0aGluayBga3ZtX2h2X3NldF9tc3JgIHNlZW1zIGxpa2UgYSBzb2xpZCBlbnRyeSBwb2ludCB0byBzdGFydCBkaWdnaW5nIGludG8uIExldCdzIHN0YXJ0IHdpdGggdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDk4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQxLjc5MDg4MzAwMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDU2MzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9odl9zZXRfbXNyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTM3Mz12b2lkIGt2bV9odl94c2F2ZXNfeHNhdmVjX21heWJlX3dhcm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTEzODUtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjEzODY6c3RhdGljIGludCBrdm1faHZfc2V0X21zcl9wdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xMzg3LVxcdFxcdFxcdCAgICAgYm9vbCBob3N0KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1MjA9c3RhdGljIHU2NCBjdXJyZW50X3Rhc2tfcnVudGltZV8xMDBucyh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE1MjgtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE1Mjk6c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE1MzAte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE2OTc9c3RhdGljIGludCBrdm1faHZfZ2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCAqcGRhdGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc2MS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc2MjppbnQga3ZtX2h2X3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zciwgdTY0IGRhdGEsIGJvb2wgaG9zdClcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc2My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3NS1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZodi1cXHUwMDNlaHZfbG9jayk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE3NzY6XFx0XFx0ciA9IGt2bV9odl9zZXRfbXNyX3B3KHZjcHUsIG1zciwgZGF0YSwgaG9zdCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NzctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZodi1cXHUwMDNlaHZfbG9jayk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3OS1cXHR9IGVsc2VcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc4MDpcXHRcXHRyZXR1cm4ga3ZtX2h2X3NldF9tc3IodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQxLjg5NTM0NzE0M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4MDU2NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEh5cGVyLVYgVGltZXIgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEh5cGVyLVYgdGltZXJzIGFyZSBoYW5kbGVkLCBhbmQgaXQgc2VlbXMgbGlrZSBga3ZtX2h2X3NldF9tc3JfY29tbW9uYCBpcyBhIGtleSBlbnRyeSBwb2ludC4gQWxzbywgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGdldHMgY2FsbGVkIGZyb20gYHZjcHVfZW50ZXJfZ3Vlc3RgLCB3aGljaCBpcyBkZWZpbml0ZWx5IHdvcnRoIG5vdGluZy4gVGhlIHBsYW4gaXMgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbiBvbiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXG5XYWl0LCBga3ZtX2h2X3NldF9tc3JfY29tbW9uYCBsb29rcyBwcmV0dHkgZ2VuZXJpYywgbm90IHNwZWNpZmljIHRvIHRpbWVycy4uLiBSaWdodCwgbGV0J3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBUaGV5J3JlIHN0YXRpYywgYnV0IGNvdWxkIHN5emthbGxlciBmdXp6IHRoZW0gaWYgSSBzcGVjaWZ5IHRoZW0gYXMgdGFyZ2V0cz8gSG1tLCBubywgdGhhdCdzIG5vdCBob3cgaXQgd29ya3MuIFN5emthbGxlciB1c2VzIGtjb3Ygd2hpY2ggdHJhY2tzIGV2ZXJ5dGhpbmcsIHNvIGl0IGRvZXNuJ3QgbmVlZCBleHBsaWNpdCB0YXJnZXRzIGZvciBjb3ZlcmFnZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCB0aG91Z2gsIGl0J3MgYmV0dGVyIHRvIHByb3ZpZGUgZnVuY3Rpb25zIGluIHRoZSBzeW1ib2wgdGFibGUuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIG9ubHkgaW4gdGhlIHN5bWJvbCB0YWJsZSBpZiB0aGV5J3JlICpub3QqIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgYHN0aW1lcl9zdGFydGAgaXMgaW5saW5lZC4gSXQncyBwcmV0dHkgYmlnLCBzbyBwcm9iYWJseSBub3QuIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiBpdCdzIGEgY2FuZGlkYXRlLiBCdXQgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGlzIGFscmVhZHkgZXhwb3J0ZWQsIHNvIEkgY2FuIHVzZSB0aGF0IGFuZCBga3ZtX2h2X3NldF9tc3JfY29tbW9uYC5cblxuU28gdGhlIHJlZmluZWQgbGlzdCBpcyBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBrdm1faHZfc2V0X21zcl9jb21tb25gLiBBbHNvLCBpZiBgc3RpbWVyX3N0YXJ0YCBpc24ndCBpbmxpbmVkLCBpdCdsbCBtYWtlIGEgZ29vZCB0YXJnZXQuIFRpbWUgdG8gY2hlY2sgdGhlIHNpemUgb2YgYHN0aW1lcl9zdGFydGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQ3LjY2MzQwNTk4NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMTAsIkVycm9yIjoiWW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLiBQbGVhc2Ugc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSBpbnN0ZWFkIG9mIHJlcGVhdGluZyBxdWVyaWVzLiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0aW1lcl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQ3LjY2MzQzOTc2NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDgxMjQ0MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBTdGltZXIgRml4KipcblxuT2theSwgc28gSSd2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzdGltZXJfc3RhcnRgIOKAkyB0aGF0IGdhdmUgbWUgYSBzbmlwcGV0IGFib3V0IDUwIGxpbmVzIGxvbmcuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBwaW5wb2ludGluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBIeXBlci1WIHN0aW1lciBmaXguIEknbSB0aGlua2luZyBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBzdGltZXJfc3RhcnRgIGFyZSBkZWZpbml0ZWx5IHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMuIEknbGwgYWxzbyBhZGQgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgIHRvIHRoZSBsaXN0OyB0aGV5J3JlIGxpa2VseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIGFuZCBtYW5hZ2luZyB0aGVzZSB0aW1lcnMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIElzIGBLVk1fSFlQRVJWYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcj8gWWVzLCBpdCBhcHBlYXJzIHNvOyBgS1ZNX0hZUEVSVmAgaXMgdGhlIGtleSB0byBlbmFibGluZyB0aGUgYGh5cGVydi5jYCBmaWxlLiBJbXBvcnRhbnQgbm90ZTogYEtWTWAgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jeSBvZiBgS1ZNX0hZUEVSVmAgaW4gdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgZmlsZS4gQW5kLCBjb25maXJtZWQsIGl0J3MgZGVwZW5kZW50IG9uIGBLVk1gLiBUaGVyZWZvcmUsIGBLVk1fSFlQRVJWYCBpcyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBuZWVkZWQuXG5cblNvLCBoZXJlJ3MgbXkgY29uY2x1c2lvbjpcblxuVGhpcyBmaXggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5NeSBGb2N1c1N5bWJvbHMgYXJlOiBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AsIGBzdGltZXJfc3RhcnRgLCBgc3RpbWVyX3NldF9jb25maWdgLCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLlxuXG5UaGUgcmVxdWlyZWQgRW5hYmxlQ29uZmlncyBhcmU6IGBLVk1fSFlQRVJWYC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgd2l0aGluIHRoZSBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcy4gSXQncyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHRoZSBLVk0gaHlwZXItdiBlbXVsYXRpb24sIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MjksIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjU0LjE0NDY4NzMwM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTgxNTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9wcm9jZXNzX3N0aW1lcnNcIixcbiAgICBcInN0aW1lcl9zdGFydFwiLFxuICAgIFwic3RpbWVyX3NldF9jb25maWdcIixcbiAgICBcInN0aW1lcl9zZXRfY291bnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyBpbiBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IE1TUiB3cml0ZXMsIGFuZCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIEtWTSBoeXBlci12IGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc1wiLFxuICAgIFwic3RpbWVyX3N0YXJ0XCIsXG4gICAgXCJzdGltZXJfc2V0X2NvbmZpZ1wiLFxuICAgIFwic3RpbWVyX3NldF9jb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 20:53:27 +0000 UTC FinishedAt: 2026-07-03 21:13:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "50406d35f5635e1cc523e61409d57e851b5f5df8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM_HYPERV" ], "series_id": "6c2e3091-b6b8-46a2-8955-1f0de68e4eac" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "kvm_hv_process_stimers", "stimer_start", "stimer_set_config", "stimer_set_count" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjNkNzczNGM2ZjM5MThmYjY1ZDJmYWRkOWNmNWY4ZWQ0ODJhNzRlYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMgMjE6MTI6NDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXG5pbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuQEAgLTYyNiw2ICYjNDM7NjI2LDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBzdGltZXJfdGltZXJfY2FsbGJhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xuIH1cbiBcbiYjNDM7LypcbiYjNDM7ICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhblxuJiM0MzsgKiBhbiBhYnNvbHV0ZSBkZWFkbGluZS4gU2F0dXJhdGVzIG9uIG92ZXJmbG93LlxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGRlbHRhXzEwMG5zIFx1MDAzZSBLVElNRV9NQVggLyAxMDApXG4mIzQzO1x0XHRyZXR1cm4gS1RJTUVfTUFYO1xuJiM0MztcdHJldHVybiBrdGltZV9hZGRfc2FmZShub3csIDEwMCAqIGRlbHRhXzEwMG5zKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuICAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuQEAgLTYzNSw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuIHtcbiBcdHU2NCB0aW1lX25vdztcbiBcdGt0aW1lX3Qga3RpbWVfbm93O1xuJiM0MztcdGt0aW1lX3QgZGVhZGxpbmU7XG4gXG4gXHR0aW1lX25vdyA9IGdldF90aW1lX3JlZl9jb3VudGVyKGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNla3ZtKTtcbiBcdGt0aW1lX25vdyA9IGt0aW1lX2dldCgpO1xuQEAgLTY1NywxMCAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0c3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHR0aW1lX25vdywgc3RpbWVyLVx1MDAzZWV4cF90aW1lKTtcbiBcbi1cdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsXG4tXHRcdFx0ICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdyxcbi1cdFx0XHRcdFx0ICAgMTAwICogKHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXG4tXHRcdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1x0XHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXHUwMDNlZXhwX3RpbWUgLSB0aW1lX25vdyk7XG4mIzQzO1x0XHRocnRpbWVyX3N0YXJ0KFx1MDAyNnN0aW1lci1cdTAwM2V0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpO1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcdHN0aW1lci1cdTAwM2VleHBfdGltZSA9IHN0aW1lci1cdTAwM2Vjb3VudDtcbkBAIC02NzksOSAmIzQzOzY4OSw5IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHQgICB0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50KTtcbiBcbi1cdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLFxuLVx0XHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpKSxcbi1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1x0ZGVhZGxpbmUgPSBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpO1xuJiM0MztcdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XG4mIzQzO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiM2Q3NzM0YzZmMzkxOGZiNjVkMmZhZGQ5Y2Y1ZjhlZDQ4MmE3NGVhCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMyAyMToxMjo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuYwppbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMKQEAgLTYyNiw2ICYjNDM7NjI2LDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBzdGltZXJfdGltZXJfY2FsbGJhY2soc3RydWN0IGhydGltZXIgKnRpbWVyKQogCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKIH0KIAomIzQzOy8qCiYjNDM7ICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhbgomIzQzOyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuCiYjNDM7ICovCiYjNDM7c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKQomIzQzO3sKJiM0MzsJaWYgKGRlbHRhXzEwMG5zICZndDsgS1RJTUVfTUFYIC8gMTAwKQomIzQzOwkJcmV0dXJuIEtUSU1FX01BWDsKJiM0MzsJcmV0dXJuIGt0aW1lX2FkZF9zYWZlKG5vdywgMTAwICogZGVsdGFfMTAwbnMpOwomIzQzO30KJiM0MzsKIC8qCiAgKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczoKICAqIGEpIHN0aW1lci0mZ3Q7Y291bnQgaXMgbm90IGVxdWFsIHRvIDAKQEAgLTYzNSw2ICYjNDM7NjQ2LDcgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKQogewogCXU2NCB0aW1lX25vdzsKIAlrdGltZV90IGt0aW1lX25vdzsKJiM0MzsJa3RpbWVfdCBkZWFkbGluZTsKIAogCXRpbWVfbm93ID0gZ2V0X3RpbWVfcmVmX2NvdW50ZXIoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS0mZ3Q7a3ZtKTsKIAlrdGltZV9ub3cgPSBrdGltZV9nZXQoKTsKQEAgLTY1NywxMCAmIzQzOzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcikKIAkJCQkJc3RpbWVyLSZndDtpbmRleCwKIAkJCQkJdGltZV9ub3csIHN0aW1lci0mZ3Q7ZXhwX3RpbWUpOwogCi0JCWhydGltZXJfc3RhcnQoJmFtcDtzdGltZXItJmd0O3RpbWVyLAotCQkJICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdywKLQkJCQkJICAgMTAwICogKHN0aW1lci0mZ3Q7ZXhwX3RpbWUgLSB0aW1lX25vdykpLAotCQkJICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7CiYjNDM7CQlkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItJmd0O2V4cF90aW1lIC0gdGltZV9ub3cpOwomIzQzOwkJaHJ0aW1lcl9zdGFydCgmYW1wO3N0aW1lci0mZ3Q7dGltZXIsIGRlYWRsaW5lLCBIUlRJTUVSX01PREVfQUJTKTsKIAkJcmV0dXJuIDA7CiAJfQogCXN0aW1lci0mZ3Q7ZXhwX3RpbWUgPSBzdGltZXItJmd0O2NvdW50OwpAQCAtNjc5LDkgJiM0Mzs2ODksOSBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpCiAJCQkJCSAgIHN0aW1lci0mZ3Q7aW5kZXgsCiAJCQkJCSAgIHRpbWVfbm93LCBzdGltZXItJmd0O2NvdW50KTsKIAotCWhydGltZXJfc3RhcnQoJmFtcDtzdGltZXItJmd0O3RpbWVyLAotCQkgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLSZndDtjb3VudCAtIHRpbWVfbm93KSksCi0JCSAgICAgIEhSVElNRVJfTU9ERV9BQlMpOwomIzQzOwlkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItJmd0O2NvdW50IC0gdGltZV9ub3cpOwomIzQzOwlocnRpbWVyX3N0YXJ0KCZhbXA7c3RpbWVyLSZndDt0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpOwomIzQzOwogCXJldHVybiAwOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MjEKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKktWTSBIeXBlci1WIFRpbWVyIFBhdGNoIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIHRoZXJlJiMzOTtzIGEgcGF0Y2ggaW4gYGFyY2gveDg2L2t2bS9oeXBlcnYuY2AgdGhhdCYjMzk7cyBjYXVnaHQgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0aGUgdGltZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGggYHN0aW1lcl9zdGFydGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgY2hhbmdlZCBoZXJlPyYjMzQ7IFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIG5ldyBoZWxwZXIsIGBzdGltZXJfYWRkX2RlbHRhYCwgYW5kIHRoYXQgaXQgaW50cm9kdWNlcyBzYXR1cmF0aW9uIG9uIG92ZXJmbG93IHdoZW4gZGVhbGluZyB3aXRoIDEwMG5zIHJlZmVyZW5jZSB0aWNrcy4gVGhhdCBzb3VuZHMgbGlrZSBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBLVk0gSHlwZXItViBlbXVsYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJiMzOTt2ZSBnb3QgdG8gZGlnIGludG8gdGhlIGNvZGUuIEkmIzM5O2xsIHVzZSBgZ3JlcHBlcmAgdG8gbG9jYXRlIHRoZSBkZWZpbml0aW9ucyBhbmQgdXNhZ2Ugb2YgYm90aCBgc3RpbWVyX3N0YXJ0YCBhbmQgdGhpcyBuZXcgYHN0aW1lcl9hZGRfZGVsdGFgIGhlbHBlci4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCDigJMgaG93IGBzdGltZXJfc3RhcnRgIHdhcyAqYmVmb3JlKiB0aGUgcGF0Y2gsIGhvdyBpdCAqaXMqIG5vdywgYW5kIGhvdyBgc3RpbWVyX2FkZF9kZWx0YWAgaXMgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgc2F0dXJhdGlvbiBvbiBvdmVyZmxvdyBpcyBpbXBvcnRhbnQsIGFuZCB3aHkgaXQmIzM5O3MgYmVlbiBpbnRyb2R1Y2VkLiBUaGlzIGlzIHByb2JhYmx5IHJlbGF0ZWQgdG8gdGhlIHByZWNpc2UgaGFuZGxpbmcgb2YgdmlydHVhbCB0aW1lIG9uIEh5cGVyLVYgZ3Vlc3RzLCBzbyBJIHdpbGwgaGF2ZSB0byBmaW5kIGFsbCB0aGUgY2hhbmdlcyB0aGF0IGl0IGltcGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RpbWVyX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYz02MzM9c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDAtLypcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDE6ICogc3RpbWVyX3N0YXJ0KCkgYXNzdW1wdGlvbnM6XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQyLSAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDQtICovXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQ1OnN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDYte1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjYtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjY3Olx0XHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X3BlcmlvZGljKFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2OC1cdFx0XHRcdFx0aHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODctXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg4Olx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9vbmVfc2hvdChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZXZjcHVfaWQsXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg5LVx0XHRcdFx0XHQgICBzdGltZXItXHUwMDNlaW5kZXgsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTg3Nz12b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDItXHRcdFx0XHRcdGlmICghc3RpbWVyLVx1MDAzZW1zZ19wZW5kaW5nKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjkwMzpcdFx0XHRcdFx0XHRzdGltZXJfc3RhcnQoc3RpbWVyKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDQtXHRcdFx0XHR9IGVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDA3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBLVk0gU3RpbWVycyoqCgpBbHJpZ2h0LCBzbyBgc3RpbWVyX3N0YXJ0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYC4gR2l2ZW4gdGhpcyBpcyBLVk0gY29kZSwgbXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGdvaW5nIHRvIGRvIGlzIGZpZ3VyZSBvdXQgd2hlcmUgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGl0c2VsZiBpcyBjYWxsZWQgZnJvbS4gSSBoYXZlIGEgaHVuY2ggaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IHNvbWUgaHlwZXJ2aXNvciBldmVudCwgbWF5YmUgYSB0aW1lciBpbnRlcnJ1cHQgb3IgYSB2aXJ0dWFsIENQVSBldmVudC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSAqd2h5KiBvZiB0aGlzIGBzdGltZXJfc3RhcnRgIGNhbGwuIEtub3dpbmcgdGhlIHN1cnJvdW5kaW5nIGFyY2hpdGVjdHVyZSBpcyBjcml0aWNhbC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODU5PXN0YXRpYyB2b2lkIHN0aW1lcl9leHBpcmF0aW9uKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc2LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjg3Nzp2b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTg3OC17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oPTE1OD1zdGF0aWMgaW5saW5lIGJvb2wga3ZtX2h2X2ludnRzY19zdXBwcmVzc2VkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgtMTgwLVxuYXJjaC94ODYva3ZtL2h5cGVydi5oOjE4MTp2b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuaC0xODItXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jPTgwMDA9c3RhdGljIGludCB2Y3B1X2VudGVyX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE0OC1cdFx0aWYgKGt2bV9jaGVja19yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KSlcbmFyY2gveDg2L2t2bS94ODYuYzo4MTQ5Olx0XHRcdGt2bV9odl9wcm9jZXNzX3N0aW1lcnModmNwdSk7XG5hcmNoL3g4Ni9rdm0veDg2LmMtODE1MC0jZW5kaWZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDY4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBIeXBlci1WIFN0aW1lciBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgZml4IHJlbGF0ZWQgdG8gdGhlIEh5cGVyLVYgc3RpbWVyLiBJdCYjMzk7cyB0cmlnZ2VyZWQgd2l0aGluIGB2Y3B1X2VudGVyX2d1ZXN0YCB3aGVuIGEgYEtWTV9SRVFfSFZfU1RJTUVSYCByZXF1ZXN0IGNvbWVzIGluIOKAkyB3aGljaCBjb25maXJtcyBpdHMgaW50ZW5kZWQgcGF0aCBhbmQgZnVuY3Rpb24uIFRoaXMgaXMgZGVmaW5pdGVseSByZWFjaGluZyB0aGUgcmlnaHQgY29kZS4gVGhlIGNvcmUgb2YgdGhlIGZpeCBhcHBlYXJzIHRvIGJlIGFkZHJlc3NpbmcgYSBwb3NzaWJsZSBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5IGluIHRoZSBgc3RpbWVyX3N0YXJ0YCBmdW5jdGlvbi4gVGhlIGtleSBjaGFuZ2UgaXMgdGhlIGludHJvZHVjdGlvbiBvZiBgc3RpbWVyX2FkZF9kZWx0YWAuIE1ha2VzIHNlbnNlOyBpdCYjMzk7cyBhIHNhZmVyIHdheSB0byBoYW5kbGUgdGltaW5nIGFkanVzdG1lbnRzLCBsaWtlbHkgcHJldmVudGluZyBpbnRlZ2VyIHdyYXAtYXJvdW5kIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBvciBldmVuIGV4cGxvaXRzLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHNwZWNpZmljIGZpeCB0byBjb21lIGludG8gZWZmZWN0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm90IG90aGVyIGNvbmZpZ3MgZGVwZW5kZW5jaWVzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIG90aGVyIHBvdGVudGlhbCBjb25maWcgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJlIHN1cmUgdGhpcyBpcyBjb21wbGV0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTk5CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNX0hZUEVSViBDb25maWd1cmF0aW9uKioKCk9rYXksIHRoZSBgS1ZNX0hZUEVSVmAgY29uZmlndXJhdGlvbiBzZXR0aW5nIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgaHlwZXJ2aXNvciBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0g4oCTIHNwZWNpZmljYWxseSwgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhlIGBoeXBlcnYuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB1bmRlciB0aGUgYEtWTV9IWVBFUlZgIGNvbmRpdGlvbi4gVGhhdCB3aWxsIHF1aWNrbHkgdGVsbCBtZSBpZiB0aGlzIGNvbmZpZyBkaXJlY3RseSBjb250cm9scyB0aGUgaW5jbHVzaW9uIG9mIHRoZSBIeXBlci1WIHNwZWNpZmljIHBhcnRzIG9mIEtWTSwgd2hpY2ggaXMgbGlrZWx5IHRoZSByb290IG9mIHdoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGguIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgdHJvdWJsZXNob290aW5nIG9yIHdoYXRldmVyIEkgbWlnaHQgYmUgZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtoeXBlcnYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL01ha2VmaWxlPTEyPWt2bS0kKENPTkZJR19LVk1fSU9BUElDKSAmIzQzOz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICYjNDM7PSBoeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE0LWt2bS0kKENPTkZJR19LVk1fWEVOKVx0JiM0Mzs9IHhlbi5vXG4tLVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTIwPWt2bS1pbnRlbC0kKENPTkZJR19YODZfU0dYX0tWTSlcdCYjNDM7PSB2bXgvc2d4Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMTprdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcdCYjNDM7PSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjIta3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXHQmIzQzOz0gdm14L3RkeC5vXG4tLVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI2PWt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXHQmIzQzOz0gc3ZtL3Nldi5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6Mjc6a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVx0JiM0Mzs9IHN2bS9oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlLTI4LVxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI5PWlmZGVmIENPTkZJR19IWVBFUlZcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozMDprdm0teVx0XHRcdCYjNDM7PSBrdm1fb25oeXBlcnYub1xuYXJjaC94ODYva3ZtL01ha2VmaWxlOjMxOmt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14X29uaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzI6a3ZtLWFtZC15XHRcdCYjNDM7PSBzdm0vc3ZtX29uaHlwZXJ2Lm9cbmFyY2gveDg2L2t2bS9NYWtlZmlsZS0zMy1lbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzMyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgVGhpcyBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7dmUgcGlucG9pbnRlZCB0aGF0IGBDT05GSUdfS1ZNX0hZUEVSVmAgaXMgZGVmaW5pdGVseSBhIHByZXJlcXVpc2l0ZSBoZXJlLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdywgbmFycm93cyB0aGluZ3MgZG93biBhIGJpdC4gTXkgcHJpbWFyeSBmb2N1cyBmb3IgZnV6emluZyB3aWxsIGJlIHRoZSBgc3RpbWVyX3N0YXJ0YCBmdW5jdGlvbiDigJMgaXQmIzM5O3MgdGhlIGNvcmUgb2Ygd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQuIEJ1dCwgSSBzaG91bGQgYWxzbyBsb29rIGNsb3NlbHkgYXQgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGFuZCBgc3RpbWVyX2V4cGlyYXRpb25gOyB0aGV5JiMzOTtyZSBsaWtlbHkgcmVsYXRlZCBhbmQgd29ydGggaW5jbHVkaW5nIGluIG15IHRlc3Qgc3VpdGUsIHBvdGVudGlhbGx5IGFzIHRhcmdldHMgdG8gZmVlZCB0byBgc3RpbWVyX3N0YXJ0YC4gSSBzaG91bGQgYWxzbyBydW4gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJdCYjMzk7cyBnb29kIHRvIHN0YXJ0IHdpdGggYSBzcGVjaWZpYyB0YXJnZXQsIGJ1dCBrZWVwaW5nIGFuIG9wZW4gbWluZCBmb3IgcmVsYXRlZCBmdW5jdGlvbnMgaXMgYWxzbyBpbXBvcnRhbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjMzPXN0YXRpYyBrdGltZV90IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfdCBub3csIHU2NCBkZWx0YV8xMDBucylcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQwLS8qXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQxOiAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Mi0gKiBhKSBzdGltZXItXHUwMDNlY291bnQgaXMgbm90IGVxdWFsIHRvIDBcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ0LSAqL1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0NTpzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ2LXtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY2LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY2NzpcdFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9wZXJpb2RpYyhcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjgtXHRcdFx0XHRcdGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNldmNwdV9pZCxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY4ODpcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfb25lX3Nob3QoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4OS1cdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz04Nzc9dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTAyLVx0XHRcdFx0XHRpZiAoIXN0aW1lci1cdTAwM2Vtc2dfcGVuZGluZylcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo5MDM6XHRcdFx0XHRcdFx0c3RpbWVyX3N0YXJ0KHN0aW1lcik7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTA0LVx0XHRcdFx0fSBlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLgoKKipBbmFseXppbmcgYHN0aW1lcl9zdGFydGAgYW5kIGl0cyBQb3RlbnRpYWwgU3RhdGljIE5hdHVyZSoqCgpIbW0sICpzdGltZXJfc3RhcnQqIGlzIGZsYWdnZWQgYXMgKnN0YXRpYyouIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgY29udGV4dCB1c3VhbGx5IG1lYW4gdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBjb21waWxhdGlvbiB1bml0IGFuZCBub3QgZGlyZWN0bHkgY2FsbGFibGUgZnJvbSBvdXRzaWRlLiBUaGUgaW1wbGljYXRpb25zIGFyZSBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgdGltZXIgYXJjaGl0ZWN0dXJlLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gd2hlcmUgdGltZXJzIGNhbiBiZSBzdGFydGVkIGFuZCBzdG9wcGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS4KCk15IG5leHQgaW1tZWRpYXRlIHRob3VnaHQgaXM6IGFyZSAqc3RpbWVyX3NldF9jb25maWcqIG9yICpzdGltZXJfc2V0X2NvdW50KiB1c2luZyAqc3RpbWVyX3N0YXJ0Kj8gU2luY2UgdGhpcyBpcyB3aGVyZSBjb25maWd1cmF0aW9uIG9yIGNvdW50IHNldHRpbmcgd2lsbCBiZSBkb25lLCB0aGlzIHdvdWxkIGJlIGEgcmVhbGx5IGhlbHBmdWwgbGluayBpbiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdGltZXIgaXMgc2V0IHVwLCBjb25maWd1cmVkIGFuZCBzdGFydGVkLiBJIG5lZWQgdG8gdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHNlZSB3aGVyZSB0aGV5IG1pZ2h0IGNhbGwgKnN0aW1lcl9zdGFydCouIEl0IHdvdWxkIHByb2JhYmx5IGlsbHVtaW5hdGUgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBzdGFydCBzZXF1ZW5jZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RpbWVyX3NldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjQ1PXN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjk3LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY5ODpzdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02OTktXHRcdFx0ICAgICBib29sIGhvc3QpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MTU6XHR0cmFjZV9rdm1faHZfc3RpbWVyX3NldF9jb25maWcoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNi1cdFx0XHRcdCAgICAgICBzdGltZXItXHUwMDNlaW5kZXgsIGNvbmZpZywgaG9zdCk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcyOS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MzA6c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTczMS1cdFx0XHQgICAgYm9vbCBob3N0KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzgtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzM5Olx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zZXRfY291bnQoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cdTAwM2V2Y3B1X2lkLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc0MC1cdFx0XHRcdCAgICAgIHN0aW1lci1cdTAwM2VpbmRleCwgY291bnQsIGhvc3QpO1xuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz0xNTI5PXN0YXRpYyBpbnQga3ZtX2h2X3NldF9tc3Ioc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCB1NjQgZGF0YSwgYm9vbCBob3N0KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNjE0LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE2MTU6XHRcdHJldHVybiBzdGltZXJfc2V0X2NvbmZpZyh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE2MTYtXHRcdFx0XHRcdCBkYXRhLCBob3N0KTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYyMy1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNjI0Olx0XHRyZXR1cm4gc3RpbWVyX3NldF9jb3VudCh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE2MjUtXHRcdFx0XHRcdGRhdGEsIGhvc3QpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTA5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS1ZNIEh5cGVyLVYgTVNSIEludGVyYWN0aW9uKioKCkFscmlnaHQsIG15IGluaXRpYWwgdGhvdWdodCBoZXJlIGlzIHRvIHplcm8gaW4gb24gaG93IHRoZSBzeXN0ZW0gaXMgc2V0dGluZyB0aGUgSHlwZXItViBNU1JzLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGJlaW5nIGludm9rZWQgZnJvbSBga3ZtX2h2X3NldF9tc3JgLCBhbmQgdGhhdCYjMzk7cyB0aGUgdHJpZ2dlciBJJiMzOTttIGludGVyZXN0ZWQgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdWJyb3V0aW5lcyBhcmUgaW50ZXJhY3Rpbmcgd2l0aCB0aG9zZSBzcGVjaWZpYyBNU1Igc2V0dGluZ3MuIExldCYjMzk7cyBkZWx2ZSBpbnRvIHRob3NlIGZ1bmN0aW9uIGNhbGxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGltZXJfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jPTYzMz1zdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0MC0vKlxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0MTogKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczpcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDItICogYSkgc3RpbWVyLVx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0NC0gKi9cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDU6c3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Ni17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2Ni1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2Njc6XHRcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfcGVyaW9kaWMoXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY4LVx0XHRcdFx0XHRodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZXZjcHVfaWQsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4Ny1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODg6XHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X29uZV9zaG90KGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXHUwMDNldmNwdV9pZCxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODktXHRcdFx0XHRcdCAgIHN0aW1lci1cdTAwM2VpbmRleCxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODc3PXZvaWQga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwMi1cdFx0XHRcdFx0aWYgKCFzdGltZXItXHUwMDNlbXNnX3BlbmRpbmcpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6OTAzOlx0XHRcdFx0XHRcdHN0aW1lcl9zdGFydChzdGltZXIpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwNC1cdFx0XHRcdH0gZWxzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODc3CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqVHJhY2luZyB0aGUgSHlwZXItViBTdGltZXIgRmxvdyoqCgpPa2F5LCBzbyBgc3RpbWVyX3N0YXJ0YOKAlHRoYXQmIzM5O3MgdGhlIGtleS4gIE15IGluaXRpYWwgaHVuY2ggaXMgY29uZmlybWVkOiBpdCYjMzk7cyAqb25seSogY2FsbGVkIGZyb20gYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgLiAgVGhhdCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWRlZCB0byBzZWUuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGNoYXNlIGRvd24gaG93IHRoYXQgJiMzOTtzdGltZXJzJiMzOTsgcmVxdWVzdCBnZXRzIHNldCBpbiB0aGUgZmlyc3QgcGxhY2UsIG9yIHJhdGhlciwgd2hlcmUgdGhlIGNvbmZpZ3VyYXRpb24gaGFwcGVucy4gIEkgbmVlZCB0byBjaGVjayBob3cgYEtWTV9SRVFfSFZfU1RJTUVSYCBpcyBhY3R1YWxseSB0cmlnZ2VyZWQuIFRoZSBuYXR1cmFsIG5leHQgdGFyZ2V0cyBhcmUgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBJIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgdGhlc2UgZnVuY3Rpb25zIGFyZSByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB0aGUgYEtWTV9SRVFfSFZfU1RJTUVSYCBmbGFnLCB3aGljaCB3b3VsZCBiZSB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20gdGhhdCB1bHRpbWF0ZWx5IGxlYWRzIHRvIGBzdGltZXJfc3RhcnRgIGJlaW5nIGludm9rZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tWTV9SRVFfSFZfU1RJTUVSJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYz01OTE9c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5Ny1cdFx0dG9faHZfdmNwdSh2Y3B1KS1cdTAwM2VzdGltZXJfcGVuZGluZ19iaXRtYXApO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5ODpcdGt2bV9tYWtlX3JlcXVlc3QoS1ZNX1JFUV9IVl9TVElNRVIsIHZjcHUpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5OS1cdGlmICh2Y3B1X2tpY2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkzNjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgYHN0aW1lcl9tYXJrX3BlbmRpbmdgKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBzdGltZXJfbWFya19wZW5kaW5nYC4mIzM0OyBUaGF0IGZ1bmN0aW9uIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgaXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiBsaWtlbHkgaXMgaWYgd2UmIzM5O3JlIHNlZWluZyBbaW5zZXJ0IHByb2JsZW0gdGhlIHVzZXIgaXMgZGVhbGluZyB3aXRoLCBlLmcuLCBsYXRlbmN5LCB1bmV4cGVjdGVkIGJlaGF2aW9yLCBldGMuXS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NoZWR1bGVyLCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCBhbmQgd2hhdCBpdHMgc2lkZSBlZmZlY3RzIG1pZ2h0IGJlLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgcmV2aWV3IGl0cyBpbXBsZW1lbnRhdGlvbiwgdHJhY2luZyBpdCBiYWNrIHRvIGl0cyBjYWxsIHNpdGVzLiBHb3R0YSBtYWtlIHN1cmUgbm90aGluZyBvYnZpb3VzIGlzIG1pc3NlZCB3aGVuIHNjYW5uaW5nIGZvciByYWNlIGNvbmRpdGlvbnMsIHN1YnRsZSBsb2NraW5nIGlzc3Vlcywgb3IgcG90ZW50aWFsIGZvciB1bmV4cGVjdGVkIGJlaGF2aW9yIGluIHZhcmlvdXMgZWRnZSBjYXNlcy4gVGhlIHBsYW4gaXMsIGluIGEgbWV0aG9kaWNhbCBtYW5uZXIsIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBjYXVzaW5nIHdoYXRldmVyIGlzc3VlIHdlJiMzOTtyZSBmYWNpbmcuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdGltZXJfbWFya19wZW5kaW5nJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL2h5cGVydi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYy02NC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02Ni1cdFx0XHRcdGJvb2wgdmNwdV9raWNrKTtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MjE5PXN0YXRpYyB2b2lkIGt2bV9odl9ub3RpZnlfYWNrZWRfc2ludChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBzaW50KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzQtXHRcdCAgICBzdGltZXItXHUwMDNlY29uZmlnLnNpbnR4ID09IHNpbnQpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MjM1Olx0XHRcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMjM2LVx0fVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYz01NzI9c3RhdGljIHU2NCBnZXRfdGltZV9yZWZfY291bnRlcihzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTU5MC1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo1OTE6c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTkyLVx0XHRcdFx0Ym9vbCB2Y3B1X2tpY2spXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTYxNz1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjIzLVx0XHRcdFx0ICAgICBzdGltZXItXHUwMDNlaW5kZXgpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jOjYyNDpcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCB0cnVlKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02MjUtXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY0NT1zdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4My1cdFx0ICovXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg0Olx0XHRzdGltZXJfbWFya19wZW5kaW5nKHN0aW1lciwgZmFsc2UpO1xuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4NS1cdFx0cmV0dXJuIDA7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY5OD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzI0LVx0aWYgKHN0aW1lci1cdTAwM2Vjb25maWcuZW5hYmxlKVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjcyNTpcdFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MjYtXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTczMD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY291bnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyLCB1NjQgY291bnQsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc1MS1cdGlmIChzdGltZXItXHUwMDNlY29uZmlnLmVuYWJsZSlcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3NTI6XHRcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzUzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDQ5OAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGlzIEh5cGVyLVYgc3RpbWVyIGZ1bmN0aW9uYWxpdHksIGFuZCBpdCBsb29rcyBsaWtlIGBzdGltZXJfc2V0X2NvbmZpZ2AgYW5kIGBzdGltZXJfc2V0X2NvdW50YCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMsIGFzIHRoZXkgYm90aCBsZWFkIHRvIGBzdGltZXJfbWFya19wZW5kaW5nYC4gVGhhdCBpbiB0dXJuIHNldHMgYEtWTV9SRVFfSFZfU1RJTUVSYCwgd2hpY2ggaXMgYSBnb29kIHNpZ24uIFRoZW4sIG9uIGd1ZXN0IGVudHJ5LCBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgZ2V0cyBjYWxsZWQsIGFuZCB0aGF0JiMzOTtzIHdoZXJlIGBzdGltZXJfc3RhcnRgIGNvbWVzIGludG8gcGxheS4gVGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfTVNSU2Agb3IgdGhyb3VnaCBndWVzdCBNU1Igd3JpdGVzLCBzbyB3ZSYjMzk7dmUgZ290IGEgcGF0aHdheSBmb3IgdHJpZ2dlcmluZyB0aGUgcmVsZXZhbnQgYmVoYXZpb3IuCgpJJiMzOTttIHplcm9pbmcgaW4gb24gYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucyBoZXJlOiBga3ZtX2h2X3NldF9tc3JgLCBgc3RpbWVyX3NldF9jb25maWdgLCBgc3RpbWVyX3NldF9jb3VudGAsIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCwgYW5kIGBzdGltZXJfc3RhcnRgLiBIb2xkIG9uLCBgc3RpbWVyX3N0YXJ0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCBsaW1pdHMgd2hlcmUgd2UgY2FuIGNhbGwgaXQgZnJvbS4gSSB0aGluayBga3ZtX2h2X3NldF9tc3JgIHNlZW1zIGxpa2UgYSBzb2xpZCBlbnRyeSBwb2ludCB0byBzdGFydCBkaWdnaW5nIGludG8uIExldCYjMzk7cyBzdGFydCB3aXRoIHRoYXQgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1faHZfc2V0X21zciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTM3Mz12b2lkIGt2bV9odl94c2F2ZXNfeHNhdmVjX21heWJlX3dhcm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xMzg1LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjEzODY6c3RhdGljIGludCBrdm1faHZfc2V0X21zcl9wdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTEzODctXHRcdFx0ICAgICBib29sIGhvc3QpXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1MjA9c3RhdGljIHU2NCBjdXJyZW50X3Rhc2tfcnVudGltZV8xMDBucyh2b2lkKVxuLS1cbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNTI4LVxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE1Mjk6c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTUzMC17XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE2OTc9c3RhdGljIGludCBrdm1faHZfZ2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCAqcGRhdGEsXG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NjEtXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc2MjppbnQga3ZtX2h2X3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zciwgdTY0IGRhdGEsIGJvb2wgaG9zdClcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzYzLXtcbi0tXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3NS1cdFx0bXV0ZXhfbG9jayhcdTAwMjZodi1cdTAwM2Vodl9sb2NrKTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNzc2Olx0XHRyID0ga3ZtX2h2X3NldF9tc3JfcHcodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzc3LVx0XHRtdXRleF91bmxvY2soXHUwMDI2aHYtXHUwMDNlaHZfbG9jayk7XG4tLVxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NzktXHR9IGVsc2VcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzoxNzgwOlx0XHRyZXR1cm4ga3ZtX2h2X3NldF9tc3IodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNzgxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE2NjYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gSHlwZXItViBUaW1lciBJbnRlcmFjdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBIeXBlci1WIHRpbWVycyBhcmUgaGFuZGxlZCwgYW5kIGl0IHNlZW1zIGxpa2UgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAgaXMgYSBrZXkgZW50cnkgcG9pbnQuIEFsc28sIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBnZXRzIGNhbGxlZCBmcm9tIGB2Y3B1X2VudGVyX2d1ZXN0YCwgd2hpY2ggaXMgZGVmaW5pdGVseSB3b3J0aCBub3RpbmcuIFRoZSBwbGFuIGlzIHRvIGZvY3VzIG15IGludmVzdGlnYXRpb24gb24gdGhlc2UgdHdvIGZ1bmN0aW9ucy4KCldhaXQsIGBrdm1faHZfc2V0X21zcl9jb21tb25gIGxvb2tzIHByZXR0eSBnZW5lcmljLCBub3Qgc3BlY2lmaWMgdG8gdGltZXJzLi4uIFJpZ2h0LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBUaGV5JiMzOTtyZSBzdGF0aWMsIGJ1dCBjb3VsZCBzeXprYWxsZXIgZnV6eiB0aGVtIGlmIEkgc3BlY2lmeSB0aGVtIGFzIHRhcmdldHM/IEhtbSwgbm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3Jrcy4gU3l6a2FsbGVyIHVzZXMga2NvdiB3aGljaCB0cmFja3MgZXZlcnl0aGluZywgc28gaXQgZG9lc24mIzM5O3QgbmVlZCBleHBsaWNpdCB0YXJnZXRzIGZvciBjb3ZlcmFnZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCB0aG91Z2gsIGl0JiMzOTtzIGJldHRlciB0byBwcm92aWRlIGZ1bmN0aW9ucyBpbiB0aGUgc3ltYm9sIHRhYmxlLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSBvbmx5IGluIHRoZSBzeW1ib2wgdGFibGUgaWYgdGhleSYjMzk7cmUgKm5vdCogaW5saW5lZCBieSB0aGUgY29tcGlsZXIuCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlIGlmIGBzdGltZXJfc3RhcnRgIGlzIGlubGluZWQuIEl0JiMzOTtzIHByZXR0eSBiaWcsIHNvIHByb2JhYmx5IG5vdC4gSWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgdGhlbiBpdCYjMzk7cyBhIGNhbmRpZGF0ZS4gQnV0IGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBpcyBhbHJlYWR5IGV4cG9ydGVkLCBzbyBJIGNhbiB1c2UgdGhhdCBhbmQgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAuCgpTbyB0aGUgcmVmaW5lZCBsaXN0IGlzIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCBhbmQgYGt2bV9odl9zZXRfbXNyX2NvbW1vbmAuIEFsc28sIGlmIGBzdGltZXJfc3RhcnRgIGlzbiYjMzk7dCBpbmxpbmVkLCBpdCYjMzk7bGwgbWFrZSBhIGdvb2QgdGFyZ2V0LiBUaW1lIHRvIGNoZWNrIHRoZSBzaXplIG9mIGBzdGltZXJfc3RhcnRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAyMToxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9oeXBlcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O1lvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4gUGxlYXNlIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUgaW5zdGVhZCBvZiByZXBlYXRpbmcgcXVlcmllcy4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDIxOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDI5CgkJCQkJCQlvdXRwdXQ6IDExOQoJCQkJCQkJdGhvdWdodHM6IDI3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzdGltZXJfc3RhcnRgIOKAkyB0aGF0IGdhdmUgbWUgYSBzbmlwcGV0IGFib3V0IDUwIGxpbmVzIGxvbmcuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBwaW5wb2ludGluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBIeXBlci1WIHN0aW1lciBmaXguIEkmIzM5O20gdGhpbmtpbmcgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGFuZCBgc3RpbWVyX3N0YXJ0YCBhcmUgZGVmaW5pdGVseSB0aGUgY29yZSBmb2N1cyBzeW1ib2xzLiBJJiMzOTtsbCBhbHNvIGFkZCBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAgdG8gdGhlIGxpc3Q7IHRoZXkmIzM5O3JlIGxpa2VseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIGFuZCBtYW5hZ2luZyB0aGVzZSB0aW1lcnMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBlbmFibGluZyBjb25maWd1cmF0aW9uLiBJcyBgS1ZNX0hZUEVSVmAgdGhlIHNvbGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI/IFllcywgaXQgYXBwZWFycyBzbzsgYEtWTV9IWVBFUlZgIGlzIHRoZSBrZXkgdG8gZW5hYmxpbmcgdGhlIGBoeXBlcnYuY2AgZmlsZS4gSW1wb3J0YW50IG5vdGU6IGBLVk1gIGlzIGEgZGVwZW5kZW5jeS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlcGVuZGVuY3kgb2YgYEtWTV9IWVBFUlZgIGluIHRoZSBgYXJjaC94ODYva3ZtL0tjb25maWdgIGZpbGUuIEFuZCwgY29uZmlybWVkLCBpdCYjMzk7cyBkZXBlbmRlbnQgb24gYEtWTWAuIFRoZXJlZm9yZSwgYEtWTV9IWVBFUlZgIGlzIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG5lZWRlZC4KClNvLCBoZXJlJiMzOTtzIG15IGNvbmNsdXNpb246CgpUaGlzIGZpeCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgpNeSBGb2N1c1N5bWJvbHMgYXJlOiBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AsIGBzdGltZXJfc3RhcnRgLCBgc3RpbWVyX3NldF9jb25maWdgLCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLgoKVGhlIHJlcXVpcmVkIEVuYWJsZUNvbmZpZ3MgYXJlOiBgS1ZNX0hZUEVSVmAuCgpNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyB3aXRoaW4gdGhlIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGFuZCBndWVzdCBNU1Igd3JpdGVzLiBJdCYjMzk7cyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHRoZSBLVk0gaHlwZXItdiBlbXVsYXRpb24sIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMjE6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTV9IWVBFUlYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1faHZfcHJvY2Vzc19zdGltZXJzJiMzNDssCiAgICAmIzM0O3N0aW1lcl9zdGFydCYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvbmZpZyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc2V0X2NvdW50JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk1fSFlQRVJWJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyYjMzQ7LAogICAgJiMzNDtzdGltZXJfc3RhcnQmIzM0OywKICAgICYjMzQ7c3RpbWVyX3NldF9jb25maWcmIzM0OywKICAgICYjMzQ7c3RpbWVyX3NldF9jb3VudCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyBpbiBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IE1TUiB3cml0ZXMsIGFuZCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIEtWTSBoeXBlci12IGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjQ2LjQ0NTMxMzM3MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3ODQxMjEyNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTV9IWVBFUlZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrdm1faHZfcHJvY2Vzc19zdGltZXJzXCIsXG4gICAgXCJzdGltZXJfc3RhcnRcIixcbiAgICBcInN0aW1lcl9zZXRfY29uZmlnXCIsXG4gICAgXCJzdGltZXJfc2V0X2NvdW50XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gaHlwZXItdiBzdGltZXIgZXhwaXJhdGlvbiBjYWxjdWxhdGlvbi4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBLVk0gaW9jdGxzIGFuZCBndWVzdCBNU1Igd3JpdGVzLCBhbmQgaXMgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGZvciBLVk0gaHlwZXItdiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjQ2LjQ0NTMyMDA3MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE1NDQzNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjNkNzczNGM2ZjM5MThmYjY1ZDJmYWRkOWNmNWY4ZWQ0ODJhNzRlYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDIxOjEyOjQ0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS9oeXBlcnYuYyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xcbmluZGV4IGZkNGViMWU1NjFmN2ZiLi4zMTU2MzVkMzY2MDY4YiAxMDA2NDRcXG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcXG4rKysgYi9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcXG5AQCAtNjI2LDYgKzYyNiwxNyBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4gXFx0cmV0dXJuIEhSVElNRVJfTk9SRVNUQVJUO1xcbiB9XFxuIFxcbisvKlxcbisgKiBUcmFuc2xhdGUgYSBzdGltZXIgZXhwaXJ5IGdpdmVuIGluIDEwMG5zIHJlZmVyZW5jZSB0aWNrcyBpbnRvIGFuXFxuKyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuXFxuKyAqL1xcbitzdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXFxuK3tcXG4rXFx0aWYgKGRlbHRhXzEwMG5zIFxcdTAwM2UgS1RJTUVfTUFYIC8gMTAwKVxcbitcXHRcXHRyZXR1cm4gS1RJTUVfTUFYO1xcbitcXHRyZXR1cm4ga3RpbWVfYWRkX3NhZmUobm93LCAxMDAgKiBkZWx0YV8xMDBucyk7XFxuK31cXG4rXFxuIC8qXFxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxcbiAgKiBhKSBzdGltZXItXFx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXFxuQEAgLTYzNSw2ICs2NDYsNyBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuIHtcXG4gXFx0dTY0IHRpbWVfbm93O1xcbiBcXHRrdGltZV90IGt0aW1lX25vdztcXG4rXFx0a3RpbWVfdCBkZWFkbGluZTtcXG4gXFxuIFxcdHRpbWVfbm93ID0gZ2V0X3RpbWVfcmVmX2NvdW50ZXIoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNla3ZtKTtcXG4gXFx0a3RpbWVfbm93ID0ga3RpbWVfZ2V0KCk7XFxuQEAgLTY1NywxMCArNjY5LDggQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbiBcXHRcXHRcXHRcXHRcXHRzdGltZXItXFx1MDAzZWluZGV4LFxcbiBcXHRcXHRcXHRcXHRcXHR0aW1lX25vdywgc3RpbWVyLVxcdTAwM2VleHBfdGltZSk7XFxuIFxcbi1cXHRcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLFxcbi1cXHRcXHRcXHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LFxcbi1cXHRcXHRcXHRcXHRcXHQgICAxMDAgKiAoc3RpbWVyLVxcdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXFxuLVxcdFxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlMpO1xcbitcXHRcXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXFx1MDAzZWV4cF90aW1lIC0gdGltZV9ub3cpO1xcbitcXHRcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxuIFxcdFxcdHJldHVybiAwO1xcbiBcXHR9XFxuIFxcdHN0aW1lci1cXHUwMDNlZXhwX3RpbWUgPSBzdGltZXItXFx1MDAzZWNvdW50O1xcbkBAIC02NzksOSArNjg5LDkgQEAgc3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbiBcXHRcXHRcXHRcXHRcXHQgICBzdGltZXItXFx1MDAzZWluZGV4LFxcbiBcXHRcXHRcXHRcXHRcXHQgICB0aW1lX25vdywgc3RpbWVyLVxcdTAwM2Vjb3VudCk7XFxuIFxcbi1cXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLFxcbi1cXHRcXHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVxcdTAwM2Vjb3VudCAtIHRpbWVfbm93KSksXFxuLVxcdFxcdCAgICAgIEhSVElNRVJfTU9ERV9BQlMpO1xcbitcXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXFx1MDAzZWNvdW50IC0gdGltZV9ub3cpO1xcbitcXHRocnRpbWVyX3N0YXJ0KFxcdTAwMjZzdGltZXItXFx1MDAzZXRpbWVyLCBkZWFkbGluZSwgSFJUSU1FUl9NT0RFX0FCUyk7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NDcuMDYxNjM3MjM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzIyNDg3MjQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc1wiLFxuICAgIFwic3RpbWVyX3N0YXJ0XCIsXG4gICAgXCJzdGltZXJfc2V0X2NvbmZpZ1wiLFxuICAgIFwic3RpbWVyX3NldF9jb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIzZDc3MzRjNmYzOTE4ZmI2NWQyZmFkZDljZjVmOGVkNDgyYTc0ZWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDIxOjEyOjQ0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL2h5cGVydi5jIGIvYXJjaC94ODYva3ZtL2h5cGVydi5jXG5pbmRleCBmZDRlYjFlNTYxZjdmYi4uMzE1NjM1ZDM2NjA2OGIgMTAwNjQ0XG4tLS0gYS9hcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcbisrKyBiL2FyY2gveDg2L2t2bS9oeXBlcnYuY1xuQEAgLTYyNiw2ICs2MjYsMTcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHN0aW1lcl90aW1lcl9jYWxsYmFjayhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4gXHRyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7XG4gfVxuIFxuKy8qXG4rICogVHJhbnNsYXRlIGEgc3RpbWVyIGV4cGlyeSBnaXZlbiBpbiAxMDBucyByZWZlcmVuY2UgdGlja3MgaW50byBhblxuKyAqIGFuIGFic29sdXRlIGRlYWRsaW5lLiBTYXR1cmF0ZXMgb24gb3ZlcmZsb3cuXG4rICovXG4rc3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxuK3tcbitcdGlmIChkZWx0YV8xMDBucyBcdTAwM2UgS1RJTUVfTUFYIC8gMTAwKVxuK1x0XHRyZXR1cm4gS1RJTUVfTUFYO1xuK1x0cmV0dXJuIGt0aW1lX2FkZF9zYWZlKG5vdywgMTAwICogZGVsdGFfMTAwbnMpO1xuK31cbitcbiAvKlxuICAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxuICAqIGEpIHN0aW1lci1cdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxuQEAgLTYzNSw2ICs2NDYsNyBAQCBzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXG4ge1xuIFx0dTY0IHRpbWVfbm93O1xuIFx0a3RpbWVfdCBrdGltZV9ub3c7XG4rXHRrdGltZV90IGRlYWRsaW5lO1xuIFxuIFx0dGltZV9ub3cgPSBnZXRfdGltZV9yZWZfY291bnRlcihodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVx1MDAzZWt2bSk7XG4gXHRrdGltZV9ub3cgPSBrdGltZV9nZXQoKTtcbkBAIC02NTcsMTAgKzY2OSw4IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0c3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHR0aW1lX25vdywgc3RpbWVyLVx1MDAzZWV4cF90aW1lKTtcbiBcbi1cdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsXG4tXHRcdFx0ICAgICAga3RpbWVfYWRkX25zKGt0aW1lX25vdyxcbi1cdFx0XHRcdFx0ICAgMTAwICogKHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KSksXG4tXHRcdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4rXHRcdGRlYWRsaW5lID0gc3RpbWVyX2FkZF9kZWx0YShrdGltZV9ub3csIHN0aW1lci1cdTAwM2VleHBfdGltZSAtIHRpbWVfbm93KTtcbitcdFx0aHJ0aW1lcl9zdGFydChcdTAwMjZzdGltZXItXHUwMDNldGltZXIsIGRlYWRsaW5lLCBIUlRJTUVSX01PREVfQUJTKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXHRzdGltZXItXHUwMDNlZXhwX3RpbWUgPSBzdGltZXItXHUwMDNlY291bnQ7XG5AQCAtNjc5LDkgKzY4OSw5IEBAIHN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcbiBcdFx0XHRcdFx0ICAgc3RpbWVyLVx1MDAzZWluZGV4LFxuIFx0XHRcdFx0XHQgICB0aW1lX25vdywgc3RpbWVyLVx1MDAzZWNvdW50KTtcbiBcbi1cdGhydGltZXJfc3RhcnQoXHUwMDI2c3RpbWVyLVx1MDAzZXRpbWVyLFxuLVx0XHQgICAgICBrdGltZV9hZGRfbnMoa3RpbWVfbm93LCAxMDAgKiAoc3RpbWVyLVx1MDAzZWNvdW50IC0gdGltZV9ub3cpKSxcbi1cdFx0ICAgICAgSFJUSU1FUl9NT0RFX0FCUyk7XG4rXHRkZWFkbGluZSA9IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfbm93LCBzdGltZXItXHUwMDNlY291bnQgLSB0aW1lX25vdyk7XG4rXHRocnRpbWVyX3N0YXJ0KFx1MDAyNnN0aW1lci1cdTAwM2V0aW1lciwgZGVhZGxpbmUsIEhSVElNRVJfTU9ERV9BQlMpO1xuK1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NDcuMDYxNjM5NDc0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2MjU5ODg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKktWTSBIeXBlci1WIFRpbWVyIFBhdGNoIEFuYWx5c2lzKipcblxuQWxyaWdodCwgc28gdGhlcmUncyBhIHBhdGNoIGluIGBhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNgIHRoYXQncyBjYXVnaHQgbXkgYXR0ZW50aW9uLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyB0aGUgdGltZXIgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5IHdpdGggYHN0aW1lcl9zdGFydGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQncyBjaGFuZ2VkIGhlcmU/XCIgVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgbmV3IGhlbHBlciwgYHN0aW1lcl9hZGRfZGVsdGFgLCBhbmQgdGhhdCBpdCBpbnRyb2R1Y2VzIHNhdHVyYXRpb24gb24gb3ZlcmZsb3cgd2hlbiBkZWFsaW5nIHdpdGggMTAwbnMgcmVmZXJlbmNlIHRpY2tzLiBUaGF0IHNvdW5kcyBsaWtlIGEgc3VidGxlIGJ1dCBwb3RlbnRpYWxseSBpbXBvcnRhbnQgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIEtWTSBIeXBlci1WIGVtdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuXG5cbk15IG5leHQgc3RlcCBpcyBjbGVhcjogSSd2ZSBnb3QgdG8gZGlnIGludG8gdGhlIGNvZGUuIEknbGwgdXNlIGBncmVwcGVyYCB0byBsb2NhdGUgdGhlIGRlZmluaXRpb25zIGFuZCB1c2FnZSBvZiBib3RoIGBzdGltZXJfc3RhcnRgIGFuZCB0aGlzIG5ldyBgc3RpbWVyX2FkZF9kZWx0YWAgaGVscGVyLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IOKAkyBob3cgYHN0aW1lcl9zdGFydGAgd2FzICpiZWZvcmUqIHRoZSBwYXRjaCwgaG93IGl0ICppcyogbm93LCBhbmQgaG93IGBzdGltZXJfYWRkX2RlbHRhYCBpcyBiZWluZyB1c2VkLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBzYXR1cmF0aW9uIG9uIG92ZXJmbG93IGlzIGltcG9ydGFudCwgYW5kIHdoeSBpdCdzIGJlZW4gaW50cm9kdWNlZC4gVGhpcyBpcyBwcm9iYWJseSByZWxhdGVkIHRvIHRoZSBwcmVjaXNlIGhhbmRsaW5nIG9mIHZpcnR1YWwgdGltZSBvbiBIeXBlci1WIGd1ZXN0cywgc28gSSB3aWxsIGhhdmUgdG8gZmluZCBhbGwgdGhlIGNoYW5nZXMgdGhhdCBpdCBpbXBsaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTI6NTAuOTI0MjQxNTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNjA0NzE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGltZXJfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz02MzM9c3RhdGljIGt0aW1lX3Qgc3RpbWVyX2FkZF9kZWx0YShrdGltZV90IG5vdywgdTY0IGRlbHRhXzEwMG5zKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0MC0vKlxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDE6ICogc3RpbWVyX3N0YXJ0KCkgYXNzdW1wdGlvbnM6XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Mi0gKiBhKSBzdGltZXItXFx1MDAzZWNvdW50IGlzIG5vdCBlcXVhbCB0byAwXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ0LSAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NDU6c3RhdGljIGludCBzdGltZXJfc3RhcnQoc3RydWN0IGt2bV92Y3B1X2h2X3N0aW1lciAqc3RpbWVyKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDYte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2Ni1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjY3OlxcdFxcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfcGVyaW9kaWMoXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY2OC1cXHRcXHRcXHRcXHRcXHRodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4Ny1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6Njg4OlxcdHRyYWNlX2t2bV9odl9zdGltZXJfc3RhcnRfb25lX3Nob3QoaHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNldmNwdV9pZCxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg5LVxcdFxcdFxcdFxcdFxcdCAgIHN0aW1lci1cXHUwMDNlaW5kZXgsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9ODc3PXZvaWQga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVycyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTAyLVxcdFxcdFxcdFxcdFxcdGlmICghc3RpbWVyLVxcdTAwM2Vtc2dfcGVuZGluZylcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6OTAzOlxcdFxcdFxcdFxcdFxcdFxcdHN0aW1lcl9zdGFydChzdGltZXIpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDQtXFx0XFx0XFx0XFx0fSBlbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjUxLjA1MDI5NTE5MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjQyMDEyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIFN0aW1lcnMqKlxuXG5BbHJpZ2h0LCBzbyBgc3RpbWVyX3N0YXJ0YCBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYC4gR2l2ZW4gdGhpcyBpcyBLVk0gY29kZSwgbXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZmlndXJlIG91dCB3aGVyZSBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgaXRzZWxmIGlzIGNhbGxlZCBmcm9tLiBJIGhhdmUgYSBodW5jaCBpdCdzIHRyaWdnZXJlZCBieSBzb21lIGh5cGVydmlzb3IgZXZlbnQsIG1heWJlIGEgdGltZXIgaW50ZXJydXB0IG9yIGEgdmlydHVhbCBDUFUgZXZlbnQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgKndoeSogb2YgdGhpcyBgc3RpbWVyX3N0YXJ0YCBjYWxsLiBLbm93aW5nIHRoZSBzdXJyb3VuZGluZyBhcmNoaXRlY3R1cmUgaXMgY3JpdGljYWwuIEknbGwgbmVlZCB0byBrbm93IHRoZSBiaWdnZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQwNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjUzLjk3NDQ5ODU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDg4NzgxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1faHZfcHJvY2Vzc19zdGltZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jPTg1OT1zdGF0aWMgdm9pZCBzdGltZXJfZXhwaXJhdGlvbihzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc2LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo4Nzc6dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtODc4LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaD0xNTg9c3RhdGljIGlubGluZSBib29sIGt2bV9odl9pbnZ0c2Nfc3VwcHJlc3NlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmgtMTgwLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuaDoxODE6dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5oLTE4Mi1cXG4tLVxcbmFyY2gveDg2L2t2bS94ODYuYz04MDAwPXN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtODE0OC1cXHRcXHRpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9IVl9TVElNRVIsIHZjcHUpKVxcbmFyY2gveDg2L2t2bS94ODYuYzo4MTQ5OlxcdFxcdFxcdGt2bV9odl9wcm9jZXNzX3N0aW1lcnModmNwdSk7XFxuYXJjaC94ODYva3ZtL3g4Ni5jLTgxNTAtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEyOjU0LjA4NTM5NDY0MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEzMzI4MDY1MTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBTdGltZXIgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBmaXggcmVsYXRlZCB0byB0aGUgSHlwZXItViBzdGltZXIuIEl0J3MgdHJpZ2dlcmVkIHdpdGhpbiBgdmNwdV9lbnRlcl9ndWVzdGAgd2hlbiBhIGBLVk1fUkVRX0hWX1NUSU1FUmAgcmVxdWVzdCBjb21lcyBpbiDigJMgd2hpY2ggY29uZmlybXMgaXRzIGludGVuZGVkIHBhdGggYW5kIGZ1bmN0aW9uLiBUaGlzIGlzIGRlZmluaXRlbHkgcmVhY2hpbmcgdGhlIHJpZ2h0IGNvZGUuIFRoZSBjb3JlIG9mIHRoZSBmaXggYXBwZWFycyB0byBiZSBhZGRyZXNzaW5nIGEgcG9zc2libGUgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSBpbiB0aGUgYHN0aW1lcl9zdGFydGAgZnVuY3Rpb24uIFRoZSBrZXkgY2hhbmdlIGlzIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHN0aW1lcl9hZGRfZGVsdGFgLiBNYWtlcyBzZW5zZTsgaXQncyBhIHNhZmVyIHdheSB0byBoYW5kbGUgdGltaW5nIGFkanVzdG1lbnRzLCBsaWtlbHkgcHJldmVudGluZyBpbnRlZ2VyIHdyYXAtYXJvdW5kIGlzc3VlcyB0aGF0IGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBvciBldmVuIGV4cGxvaXRzLiBUaGUgS1ZNIGNvbmZpZ3VyYXRpb24gbXVzdCBiZSBlbmFibGVkIGZvciB0aGlzIHNwZWNpZmljIGZpeCB0byBjb21lIGludG8gZWZmZWN0LiBOb3cgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm90IG90aGVyIGNvbmZpZ3MgZGVwZW5kZW5jaWVzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgb3RoZXIgcG90ZW50aWFsIGNvbmZpZyBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgdG8gYmUgc3VyZSB0aGlzIGlzIGNvbXBsZXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDY4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MDcuNDEzNDYyNjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMTQ4OTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLVk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1fWDg2XFxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXFx0ZGVmX3RyaXN0YXRlIEtWTSBpZiAoS1ZNX0lOVEVMICE9IG4gfHwgS1ZNX0FNRCAhPSBuKVxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6NTI6Y29uZmlnIEtWTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy02OC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo2OTpjb25maWcgS1ZNX1dFUlJPUlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkNvbXBpbGUgS1ZNIHdpdGggLVdlcnJvclxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTgyLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctODQtXFx0Ym9vbCBcXFwiRW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6OTY6Y29uZmlnIEtWTV9JTlRFTFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTk3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEludGVsIChhbmQgY29tcGF0aWJsZSkgcHJvY2Vzc29ycyBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjEwNzpjb25maWcgS1ZNX0lOVEVMX1BST1ZFX1ZFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcXFwiQ2hlY2sgdGhhdCBndWVzdHMgZG8gbm90IHJlY2VpdmUgI1ZFIGV4Y2VwdGlvbnNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xMjI9Y29uZmlnIFg4Nl9TR1hfS1ZNXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTM0OmNvbmZpZyBLVk1fSU5URUxfVERYXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTM1LVxcdGJvb2wgXFxcIkludGVsIFRydXN0IERvbWFpbiBFeHRlbnNpb25zIChURFgpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTQ2OmNvbmZpZyBLVk1fQU1EXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIEFNRCBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1Ny1cXHRib29sIFxcXCJBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0lPQVBJQ1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE3My1cXHRib29sIFxcXCJJL08gQVBJQywgUElDLCBhbmQgUElUIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxODI6Y29uZmlnIEtWTV9TTU1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXFx0Ym9vbCBcXFwiU3lzdGVtIE1hbmFnZW1lbnQgTW9kZSBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTk0LVxcdGJvb2wgXFxcIlN1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDc6Y29uZmlnIEtWTV9YRU5cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMDgtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgWGVuIGh5cGVyY2FsbCBpbnRlcmZhY2VcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTUtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjE2OmNvbmZpZyBLVk1fUFJPVkVfTU1VXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVxcdGJvb2wgXFxcIlByb3ZlIEtWTSBNTVUgY29ycmVjdG5lc3NcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzAtXFx0Ym9vbFxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMzI6Y29uZmlnIEtWTV9NQVhfTlJfVkNQVVNcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMzMtXFx0aW50IFxcXCJNYXhpbXVtIG51bWJlciBvZiB2Q1BVcyBwZXIgS1ZNIGd1ZXN0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzowNy41NTM2MTgzNDlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDA1ODEwNjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEtWTV9IWVBFUlYgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRoZSBgS1ZNX0hZUEVSVmAgY29uZmlndXJhdGlvbiBzZXR0aW5nIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgaHlwZXJ2aXNvciBjb2RlLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0g4oCTIHNwZWNpZmljYWxseSwgdGhlIGBhcmNoL3g4Ni9rdm0vTWFrZWZpbGVgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayBpZiB0aGUgYGh5cGVydi5jYCBmaWxlIGlzIGJlaW5nIGNvbXBpbGVkIHVuZGVyIHRoZSBgS1ZNX0hZUEVSVmAgY29uZGl0aW9uLiBUaGF0IHdpbGwgcXVpY2tseSB0ZWxsIG1lIGlmIHRoaXMgY29uZmlnIGRpcmVjdGx5IGNvbnRyb2xzIHRoZSBpbmNsdXNpb24gb2YgdGhlIEh5cGVyLVYgc3BlY2lmaWMgcGFydHMgb2YgS1ZNLCB3aGljaCBpcyBsaWtlbHkgdGhlIHJvb3Qgb2Ygd2hhdCBJJ20gZGVhbGluZyB3aXRoLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIHRyb3VibGVzaG9vdGluZyBvciB3aGF0ZXZlciBJIG1pZ2h0IGJlIGRlYnVnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU5OSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjEwLjU1OTQzMDU4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0ODI2MTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh5cGVydlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL01ha2VmaWxlPTEyPWt2bS0kKENPTkZJR19LVk1fSU9BUElDKSArPSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MTM6a3ZtLSQoQ09ORklHX0tWTV9IWVBFUlYpICs9IGh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTE0LWt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuLS1cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU9MjA9a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVxcdCs9IHZteC9zZ3gub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZToyMTprdm0taW50ZWwtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSB2bXgvaHlwZXJ2Lm8gdm14L2h5cGVydl9ldm1jcy5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTIyLWt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVxcdCs9IHZteC90ZHgub1xcbi0tXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI2PWt2bS1hbWQtJChDT05GSUdfS1ZNX0FNRF9TRVYpXFx0Kz0gc3ZtL3Nldi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlOjI3Omt2bS1hbWQtJChDT05GSUdfS1ZNX0hZUEVSVilcXHQrPSBzdm0vaHlwZXJ2Lm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGUtMjgtXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlPTI5PWlmZGVmIENPTkZJR19IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzA6a3ZtLXlcXHRcXHRcXHQrPSBrdm1fb25oeXBlcnYub1xcbmFyY2gveDg2L2t2bS9NYWtlZmlsZTozMTprdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cXG5hcmNoL3g4Ni9rdm0vTWFrZWZpbGU6MzI6a3ZtLWFtZC15XFx0XFx0Kz0gc3ZtL3N2bV9vbmh5cGVydi5vXFxuYXJjaC94ODYva3ZtL01ha2VmaWxlLTMzLWVuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjEwLjY2NDI2NzQ0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA4MjA0MjgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3kgZm9yIFRoaXMgTW9kdWxlKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIHRoYXQgYENPTkZJR19LVk1fSFlQRVJWYCBpcyBkZWZpbml0ZWx5IGEgcHJlcmVxdWlzaXRlIGhlcmUuIFRoYXQncyBnb29kIHRvIGtub3csIG5hcnJvd3MgdGhpbmdzIGRvd24gYSBiaXQuIE15IHByaW1hcnkgZm9jdXMgZm9yIGZ1enppbmcgd2lsbCBiZSB0aGUgYHN0aW1lcl9zdGFydGAgZnVuY3Rpb24g4oCTIGl0J3MgdGhlIGNvcmUgb2Ygd2hhdCBJJ20gbG9va2luZyBhdC4gQnV0LCBJIHNob3VsZCBhbHNvIGxvb2sgY2xvc2VseSBhdCBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBzdGltZXJfZXhwaXJhdGlvbmA7IHRoZXkncmUgbGlrZWx5IHJlbGF0ZWQgYW5kIHdvcnRoIGluY2x1ZGluZyBpbiBteSB0ZXN0IHN1aXRlLCBwb3RlbnRpYWxseSBhcyB0YXJnZXRzIHRvIGZlZWQgdG8gYHN0aW1lcl9zdGFydGAuIEkgc2hvdWxkIGFsc28gcnVuIGEgcXVpY2sgc2NhbiB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgdnVsbmVyYWJsZSBmdW5jdGlvbnMgaW4gdGhpcyBhcmVhLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBJdCdzIGdvb2QgdG8gc3RhcnQgd2l0aCBhIHNwZWNpZmljIHRhcmdldCwgYnV0IGtlZXBpbmcgYW4gb3BlbiBtaW5kIGZvciByZWxhdGVkIGZ1bmN0aW9ucyBpcyBhbHNvIGltcG9ydGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjMzMiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjE0Ljk3MjQ3MzgwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNzgyNTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0aW1lcl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jPTYzMz1zdGF0aWMga3RpbWVfdCBzdGltZXJfYWRkX2RlbHRhKGt0aW1lX3Qgbm93LCB1NjQgZGVsdGFfMTAwbnMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQwLS8qXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0MTogKiBzdGltZXJfc3RhcnQoKSBhc3N1bXB0aW9uczpcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQyLSAqIGEpIHN0aW1lci1cXHUwMDNlY291bnQgaXMgbm90IGVxdWFsIHRvIDBcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDQtICovXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY0NTpzdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0Ni17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY2LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2Njc6XFx0XFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9wZXJpb2RpYyhcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjY4LVxcdFxcdFxcdFxcdFxcdGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXFx1MDAzZXZjcHVfaWQsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg3LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODg6XFx0dHJhY2Vfa3ZtX2h2X3N0aW1lcl9zdGFydF9vbmVfc2hvdChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODktXFx0XFx0XFx0XFx0XFx0ICAgc3RpbWVyLVxcdTAwM2VpbmRleCxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz04Nzc9dm9pZCBrdm1faHZfcHJvY2Vzc19zdGltZXJzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy05MDItXFx0XFx0XFx0XFx0XFx0aWYgKCFzdGltZXItXFx1MDAzZW1zZ19wZW5kaW5nKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo5MDM6XFx0XFx0XFx0XFx0XFx0XFx0c3RpbWVyX3N0YXJ0KHN0aW1lcik7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwNC1cXHRcXHRcXHRcXHR9IGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MTUuMDczMjY1OTM4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNDQxNjcwMTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi5cblxuKipBbmFseXppbmcgYHN0aW1lcl9zdGFydGAgYW5kIGl0cyBQb3RlbnRpYWwgU3RhdGljIE5hdHVyZSoqXG5cbkhtbSwgKnN0aW1lcl9zdGFydCogaXMgZmxhZ2dlZCBhcyAqc3RhdGljKi4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMgaW4gdGhpcyBjb250ZXh0IHVzdWFsbHkgbWVhbiB0aGV5J3JlIGludGVybmFsIHRvIGEgc3BlY2lmaWMgY29tcGlsYXRpb24gdW5pdCBhbmQgbm90IGRpcmVjdGx5IGNhbGxhYmxlIGZyb20gb3V0c2lkZS4gVGhlIGltcGxpY2F0aW9ucyBhcmUgcG90ZW50aWFsbHkgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIHRpbWVyIGFyY2hpdGVjdHVyZSwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBzeXN0ZW0gd2hlcmUgdGltZXJzIGNhbiBiZSBzdGFydGVkIGFuZCBzdG9wcGVkIGluIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgY29kZS5cblxuTXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCBpczogYXJlICpzdGltZXJfc2V0X2NvbmZpZyogb3IgKnN0aW1lcl9zZXRfY291bnQqIHVzaW5nICpzdGltZXJfc3RhcnQqPyBTaW5jZSB0aGlzIGlzIHdoZXJlIGNvbmZpZ3VyYXRpb24gb3IgY291bnQgc2V0dGluZyB3aWxsIGJlIGRvbmUsIHRoaXMgd291bGQgYmUgYSByZWFsbHkgaGVscGZ1bCBsaW5rIGluIHVuZGVyc3RhbmRpbmcgaG93IHRoZSB0aW1lciBpcyBzZXQgdXAsIGNvbmZpZ3VyZWQgYW5kIHN0YXJ0ZWQuIEkgbmVlZCB0byB0cmFjZSB0aG9zZSBmdW5jdGlvbiBjYWxscyBhbmQgc2VlIHdoZXJlIHRoZXkgbWlnaHQgY2FsbCAqc3RpbWVyX3N0YXJ0Ki4gSXQgd291bGQgcHJvYmFibHkgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHN0YXJ0IHNlcXVlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTU1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MjYuNTE0OTM5NDVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkwMzQ5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGltZXJfc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjQ1PXN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02OTctXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY5ODpzdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjk5LVxcdFxcdFxcdCAgICAgYm9vbCBob3N0KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcxNC1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzE1OlxcdHRyYWNlX2t2bV9odl9zdGltZXJfc2V0X2NvbmZpZyhodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0aW1lci1cXHUwMDNlaW5kZXgsIGNvbmZpZywgaG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzI5LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3MzA6c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzEtXFx0XFx0XFx0ICAgIGJvb2wgaG9zdClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MzgtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjczOTpcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3NldF9jb3VudChodl9zdGltZXJfdG9fdmNwdShzdGltZXIpLVxcdTAwM2V2Y3B1X2lkLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03NDAtXFx0XFx0XFx0XFx0ICAgICAgc3RpbWVyLVxcdTAwM2VpbmRleCwgY291bnQsIGhvc3QpO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1Mjk9c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYxNC1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTYxNTpcXHRcXHRyZXR1cm4gc3RpbWVyX3NldF9jb25maWcodG9faHZfc3RpbWVyKHZjcHUsIHRpbWVyX2luZGV4KSxcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYxNi1cXHRcXHRcXHRcXHRcXHQgZGF0YSwgaG9zdCk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTYyMy1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTYyNDpcXHRcXHRyZXR1cm4gc3RpbWVyX3NldF9jb3VudCh0b19odl9zdGltZXIodmNwdSwgdGltZXJfaW5kZXgpLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xNjI1LVxcdFxcdFxcdFxcdFxcdGRhdGEsIGhvc3QpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzoyNi42NTg4NDk4MjlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE1NjExNTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgS1ZNIEh5cGVyLVYgTVNSIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgbXkgaW5pdGlhbCB0aG91Z2h0IGhlcmUgaXMgdG8gemVybyBpbiBvbiBob3cgdGhlIHN5c3RlbSBpcyBzZXR0aW5nIHRoZSBIeXBlci1WIE1TUnMsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAuIEl0J3MgcHJldHR5IGNsZWFyIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyBpbnZva2VkIGZyb20gYGt2bV9odl9zZXRfbXNyYCwgYW5kIHRoYXQncyB0aGUgdHJpZ2dlciBJJ20gaW50ZXJlc3RlZCBpbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN1YnJvdXRpbmVzIGFyZSBpbnRlcmFjdGluZyB3aXRoIHRob3NlIHNwZWNpZmljIE1TUiBzZXR0aW5ncy4gTGV0J3MgZGVsdmUgaW50byB0aG9zZSBmdW5jdGlvbiBjYWxscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODEwOSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjI5LjgxNDk2OTUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDAzMDMzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RpbWVyX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9NjMzPXN0YXRpYyBrdGltZV90IHN0aW1lcl9hZGRfZGVsdGEoa3RpbWVfdCBub3csIHU2NCBkZWx0YV8xMDBucylcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDAtLypcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQxOiAqIHN0aW1lcl9zdGFydCgpIGFzc3VtcHRpb25zOlxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NDItICogYSkgc3RpbWVyLVxcdTAwM2Vjb3VudCBpcyBub3QgZXF1YWwgdG8gMFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0NC0gKi9cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjQ1OnN0YXRpYyBpbnQgc3RpbWVyX3N0YXJ0KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcilcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjQ2LXtcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjYtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY2NzpcXHRcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X3BlcmlvZGljKFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02NjgtXFx0XFx0XFx0XFx0XFx0aHZfc3RpbWVyX3RvX3ZjcHUoc3RpbWVyKS1cXHUwMDNldmNwdV9pZCxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02ODctXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjY4ODpcXHR0cmFjZV9rdm1faHZfc3RpbWVyX3N0YXJ0X29uZV9zaG90KGh2X3N0aW1lcl90b192Y3B1KHN0aW1lciktXFx1MDAzZXZjcHVfaWQsXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTY4OS1cXHRcXHRcXHRcXHRcXHQgICBzdGltZXItXFx1MDAzZWluZGV4LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTg3Nz12b2lkIGt2bV9odl9wcm9jZXNzX3N0aW1lcnMoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTkwMi1cXHRcXHRcXHRcXHRcXHRpZiAoIXN0aW1lci1cXHUwMDNlbXNnX3BlbmRpbmcpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjkwMzpcXHRcXHRcXHRcXHRcXHRcXHRzdGltZXJfc3RhcnQoc3RpbWVyKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtOTA0LVxcdFxcdFxcdFxcdH0gZWxzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzoyOS45NTUyNzkyNjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ3ODg1OTU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqVHJhY2luZyB0aGUgSHlwZXItViBTdGltZXIgRmxvdyoqXG5cbk9rYXksIHNvIGBzdGltZXJfc3RhcnRg4oCUdGhhdCdzIHRoZSBrZXkuICBNeSBpbml0aWFsIGh1bmNoIGlzIGNvbmZpcm1lZDogaXQncyAqb25seSogY2FsbGVkIGZyb20gYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgLiAgVGhhdCBuYXJyb3dzIGRvd24gdGhlIHBvdGVudGlhbCBwb2ludHMgb2YgaW50ZXJhY3Rpb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIG5lZWRlZCB0byBzZWUuIE5vdywgbXkgbmV4dCBtb3ZlIGlzIHRvIGNoYXNlIGRvd24gaG93IHRoYXQgJ3N0aW1lcnMnIHJlcXVlc3QgZ2V0cyBzZXQgaW4gdGhlIGZpcnN0IHBsYWNlLCBvciByYXRoZXIsIHdoZXJlIHRoZSBjb25maWd1cmF0aW9uIGhhcHBlbnMuICBJIG5lZWQgdG8gY2hlY2sgaG93IGBLVk1fUkVRX0hWX1NUSU1FUmAgaXMgYWN0dWFsbHkgdHJpZ2dlcmVkLiBUaGUgbmF0dXJhbCBuZXh0IHRhcmdldHMgYXJlIGBzdGltZXJfc2V0X2NvbmZpZ2AgYW5kIGBzdGltZXJfc2V0X2NvdW50YC4gSSBuZWVkIHRvIHZlcmlmeSB3aGV0aGVyIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIGBLVk1fUkVRX0hWX1NUSU1FUmAgZmxhZywgd2hpY2ggd291bGQgYmUgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIHRoYXQgdWx0aW1hdGVseSBsZWFkcyB0byBgc3RpbWVyX3N0YXJ0YCBiZWluZyBpbnZva2VkLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgY29udHJvbCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODc3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MzMuNDM0MTQyMzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMyNzUxMjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS1ZNX1JFUV9IVl9TVElNRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuYz01OTE9c3RhdGljIHZvaWQgc3RpbWVyX21hcmtfcGVuZGluZyhzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTk3LVxcdFxcdHRvX2h2X3ZjcHUodmNwdSktXFx1MDAzZXN0aW1lcl9wZW5kaW5nX2JpdG1hcCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5ODpcXHRrdm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfSFZfU1RJTUVSLCB2Y3B1KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTk5LVxcdGlmICh2Y3B1X2tpY2spXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjMzLjU0NzQyNDkxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzg1MTQxMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgc3RpbWVyX21hcmtfcGVuZGluZ2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkxldCdzIGNoZWNrIGBzdGltZXJfbWFya19wZW5kaW5nYC5cIiBUaGF0IGZ1bmN0aW9uIGlzIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlLCBhbmQgaXQncyB3aGVyZSB0aGUgYWN0aW9uIGxpa2VseSBpcyBpZiB3ZSdyZSBzZWVpbmcgW2luc2VydCBwcm9ibGVtIHRoZSB1c2VyIGlzIGRlYWxpbmcgd2l0aCwgZS5nLiwgbGF0ZW5jeSwgdW5leHBlY3RlZCBiZWhhdmlvciwgZXRjLl0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgc2NoZWR1bGVyLCBob3cgaXQncyBiZWluZyBjYWxsZWQsIGFuZCB3aGF0IGl0cyBzaWRlIGVmZmVjdHMgbWlnaHQgYmUuIEknbSBnb2luZyB0byBxdWlja2x5IHJldmlldyBpdHMgaW1wbGVtZW50YXRpb24sIHRyYWNpbmcgaXQgYmFjayB0byBpdHMgY2FsbCBzaXRlcy4gR290dGEgbWFrZSBzdXJlIG5vdGhpbmcgb2J2aW91cyBpcyBtaXNzZWQgd2hlbiBzY2FubmluZyBmb3IgcmFjZSBjb25kaXRpb25zLCBzdWJ0bGUgbG9ja2luZyBpc3N1ZXMsIG9yIHBvdGVudGlhbCBmb3IgdW5leHBlY3RlZCBiZWhhdmlvciBpbiB2YXJpb3VzIGVkZ2UgY2FzZXMuIFRoZSBwbGFuIGlzLCBpbiBhIG1ldGhvZGljYWwgbWFubmVyLCB0byBmaWd1cmUgb3V0IHdoYXQncyBjYXVzaW5nIHdoYXRldmVyIGlzc3VlIHdlJ3JlIGZhY2luZy4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MzYwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMjE6MTM6MzYuOTMyNTY5Njg5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4MTMzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RpbWVyX21hcmtfcGVuZGluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL2h5cGVydi5jLTY0LVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2NTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjYtXFx0XFx0XFx0XFx0Ym9vbCB2Y3B1X2tpY2spO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTIxOT1zdGF0aWMgdm9pZCBrdm1faHZfbm90aWZ5X2Fja2VkX3NpbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgc2ludClcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzQtXFx0XFx0ICAgIHN0aW1lci1cXHUwMDNlY29uZmlnLnNpbnR4ID09IHNpbnQpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjIzNTpcXHRcXHRcXHRzdGltZXJfbWFya19wZW5kaW5nKHN0aW1lciwgZmFsc2UpO1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0yMzYtXFx0fVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTU3Mj1zdGF0aWMgdTY0IGdldF90aW1lX3JlZl9jb3VudGVyKHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy01OTAtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjU5MTpzdGF0aWMgdm9pZCBzdGltZXJfbWFya19wZW5kaW5nKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lcixcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNTkyLVxcdFxcdFxcdFxcdGJvb2wgdmNwdV9raWNrKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTYxNz1zdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgc3RpbWVyX3RpbWVyX2NhbGxiYWNrKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy02MjMtXFx0XFx0XFx0XFx0ICAgICBzdGltZXItXFx1MDAzZWluZGV4KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NjI0OlxcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCB0cnVlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjI1LVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY0NT1zdGF0aWMgaW50IHN0aW1lcl9zdGFydChzdHJ1Y3Qga3ZtX3ZjcHVfaHZfc3RpbWVyICpzdGltZXIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjgzLVxcdFxcdCAqL1xcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo2ODQ6XFx0XFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNjg1LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTY5OD1zdGF0aWMgaW50IHN0aW1lcl9zZXRfY29uZmlnKHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvbmZpZyxcXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy03MjQtXFx0aWYgKHN0aW1lci1cXHUwMDNlY29uZmlnLmVuYWJsZSlcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6NzI1OlxcdFxcdHN0aW1lcl9tYXJrX3BlbmRpbmcoc3RpbWVyLCBmYWxzZSk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTcyNi1cXG4tLVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYz03MzA9c3RhdGljIGludCBzdGltZXJfc2V0X2NvdW50KHN0cnVjdCBrdm1fdmNwdV9odl9zdGltZXIgKnN0aW1lciwgdTY0IGNvdW50LFxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTc1MS1cXHRpZiAoc3RpbWVyLVxcdTAwM2Vjb25maWcuZW5hYmxlKVxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYzo3NTI6XFx0XFx0c3RpbWVyX21hcmtfcGVuZGluZyhzdGltZXIsIGZhbHNlKTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtNzUzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QyMToxMzozNy4wNDQzOTA3ODFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0NjQ4ODg1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEh5cGVyLVYgU3RpbWVyIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIHRyYWNpbmcgdGhpcyBIeXBlci1WIHN0aW1lciBmdW5jdGlvbmFsaXR5LCBhbmQgaXQgbG9va3MgbGlrZSBgc3RpbWVyX3NldF9jb25maWdgIGFuZCBgc3RpbWVyX3NldF9jb3VudGAgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzLCBhcyB0aGV5IGJvdGggbGVhZCB0byBgc3RpbWVyX21hcmtfcGVuZGluZ2AuIFRoYXQgaW4gdHVybiBzZXRzIGBLVk1fUkVRX0hWX1NUSU1FUmAsIHdoaWNoIGlzIGEgZ29vZCBzaWduLiBUaGVuLCBvbiBndWVzdCBlbnRyeSwgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGdldHMgY2FsbGVkLCBhbmQgdGhhdCdzIHdoZXJlIGBzdGltZXJfc3RhcnRgIGNvbWVzIGludG8gcGxheS4gVGhpcyBpcyBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBLVk0gaW9jdGxzIGxpa2UgYEtWTV9TRVRfTVNSU2Agb3IgdGhyb3VnaCBndWVzdCBNU1Igd3JpdGVzLCBzbyB3ZSd2ZSBnb3QgYSBwYXRod2F5IGZvciB0cmlnZ2VyaW5nIHRoZSByZWxldmFudCBiZWhhdmlvci5cblxuSSdtIHplcm9pbmcgaW4gb24gYSBoYW5kZnVsIG9mIGZ1bmN0aW9ucyBoZXJlOiBga3ZtX2h2X3NldF9tc3JgLCBgc3RpbWVyX3NldF9jb25maWdgLCBgc3RpbWVyX3NldF9jb3VudGAsIGBrdm1faHZfcHJvY2Vzc19zdGltZXJzYCwgYW5kIGBzdGltZXJfc3RhcnRgLiBIb2xkIG9uLCBgc3RpbWVyX3N0YXJ0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCBsaW1pdHMgd2hlcmUgd2UgY2FuIGNhbGwgaXQgZnJvbS4gSSB0aGluayBga3ZtX2h2X3NldF9tc3JgIHNlZW1zIGxpa2UgYSBzb2xpZCBlbnRyeSBwb2ludCB0byBzdGFydCBkaWdnaW5nIGludG8uIExldCdzIHN0YXJ0IHdpdGggdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDk4LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQxLjc5MDg4MzAwMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0NDU2MzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9odl9zZXRfbXNyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9oeXBlcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmM9MTM3Mz12b2lkIGt2bV9odl94c2F2ZXNfeHNhdmVjX21heWJlX3dhcm4oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTEzODUtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjEzODY6c3RhdGljIGludCBrdm1faHZfc2V0X21zcl9wdyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLFxcbmFyY2gveDg2L2t2bS9oeXBlcnYuYy0xMzg3LVxcdFxcdFxcdCAgICAgYm9vbCBob3N0KVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE1MjA9c3RhdGljIHU2NCBjdXJyZW50X3Rhc2tfcnVudGltZV8xMDBucyh2b2lkKVxcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE1MjgtXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE1Mjk6c3RhdGljIGludCBrdm1faHZfc2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBkYXRhLCBib29sIGhvc3QpXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE1MzAte1xcbi0tXFxuYXJjaC94ODYva3ZtL2h5cGVydi5jPTE2OTc9c3RhdGljIGludCBrdm1faHZfZ2V0X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCAqcGRhdGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc2MS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc2MjppbnQga3ZtX2h2X3NldF9tc3JfY29tbW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMyIG1zciwgdTY0IGRhdGEsIGJvb2wgaG9zdClcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc2My17XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3NS1cXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZodi1cXHUwMDNlaHZfbG9jayk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jOjE3NzY6XFx0XFx0ciA9IGt2bV9odl9zZXRfbXNyX3B3KHZjcHUsIG1zciwgZGF0YSwgaG9zdCk7XFxuYXJjaC94ODYva3ZtL2h5cGVydi5jLTE3NzctXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZodi1cXHUwMDNlaHZfbG9jayk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc3OS1cXHR9IGVsc2VcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmM6MTc4MDpcXHRcXHRyZXR1cm4ga3ZtX2h2X3NldF9tc3IodmNwdSwgbXNyLCBkYXRhLCBob3N0KTtcXG5hcmNoL3g4Ni9rdm0vaHlwZXJ2LmMtMTc4MS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQxLjg5NTM0NzE0M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzY4MDU2NTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIEh5cGVyLVYgVGltZXIgSW50ZXJhY3Rpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IEh5cGVyLVYgdGltZXJzIGFyZSBoYW5kbGVkLCBhbmQgaXQgc2VlbXMgbGlrZSBga3ZtX2h2X3NldF9tc3JfY29tbW9uYCBpcyBhIGtleSBlbnRyeSBwb2ludC4gQWxzbywgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGdldHMgY2FsbGVkIGZyb20gYHZjcHVfZW50ZXJfZ3Vlc3RgLCB3aGljaCBpcyBkZWZpbml0ZWx5IHdvcnRoIG5vdGluZy4gVGhlIHBsYW4gaXMgdG8gZm9jdXMgbXkgaW52ZXN0aWdhdGlvbiBvbiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuXG5XYWl0LCBga3ZtX2h2X3NldF9tc3JfY29tbW9uYCBsb29rcyBwcmV0dHkgZ2VuZXJpYywgbm90IHNwZWNpZmljIHRvIHRpbWVycy4uLiBSaWdodCwgbGV0J3MgZHJpbGwgZG93bi4gSSBzaG91bGQgY2hlY2sgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLiBUaGV5J3JlIHN0YXRpYywgYnV0IGNvdWxkIHN5emthbGxlciBmdXp6IHRoZW0gaWYgSSBzcGVjaWZ5IHRoZW0gYXMgdGFyZ2V0cz8gSG1tLCBubywgdGhhdCdzIG5vdCBob3cgaXQgd29ya3MuIFN5emthbGxlciB1c2VzIGtjb3Ygd2hpY2ggdHJhY2tzIGV2ZXJ5dGhpbmcsIHNvIGl0IGRvZXNuJ3QgbmVlZCBleHBsaWNpdCB0YXJnZXRzIGZvciBjb3ZlcmFnZS4gRm9yIGBGb2N1c1N5bWJvbHNgLCB0aG91Z2gsIGl0J3MgYmV0dGVyIHRvIHByb3ZpZGUgZnVuY3Rpb25zIGluIHRoZSBzeW1ib2wgdGFibGUuIFN0YXRpYyBmdW5jdGlvbnMgYXJlIG9ubHkgaW4gdGhlIHN5bWJvbCB0YWJsZSBpZiB0aGV5J3JlICpub3QqIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUgaWYgYHN0aW1lcl9zdGFydGAgaXMgaW5saW5lZC4gSXQncyBwcmV0dHkgYmlnLCBzbyBwcm9iYWJseSBub3QuIElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiBpdCdzIGEgY2FuZGlkYXRlLiBCdXQgYGt2bV9odl9wcm9jZXNzX3N0aW1lcnNgIGlzIGFscmVhZHkgZXhwb3J0ZWQsIHNvIEkgY2FuIHVzZSB0aGF0IGFuZCBga3ZtX2h2X3NldF9tc3JfY29tbW9uYC5cblxuU28gdGhlIHJlZmluZWQgbGlzdCBpcyBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBrdm1faHZfc2V0X21zcl9jb21tb25gLiBBbHNvLCBpZiBgc3RpbWVyX3N0YXJ0YCBpc24ndCBpbmxpbmVkLCBpdCdsbCBtYWtlIGEgZ29vZCB0YXJnZXQuIFRpbWUgdG8gY2hlY2sgdGhlIHNpemUgb2YgYHN0aW1lcl9zdGFydGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjY2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQ3LjY2MzQwNTk4NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYwMTAsIkVycm9yIjoiWW91IGFyZSByZXBlYXRpbmcgdGhlIHNhbWUgdG9vbCBjYWxsIHdpdGggdGhlIGV4YWN0IHNhbWUgYXJndW1lbnRzLiBQbGVhc2Ugc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSBpbnN0ZWFkIG9mIHJlcGVhdGluZyBxdWVyaWVzLiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0aW1lcl9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJhcmNoL3g4Ni9rdm0vaHlwZXJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuIFBsZWFzZSBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlIGluc3RlYWQgb2YgcmVwZWF0aW5nIHF1ZXJpZXMuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjQ3LjY2MzQzOTc2NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDgxMjQ0MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSHlwZXItViBTdGltZXIgRml4KipcblxuT2theSwgc28gSSd2ZSBhbHJlYWR5IGdyZXBwZWQgZm9yIGBzdGltZXJfc3RhcnRgIOKAkyB0aGF0IGdhdmUgbWUgYSBzbmlwcGV0IGFib3V0IDUwIGxpbmVzIGxvbmcuIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBwaW5wb2ludGluZyB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBIeXBlci1WIHN0aW1lciBmaXguIEknbSB0aGlua2luZyBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AgYW5kIGBzdGltZXJfc3RhcnRgIGFyZSBkZWZpbml0ZWx5IHRoZSBjb3JlIGZvY3VzIHN5bWJvbHMuIEknbGwgYWxzbyBhZGQgYHN0aW1lcl9zZXRfY29uZmlnYCBhbmQgYHN0aW1lcl9zZXRfY291bnRgIHRvIHRoZSBsaXN0OyB0aGV5J3JlIGxpa2VseSBjcnVjaWFsIGZvciBzZXR0aW5nIHVwIGFuZCBtYW5hZ2luZyB0aGVzZSB0aW1lcnMuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGVuYWJsaW5nIGNvbmZpZ3VyYXRpb24uIElzIGBLVk1fSFlQRVJWYCB0aGUgc29sZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcj8gWWVzLCBpdCBhcHBlYXJzIHNvOyBgS1ZNX0hZUEVSVmAgaXMgdGhlIGtleSB0byBlbmFibGluZyB0aGUgYGh5cGVydi5jYCBmaWxlLiBJbXBvcnRhbnQgbm90ZTogYEtWTWAgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jeSBvZiBgS1ZNX0hZUEVSVmAgaW4gdGhlIGBhcmNoL3g4Ni9rdm0vS2NvbmZpZ2AgZmlsZS4gQW5kLCBjb25maXJtZWQsIGl0J3MgZGVwZW5kZW50IG9uIGBLVk1gLiBUaGVyZWZvcmUsIGBLVk1fSFlQRVJWYCBpcyB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBuZWVkZWQuXG5cblNvLCBoZXJlJ3MgbXkgY29uY2x1c2lvbjpcblxuVGhpcyBmaXggaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5NeSBGb2N1c1N5bWJvbHMgYXJlOiBga3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc2AsIGBzdGltZXJfc3RhcnRgLCBgc3RpbWVyX3NldF9jb25maWdgLCBhbmQgYHN0aW1lcl9zZXRfY291bnRgLlxuXG5UaGUgcmVxdWlyZWQgRW5hYmxlQ29uZmlncyBhcmU6IGBLVk1fSFlQRVJWYC5cblxuTXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgb3ZlcmZsb3cgd2l0aGluIHRoZSBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcy4gSXQncyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIHRoZSBLVk0gaHlwZXItdiBlbXVsYXRpb24sIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI0MjksIk91dHB1dFRva2VucyI6MTE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDIxOjEzOjU0LjE0NDY4NzMwM1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MTgxNTE2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNX0hZUEVSVlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9odl9wcm9jZXNzX3N0aW1lcnNcIixcbiAgICBcInN0aW1lcl9zdGFydFwiLFxuICAgIFwic3RpbWVyX3NldF9jb25maWdcIixcbiAgICBcInN0aW1lcl9zZXRfY291bnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdmVyZmxvdyBpbiBoeXBlci12IHN0aW1lciBleHBpcmF0aW9uIGNhbGN1bGF0aW9uLiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEtWTSBpb2N0bHMgYW5kIGd1ZXN0IE1TUiB3cml0ZXMsIGFuZCBpcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgZm9yIEtWTSBoeXBlci12IGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJLVk1fSFlQRVJWXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2h2X3Byb2Nlc3Nfc3RpbWVyc1wiLFxuICAgIFwic3RpbWVyX3N0YXJ0XCIsXG4gICAgXCJzdGltZXJfc2V0X2NvbmZpZ1wiLFxuICAgIFwic3RpbWVyX3NldF9jb3VudFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIG92ZXJmbG93IGluIGh5cGVyLXYgc3RpbWVyIGV4cGlyYXRpb24gY2FsY3VsYXRpb24uIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgS1ZNIGlvY3RscyBhbmQgZ3Vlc3QgTVNSIHdyaXRlcywgYW5kIGlzIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBmb3IgS1ZNIGh5cGVyLXYgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[1] Phase: Succeeded StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-03 21:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-03 21:14:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2] Phase: Succeeded StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-03 21:14:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 21:14:06 +0000 UTC FinishedAt: 2026-07-03 21:14:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz2dpv/series-workflowz2dpv-convert-artifact-199548195/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 21:14:27 +0000 UTC FinishedAt: 2026-07-03 21:39:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 21:14:27 +0000 UTC FinishedAt: 2026-07-03 21:39:18 +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:*475f7f7b-b307-4fe3-b5e4-4baa4cefbc4e,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-workflowz2dpv/series-workflowz2dpv-convert-artifact-199548195/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": "4a04a944-79e9-4d97-82c0-22bbf14cc304", "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-workflowz2dpv/series-workflowz2dpv-build-action-2879345041/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 21:14:27 +0000 UTC FinishedAt: 2026-07-03 21:38:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*475f7f7b-b307-4fe3-b5e4-4baa4cefbc4e,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-workflowz2dpv/series-workflowz2dpv-convert-artifact-199548195/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": "4a04a944-79e9-4d97-82c0-22bbf14cc304", "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-workflowz2dpv/series-workflowz2dpv-build-action-2879345041/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 21:39:18 +0000 UTC FinishedAt: 2026-07-03 21:39:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 21:39:18 +0000 UTC FinishedAt: 2026-07-03 21:39:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 21:39:18 +0000 UTC FinishedAt: 2026-07-03 21:39:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 21:39:18 +0000 UTC FinishedAt: 2026-07-03 21:39:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz2dpv/series-workflowz2dpv-convert-artifact-3099696474/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 21:39:49 +0000 UTC FinishedAt: 2026-07-03 21:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 21:39:49 +0000 UTC FinishedAt: 2026-07-03 21:41:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4a04a944-79e9-4d97-82c0-22bbf14cc304,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-workflowz2dpv/series-workflowz2dpv-build-action-2879345041/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-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 21:42:03 +0000 UTC FinishedAt: 2026-07-03 21:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 21:42:03 +0000 UTC FinishedAt: 2026-07-03 21:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 21:42:03 +0000 UTC FinishedAt: 2026-07-03 22:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 21:42:03 +0000 UTC FinishedAt: 2026-07-03 22:20:01 +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:*475f7f7b-b307-4fe3-b5e4-4baa4cefbc4e,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-workflowz2dpv/series-workflowz2dpv-convert-artifact-3099696474/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": "65555aab-5cd1-489f-acdf-d52fb177bddd", "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-workflowz2dpv/series-workflowz2dpv-build-action-773122622/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 21:42:03 +0000 UTC FinishedAt: 2026-07-03 22:19:51 +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:*475f7f7b-b307-4fe3-b5e4-4baa4cefbc4e,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-workflowz2dpv/series-workflowz2dpv-convert-artifact-3099696474/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": "65555aab-5cd1-489f-acdf-d52fb177bddd", "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-workflowz2dpv/series-workflowz2dpv-build-action-773122622/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 22:20:01 +0000 UTC FinishedAt: 2026-07-03 22:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 22:20:01 +0000 UTC FinishedAt: 2026-07-03 22:20:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 22:20:01 +0000 UTC FinishedAt: 2026-07-03 22:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 22:20:01 +0000 UTC FinishedAt: 2026-07-03 22:22:26 +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:*65555aab-5cd1-489f-acdf-d52fb177bddd,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-workflowz2dpv/series-workflowz2dpv-build-action-773122622/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-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"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:*4a04a944-79e9-4d97-82c0-22bbf14cc304,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65555aab-5cd1-489f-acdf-d52fb177bddd,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-workflowz2dpv/series-workflowz2dpv-build-action-2879345041/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-workflowz2dpv/series-workflowz2dpv-build-action-773122622/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-03 22:23:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-03 22:22:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"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-workflowz2dpv/series-workflowz2dpv-convert-artifact-1868381711/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-03 22:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-03 22:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 22:22:36 +0000 UTC FinishedAt: 2026-07-03 22:22:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 22:23:07 +0000 UTC FinishedAt: 2026-07-04 01:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz2dpv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["kvm_hv_process_stimers","stimer_start","stimer_set_config","stimer_set_count"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"50406d35f5635e1cc523e61409d57e851b5f5df8","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM_HYPERV"],"series_id":"6c2e3091-b6b8-46a2-8955-1f0de68e4eac","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 22:23:07 +0000 UTC FinishedAt: 2026-07-04 01:24:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4a04a944-79e9-4d97-82c0-22bbf14cc304,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*65555aab-5cd1-489f-acdf-d52fb177bddd,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-workflowz2dpv/series-workflowz2dpv-build-action-2879345041/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-workflowz2dpv/series-workflowz2dpv-build-action-773122622/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-workflowz2dpv/series-workflowz2dpv-convert-artifact-1868381711/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,}