Name: series-workflowf5j4r Phase: Succeeded StartedAt: 2026-08-02 23:58:22 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[0] Phase: Succeeded StartedAt: 2026-08-02 23:58:22 +0000 UTC FinishedAt: 2026-08-03 00:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 23:58:22 +0000 UTC FinishedAt: 2026-08-03 00:01:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "632d1b7b-08f2-4e70-91f1-8c152c6aec78" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "taprio_change", "taprio_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwNjJhYTA2M2M1ZjY0MjA1NjdlZTNmZmYxYTAwYjFhY2M3ZGJiMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAwOjAwOjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTQwLDYgJiM0Mzs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbztcbiBcbiAjZGVmaW5lIFRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChmbGFncykgKChmbGFncykgXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpXG4gI2RlZmluZSBGVUxMX09GRkxPQURfSVNfRU5BQkxFRChmbGFncykgKChmbGFncykgXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX0ZVTExfT0ZGTE9BRClcbiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMIDUwMDAwIC8qIDUwIHVzICovXG4gI2RlZmluZSBUQVBSSU9fU1VQUE9SVEVEX0ZMQUdTIFxcXG4gXHQoVENBX1RBUFJJT19BVFRSX0ZMQUdfVFhUSU1FX0FTU0lTVCB8IFRDQV9UQVBSSU9fQVRUUl9GTEFHX0ZVTExfT0ZGTE9BRClcbiAjZGVmaW5lIFRBUFJJT19GTEFHU19JTlZBTElEIFUzMl9NQVhcbkBAIC05ODAsMTAgJiM0Mzs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4gXHR9XG4gXG4mIzQzO2ZpcnN0X3J1bjpcbiYjNDM7XHQvKiBDaGVjayBpZiB3ZSBmZWxsIGJlaGluZCBhbmQgYWR2YW5jZSB0aGUgc2NoZWR1bGUgbWF0aGVtYXRpY2FsbHkgKi9cbiYjNDM7XHRpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7XG4mIzQzO1x0XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbiYjNDM7XHRcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4mIzQzO1x0XHRzNjQgbjtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobGlrZWx5KGN5Y2xlKSkge1xuJiM0MztcdFx0XHRuID0gZGl2NjRfczY0KGt0aW1lX3N1Yl9ucyhub3csIGVuZF90aW1lKSwgY3ljbGUpO1xuJiM0MztcdFx0XHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbmRfdGltZSwgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1xuJiM0MztcdFx0XHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSAhPSBLVElNRV9NQVgpXG4mIzQzO1x0XHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuJiM0MztcdFx0XHRcdFx0XHRrdGltZV9hZGRfbnMobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuIFx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xuIFxuLWZpcnN0X3J1bjpcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuIFxuQEAgLTEwNjEsNiAmIzQzOzEwODMsMTEgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjYgaW50ZXJ2YWwgXHUwMDNjIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ludGVydmFsIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZ1wmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ZW50cnktXHUwMDNlaW50ZXJ2YWwgPSBpbnRlcnZhbDtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTExNzEsNiAmIzQzOzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogVEFQUklPX01JTl9TV19JTlRFUlZBTCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9faW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgdG8gbWF0aGVtYXRpY2FsbHkgYWR2YW5jZSB0aGUgc2NoZWR1bGUgaWYgaXQgZmFsbHMgYmVoaW5kLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDUFUgc3RhbGxzIG9yIGluZmluaXRlIGxvb3BzIGluIHRoZSBhZHZhbmNlX3NjaGVkIHRpbWVyIGNhbGxiYWNrLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSB0YXByaW8gcWRpc2MsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODA2MmFhMDYzYzVmNjQyMDU2N2VlM2ZmZjFhMDBiMWFjYzdkYmIwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDA6MDA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwppbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKQEAgLTQwLDYgJiM0Mzs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbzsKIAogI2RlZmluZSBUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQoZmxhZ3MpICgoZmxhZ3MpICZhbXA7IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpCiAjZGVmaW5lIEZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSAmYW1wOyBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMIDUwMDAwIC8qIDUwIHVzICovCiAjZGVmaW5lIFRBUFJJT19TVVBQT1JURURfRkxBR1MgXAogCShUQ0FfVEFQUklPX0FUVFJfRkxBR19UWFRJTUVfQVNTSVNUIHwgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKQogI2RlZmluZSBUQVBSSU9fRkxBR1NfSU5WQUxJRCBVMzJfTUFYCkBAIC05ODAsMTAgJiM0Mzs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwogCX0KIAomIzQzO2ZpcnN0X3J1bjoKJiM0MzsJLyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovCiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHsKJiM0MzsJCWt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpOwomIzQzOwkJa3RpbWVfdCBjeWNsZSA9IG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CQlzNjQgbjsKJiM0MzsKJiM0MzsJCWlmIChsaWtlbHkoY3ljbGUpKSB7CiYjNDM7CQkJbiA9IGRpdjY0X3M2NChrdGltZV9zdWJfbnMobm93LCBlbmRfdGltZSksIGN5Y2xlKTsKJiM0MzsJCQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbmRfdGltZSwgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CQkJb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUsCiYjNDM7CQkJCQkJCSAgICAobiAmIzQzOyAxKSAqIGN5Y2xlKTsKJiM0MzsKJiM0MzsJCQlmb3IgKHRjID0gMDsgdGMgJmx0OyBudW1fdGM7IHRjJiM0MzsmIzQzOykgewomIzQzOwkJCQlpZiAobmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSAhPSBLVElNRV9NQVgpCiYjNDM7CQkJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0KJiM0MzsJCQkJCQlrdGltZV9hZGRfbnMobmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSwKJiM0MzsJCQkJCQkJICAgICAobiAmIzQzOyAxKSAqIGN5Y2xlKTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAluZXh0LSZndDtlbmRfdGltZSA9IGVuZF90aW1lOwogCXRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTsKIAotZmlyc3RfcnVuOgogCXJjdV9hc3NpZ25fcG9pbnRlcihxLSZndDtjdXJyZW50X2VudHJ5LCBuZXh0KTsKIAlzcGluX3VubG9jaygmYW1wO3EtJmd0O2N1cnJlbnRfZW50cnlfbG9jayk7CiAKQEAgLTEwNjEsNiAmIzQzOzEwODMsMTEgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS0mZ3Q7ZmxhZ3MpICZhbXA7JmFtcDsgaW50ZXJ2YWwgJmx0OyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0ludGVydmFsIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJZW50cnktJmd0O2ludGVydmFsID0gaW50ZXJ2YWw7CiAKIAlyZXR1cm4gMDsKQEAgLTExNzEsNiAmIzQzOzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgbmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAl0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBuZXcgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCwgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxgLCBzZXQgdG8gNTAgbWljcm9zZWNvbmRzLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBzaWduaWZpY2FudCB0aGluZy4gTXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgaGFuZGxpbmcgb3ZlcmhlYWQgYW5kIHByZXZlbnRpbmcgdGhlIHNjaGVkdWxlciBmcm9tIHRyeWluZyB0byBkbyB0aGluZ3MgdG9vIGZyZXF1ZW50bHkgaW4gc29mdHdhcmUsIG1heWJlIHByZXZlbnRpbmcgZXhjZXNzaXZlIGNvbnRleHQgc3dpdGNoaW5nIG9yIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcuCgpUaGUgY29kZSBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgdGhpcyBpbnRlcnZhbCBpbiB0d28gcGxhY2VzLCBhbmQgdGhvc2UgY2hlY2tzIGFyZSBjb25kaXRpb25hbCBiYXNlZCBvbiBgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRURgICpub3QqIGJlaW5nIHNldC4gVGhhdCBtZWFucyB0aGlzIG1pbmltdW0gaW50ZXJ2YWwgaXMgb25seSBlbmZvcmNlZCB3aGVuIGhhcmR3YXJlIG9mZmxvYWQgaXNuJiMzOTt0IGJlaW5nIHVzZWQuIE9uZSBjaGVjayBpcyBvbiB0aGUgYGludGVydmFsYCBpdHNlbGYsIHRoZSBvdGhlciBsb29rcyBhdCBgbmV3LSZndDtjeWNsZV90aW1lYCBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgbXVsdGlwbGllZCBieSB0aGF0IGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBndWFyZHMgYWdhaW5zdCBzY2hlZHVsZXMgYmVpbmcgc2V0IHVwIHRoYXQgYXJlIHRvbyB0aWdodCBmb3IgdGhlIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZS4gSXQmIzM5O3MgYSBwcm90ZWN0aW9uIG1lY2hhbmlzbS4KClRoZSBmaW5hbCBrZXkgY2hhbmdlIGZvY3VzZXMgb24gYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBoaW50cyBhdCBoYW5kbGluZyBzaXR1YXRpb25zIHdoZXJlIHRoZSBzY2hlZHVsZXIgbWlnaHQgZmFsbCBiZWhpbmQuIFRoaXMgaXMgY3J1Y2lhbDsgaWYgaXQmIzM5O3MgbGFnZ2luZywgdGhlIGVudGlyZSBxdWFsaXR5IG9mIHNlcnZpY2UgdGhlIHNjaGVkdWxlciBpcyBzdXBwb3NlZCB0byBkZWxpdmVyIGNhbiBiZSBpbXBhY3RlZC4gU28sIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgaG93IGl0IGhhbmRsZXMgdGhlICYjMzQ7ZmFsbGluZyBiZWhpbmQmIzM0OyBtYXRoZW1hdGljYWxseS4gV2hhdCYjMzk7cyB0aGUgc3RyYXRlZ3k/IERvZXMgaXQgZHJvcCBwYWNrZXRzPyBEb2VzIGl0IGFkanVzdCB0aGUgc2NoZWR1bGUgZHluYW1pY2FsbHk/IERvZXMgaXQgcHJpb3JpdGl6ZSBjcml0aWNhbCB0cmFmZmljPwoKTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgc2NoX3RhcHJpby5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBGVUxMX09GRkxPQURfSVNfRU5BQkxFRGAgaXMgZGVmaW5lZCwgZm9yIHN0YXJ0ZXJzLiBXaGVyZSBpcyBgc2NoX3RhcHJpb2AgY29uZmlndXJlZD8gTGV0JiMzOTtzIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZvciBob3cgYHNjaF90YXByaW8ub2AgaXMgYnVpbHQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LCBhbmQgSSBjYW4gc3RhcnQgdGhlcmUgdG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX3RhcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVx0JiM0Mzs9IHNjaF9ldGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcdCYjNDM7PSBzY2hfdGFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEZXBlbmRlbmNpZXMgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIEkmIzM5O20gbG9va2luZyBhdCBpcyBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgY29udGV4dCwgYnV0IG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoaXMgc3BlY2lmaWMgc2V0dGluZyBoYXMgYW55IGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiBgTkVUX1NDSF9UQVBSSU9gJiMzOTtzIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIG90aGVyIG9wdGlvbnMgYmVpbmcgZW5hYmxlZCBvciBwcm9wZXJseSBjb25maWd1cmVkLiBBdm9pZGluZyBvdmVybG9va2luZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBzYXZlIG1lIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lIGFuZCBlbnN1cmUgYSByb2J1c3QgYW5kIGZ1bmN0aW9uYWwgb3V0Y29tZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbmVlZHMgY29uc2lkZXJhdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkVUX1NDSF9UQVBSSU8gS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwbGFjZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBoaWVyYXJjaHkuIFdoZXJlIGRvZXMgaXQgZml0PyBJcyBpdCB1bmRlciBhIG1vcmUgZ2VuZXJpYyBgTkVUX1NDSGAgdW1icmVsbGEsIG9yIGlzIGl0IG1vcmUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyYWwgb3IgcHJvdG9jb2wgZmVhdHVyZSBzZXQ/IEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzOiBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBsaWtlIHRpbWVzdGFtcGluZyBvciBwYXJ0aWN1bGFyIEV0aGVybmV0IGNvbnRyb2xsZXJzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGVycywgb3IgYXJlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGRlc2lnbmVkIGZvciBjb21wYXRpYmlsaXR5PwoKSSYjMzk7bSBtZW50YWxseSBtYXBwaW5nIHRoZSByZWxldmFudCBgI2lmZGVmYCBibG9ja3MuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgY29uZGl0aW9ucyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIGl0LiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gaXNzdWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHJlZ2FyZGluZyBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMgb3IgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnM/IEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IHdoYXQgb3RoZXIgZmVhdHVyZXMvb3B0aW9ucyBoYXZlIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIHRhcHJpbyB0byBiZSBhdmFpbGFibGUuIEFsc28sIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IGNvbW1lbnRhcnkgdGhhdCBwcm92aWRlcyBjb250ZXh0IG9yIGRlc2lnbiBpbnRlbnQuIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGVuYWJsaW5nIHRoaXMgc2NoZWR1bGVyPwoKTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNvbmZpZ3VyYXRpb246IFdoYXQgbGV2ZWwgb2YgZ3JhbnVsYXIgY29udHJvbCBkbyBJIGhhdmUgb3ZlciBpdHMgcGFyYW1ldGVycz8gQXJlIHRoZXJlIHJ1bnRpbWUgdHVuYWJsZXMgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzIG9yIG5ldGxpbmssIG9yIGlzIGl0IGFsbW9zdCBlbnRpcmVseSBjb21waWxlLXRpbWUgY29uZmlndXJlZD8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaGludHMgb24gdHlwaWNhbCB1c2FnZSBzY2VuYXJpb3MuIElzIHRoaXMgc2NoZWR1bGVyIHByaW1hcmlseSBmb3IgVFNOIChUaW1lLVNlbnNpdGl2ZSBOZXR3b3JraW5nKSBlbnZpcm9ubWVudHMsIG9yIGRvZXMgaXQgaGF2ZSBicm9hZGVyIGFwcGxpY2FiaWxpdHk/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHJlZmVyZW5jZXM/IEkmIzM5O20gcXVpY2tseSBmaWx0ZXJpbmcgZm9yIGFueXRoaW5nIHRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYE5FVF9TQ0hfVEFQUklPYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuIDE4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXG4gMTg4Olx0XHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcbiAxODk6XHRcdCAgKHNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1x1MDAzZSBmb3IgZGV0YWlscyBhbmRcbiAxOTA6XHRcdCAgcmVmZXJlbmNlcyBhYm91dCB0aGUgYWxnb3JpdGhtKS5cbiAxOTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBUYXByaW8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gem9vbSBpbiBvbiB0aGUgY29yZSBvZiB0aGUgY2hhbmdlcywgd2hpY2ggc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIGZ1bmN0aW9ucyBgYWR2YW5jZV9zY2hlZGAsIGBmaWxsX3NjaGVkX2VudHJ5YCwgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgaW5zdGluY3RpdmVseSBrbm93IHRoYXQgdGhlc2UgYXJlIGxpa2VseSB0aGUgaGVhcnQgb2YgdGhlIHNjaGVkdWxpbmcgbW9kaWZpY2F0aW9ucywgYW5kIHNvIEkgc2hvdWxkIGFkZCB0aGVtIHRvIG15IG1lbnRhbCBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgLgoKTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBpcyBpbiBvcmRlci4gQW5kIHllcCwgaXQgYXBwZWFycyB0aGV5IGFsbCBhcmU6IGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGFsbCBmbGFnZ2VkIGFzIHN0YXRpYy4gT2theSwgdGhhdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgZG9lcyBtZWFuIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSWYgdGhleSYjMzk7cmUgaW5saW5lZCwgdGhleSBtaWdodCBub3QgbGVhdmUgdGhlIHN5bWJvbHMgYXMgYSB0cmFjZS4gSW5saW5pbmcgd291bGQgaGlkZSB0aGVpciB0cnVlIGRlcGVuZGVuY3kuCgpTbywgbmV4dCBzdGVwOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzLCB0aGF0IGNhbGwgdGhlc2UgZnVuY3Rpb25zLiBUaG9zZSBhcmUgdGhlIGtleSB0YXJnZXRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGFjdCBvZiB0aGUgcGF0Y2guIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byB0cmFjayBkb3duIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgaW4gYSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhcnNlX3RhcHJpb19zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMTE1PXN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE1NTpzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTYtXHRcdFx0XHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg1MD1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5NDQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NDU6XHRlcnIgPSBwYXJzZV90YXByaW9fc2NoZWR1bGUocSwgdGIsIG5ld19hZG1pbiwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk0Ni1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMDQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gU2NoZWR1bGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgZW50cnkgcG9pbnQgZm9yIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIFRBUFJJTyBzY2hlZHVsZSDigJMgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zICp3aXRoaW4qIHRoYXQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBtb3N0IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsZSBlbnRyaWVzIGFyZSBhY3R1YWxseSBwb3B1bGF0ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBzY2hlZHVsaW5nIGlzIGxpa2VseSB0byByZXNpZGUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGV4YW1pbmluZyB0aGUgYGZpbGxfc2NoZWRfZW50cnlgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBzY2hlZHVsZSBpcyBiZWluZyBwb3B1bGF0ZWQgYWZ0ZXIgdGhlIHBhcnNpbmcuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIGNvbnN0cnVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWxsX3NjaGVkX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRhcHJpb19wb2xpY3lbVENBX1RBUFJJT19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNTk6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA2MC1cdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwOTY9c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExMjpcdHJldHVybiBmaWxsX3NjaGVkX2VudHJ5KHEsIHRiLCBlbnRyeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgVGFwcmlvIFNjaGVkdWxlIFBhcnNpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhpcyBgdGFwcmlvX2NoYW5nZWAgZnVuY3Rpb24gaXMgd29ya2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc2NoZWR1bGluZyBsb2dpYy4gVGhlIGNhbGwgc3RhY2sgSSBzZWUgaXM6IGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCwgd2hpY2ggdGhlbiBjYWxscyBgcGFyc2Vfc2NoZWRfbGlzdGAuIFRoYXQgaW4gdHVybiBjYWxscyBgcGFyc2Vfc2NoZWRfZW50cnlgLiBBbmQgZmluYWxseSwgd2UgZ2V0IHRvIGBmaWxsX3NjaGVkX2VudHJ5YC4gVGhhdCYjMzk7cyB0aGUgY29yZSwgdGhlbi4gTm93LCB3aGVyZSBkb2VzIGBhZHZhbmNlX3NjaGVkYCBmaXQgaW50byBhbGwgdGhpcz8gSSYjMzk7ZCBiZXR0ZXIgdHJhY2UgdGhhdCBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg4NT1zdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkxOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTE5OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NTA9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg0LVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODU6XHRcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBxLVx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg2LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwMy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjAwNDpcdFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDA1LVx0XHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cdTAwM2VhZG1pbl9zY2hlZCwgbmV3X2FkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjAxMjpcdFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMy1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIwOTk9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEwNy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjEwODpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBDTE9DS19UQUksIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTA5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTc5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBTY2hlZHVsaW5nIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzY2hlZHVsaW5nIGNvZGUuLi4gYGFkdmFuY2Vfc2NoZWRgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyB0aW1lciBjYWxsYmFjaywgbm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZS4gVGhlIHJlYWwgbWVhdCBpcyBpbiB0aGUgZW50cnkgcG9pbnRzLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHRoZSBvbmVzIHRoYXQganVtcCBvdXQgYXQgbWUgYXMgdGhlIG1haW4gc3RhcnRpbmcgcG9pbnRzIGZvciB0aGUgd2hvbGUgc2NoZWR1bGluZyBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzOiAqQXJlIHRoZXNlIHRoZSBvbmx5IGVudHJ5IHBvaW50cz8qIFRoZXJlJiMzOTtzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgb2Ygc3VidGxlIGludGVyYWN0aW9ucyBvciBhbHRlcm5hdGl2ZSBpbml0aWFsaXphdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGltbWVkaWF0ZWx5IG9idmlvdXMuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSB0aGlzIOKAkyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgaGlkZGVuIGZ1bmN0aW9ucyB0aGF0IG1heSBmZWVkIGludG8gdGhlIGNvcmUgcHJvY2Vzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4MzA9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg0OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg1MDpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg1MS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjA5OT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTEyLVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTEzOlx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjExNC1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE2MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE2MTpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTYyLX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1NzQ9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OC1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1Nzk6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4MC1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRBUFJJTyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFRBUFJJTyBwYXRjaCBhbmQgZmlndXJpbmcgb3V0IHRoZSBiZXN0IGZ1enppbmcgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgY29uZmlndXJpbmcgdGhlIHNjaGVkdWxlci4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBzbWFsbCBpbnRlcnZhbHMgY291bGQgbGVhZCB0byBlbmRsZXNzIGxvb3BzIG9yIGhpZ2ggQ1BVIHVzYWdlIGluIGBhZHZhbmNlX3NjaGVkYC4gVGhlIGZpeCBpbmNsdWRlcyBhIG1hdGhlbWF0aWNhbCBhZGp1c3RtZW50IGluIGBhZHZhbmNlX3NjaGVkYCB0byBoYW5kbGUgc2NoZWR1bGluZyBkZWxheXMsIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBzdGFiaWxpdHkuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHBhdGNoIHdvcnRoIGZ1enppbmcgYWdncmVzc2l2ZWx5LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgZXhwb3NlIHRoZSBjb25maWd1cmF0aW9uIHBhcnNpbmcgbG9naWMuIGBhZHZhbmNlX3NjaGVkYCBpdHNlbGYgaXMgYSB0aW1lciBjYWxsYmFjaywgc28gbm90IGRpcmVjdGx5IHRyaWdnZXJlZCBieSBhIHN5c2NhbGwsIGJ1dCBieSB0aGUgY29uZmlnLiBGdXp6aW5nIHRoZSBjb25maWcgaXMga2V5LiBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgKmNvdWxkKiBiZSByZWxldmFudCwgYnV0IGdpdmVuIHRoZSBwYXRjaCYjMzk7cyBmb2N1cywgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucy4KClRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCB0aW1lciBjYWxsYmFjaywgYnV0IHNpbmNlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBhZGQgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4gSWYgdGhlIGZ1enplciBhbGxvd3MgdGltZXIgaG9va3MgKHN5emthbGxlciBjYW4gc29tZXRpbWVzIGRvIGl0LCB0aG91Z2ggc3lzY2FsbCBlbnRyeSBwb2ludHMgYXJlIGdlbmVyYWxseSBiZXR0ZXIpLCBJIGNvdWxkIGFsc28gYWRkIGBhZHZhbmNlX3NjaGVkYCwgYnV0IEkmIzM5O2xsIGFkZCBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgZmlyc3QsIHRvIGtlZXAgaXQgc2ltcGxlLgoKRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgY29uZmlnIGlzIGNvcnJlY3QuIGBORVRfU0NIX1RBUFJJT2AgZGVwZW5kcyBvbiBgTkVUX1NDSF9NUVBSSU9fTElCYCBhbmQgaXMgdW5kZXIgYE5FVF9TQ0hFRGAgaW4gYG1lbnVjb25maWdgLiBTbyBgTkVUX1NDSEVEYCBoYXMgdG8gYmUgZW5hYmxlZC4gSSB3aWxsIG5lZWQgdG8gdmVyaWZ5IHRoaXMgaW4gdGhlIGtlcm5lbCBjb25maWcgYmVmb3JlIEkgc3RhcnQgZnV6emluZy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgcHJvcGVybHkgYW5kIHRoZW4gSSYjMzk7bGwgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTYyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBzY2hlZHVsaW5nLCB3aGljaCBuYXR1cmFsbHkgYnJpbmdzIGBORVRfU0NIRURgIHRvIG1pbmQg4oCTIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW1tZWRpYXRlbHkgaXM6ICp3aGF0IGFib3V0KiBgTkVUX1NDSF9UQVBSSU9gPyBHaXZlbiB0aGUgcG90ZW50aWFsIHJlcXVpcmVtZW50cyBmb3IgdHJhZmZpYyBzaGFwaW5nIGFuZCBwcmlvcml0eSBoYW5kbGluZywgSSYjMzk7ZCB3YW50IHRvIHVuZGVyc3RhbmQgaWYgd2UgbmVlZCB0aGUgcHJlY2lzaW9uIGFuZCBjYXBhYmlsaXRpZXMgdGhhdCBUQVBSSU8gb2ZmZXJzLiBXZSBzaG91bGQgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IFRBUFJJTyBjb21wYXJlcyB0byBzaW1wbGVyIHNjaGVkdWxpbmcgbWV0aG9kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfVEFQUklPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM3CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDYwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCByZWxhdGVkIHRvIFRBUFJJTyBzY2hlZHVsaW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGlzc3VlIHdpdGggc21hbGwgaW50ZXJ2YWxzLCBsaWtlbHkgcmVsYXRlZCB0byBzb2Z0d2FyZSBzY2hlZHVsaW5nLiBUaGUgY29uZmlncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhIGtleSBjaGVjayB3aXRoaW4gYGZpbGxfc2NoZWRfZW50cnlgOgoKYGBgYwomIzQzOwlpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7IGludGVydmFsICZsdDsgVEFQUklPX01JTl9TV19JTlRFUlZBTCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmcmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQpgYGAKClRoaXMgbWFrZXMgc3VyZSB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCBpcyBzZW5zaWJsZSB3aGVuIHNvZnR3YXJlIHNjaGVkdWxpbmcgaXMgaW4gdXNlLiBUaGVyZSYjMzk7cyBhIHNpbWlsYXIgY2hlY2sgaW4gYHBhcnNlX3RhcHJpb19zY2hlZHVsZWA6CgpgYGBjCiYjNDM7CWlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS0mZ3Q7ZmxhZ3MpICZhbXA7JmFtcDsKJiM0MzsJICAgIG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CmBgYAoKVGhpcyBvbmUgZm9jdXNlcyBvbiBgY3ljbGVfdGltZWAuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBjeWNsZSB0aW1lIGlzIHNhbmUuIFRoZSB0aGlyZCBwaWVjZSwgZm91bmQgaW4gYGFkdmFuY2Vfc2NoZWRgLCBpbnZvbHZlcyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgc2NoZWR1bGUgJiMzNDtmYWxscyBiZWhpbmQmIzM0OzoKCmBgYGMKJiM0MztmaXJzdF9ydW46CiYjNDM7CS8qIENoZWNrIGlmIHdlIGZlbGwgYmVoaW5kIGFuZCBhZHZhbmNlIHRoZSBzY2hlZHVsZSBtYXRoZW1hdGljYWxseSAqLwomIzQzOwlpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7CiYjNDM7CQlrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTsKJiM0MzsJCWt0aW1lX3QgY3ljbGUgPSBvcGVyLSZndDtjeWNsZV90aW1lOwomIzQzOwkJczY0IG47CiYjNDM7CiYjNDM7CQlpZiAobGlrZWx5KGN5Y2xlKSkgewomIzQzOwkJCW4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7CiYjNDM7CQkJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW5kX3RpbWUsIChuICYjNDM7IDEpICogY3ljbGUpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CiYjNDM7CQkJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKJiM0MzsJCQkJaWYgKG5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKQomIzQzOwkJCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9CiYjNDM7CQkJCQkJa3RpbWVfYWRkX25zKG5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10sCiYjNDM7CQkJCQkJCSAgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CQkJfQomIzQzOwkJfQomIzQzOwl9CmBgYAoKVGhpcyBsb29rcyBsaWtlIHRoZSBjb3JlIGxvZ2ljIHRvIHByZXZlbnQgYSBDUFUgc3RhbGwgb3IgaW5maW5pdGUgbG9vcC4gSWYgdGhlIGN1cnJlbnQgdGltZSBoYXMgcGFzc2VkIHRoZSBzY2hlZHVsZWQgZW5kIHRpbWUsIGl0IG1hdGhlbWF0aWNhbGx5IGFkdmFuY2VzIHRoZSBzY2hlZHVsZSBieSBhZGRpbmcgbXVsdGlwbGVzIG9mIHRoZSBjeWNsZSB0aW1lLgoKU28sIHRoZSBvdmVyYWxsIGltcGFjdCBpcyBmdW5jdGlvbmFsLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBhZGRpbmcgc29tZSBjaGVja3Mgb24gY29uZmlndXJhdGlvbiB2YWx1ZXMgdG8gYXZvaWQgaXNzdWVzLiBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcyBjaGFuZ2UuIExldCBtZSBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjI5LjQ2NzAyODA1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIzOTI3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjI5LjQ2NzAzMzY3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5NTM3ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODA2MmFhMDYzYzVmNjQyMDU2N2VlM2ZmZjFhMDBiMWFjYzdkYmIwNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAwOjAwOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuaW5kZXggMjk5MjM0YTVmMGZlNi4uNjQ2MDBmM2JjMzM4ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbkBAIC00MCw2ICs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbztcXG4gXFxuICNkZWZpbmUgVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpXFxuICNkZWZpbmUgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQoZmxhZ3MpICgoZmxhZ3MpIFxcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKVxcbisjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUwgNTAwMDAgLyogNTAgdXMgKi9cXG4gI2RlZmluZSBUQVBSSU9fU1VQUE9SVEVEX0ZMQUdTIFxcXFxcXG4gXFx0KFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QgfCBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpXFxuICNkZWZpbmUgVEFQUklPX0ZMQUdTX0lOVkFMSUQgVTMyX01BWFxcbkBAIC05ODAsMTAgKzk4MSwzMSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdGVuZF90aW1lID0gbmV4dC1cXHUwMDNlZW5kX3RpbWU7XFxuIFxcdH1cXG4gXFxuK2ZpcnN0X3J1bjpcXG4rXFx0LyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovXFxuK1xcdGlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHtcXG4rXFx0XFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuK1xcdFxcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVxcdTAwM2VjeWNsZV90aW1lO1xcbitcXHRcXHRzNjQgbjtcXG4rXFxuK1xcdFxcdGlmIChsaWtlbHkoY3ljbGUpKSB7XFxuK1xcdFxcdFxcdG4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7XFxuK1xcdFxcdFxcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVuZF90aW1lLCAobiArIDEpICogY3ljbGUpO1xcbitcXHRcXHRcXHRvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIChuICsgMSkgKiBjeWNsZSk7XFxuK1xcbitcXHRcXHRcXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4rXFx0XFx0XFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKVxcbitcXHRcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cXG4rXFx0XFx0XFx0XFx0XFx0XFx0a3RpbWVfYWRkX25zKG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKG4gKyAxKSAqIGN5Y2xlKTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdG5leHQtXFx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XFxuIFxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcXG4gXFxuLWZpcnN0X3J1bjpcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cS1cXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcXG4gXFxuQEAgLTEwNjEsNiArMTA4MywxMSBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjYgaW50ZXJ2YWwgXFx1MDAzYyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGVudHJ5LVxcdTAwM2VpbnRlcnZhbCA9IGludGVydmFsO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTExNzEsNiArMTE5OCwxMiBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmV3LVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2MgbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMocSwgbmV3KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDoyOS44ODczNDk0NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjEwMzU5NTgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgdG8gbWF0aGVtYXRpY2FsbHkgYWR2YW5jZSB0aGUgc2NoZWR1bGUgaWYgaXQgZmFsbHMgYmVoaW5kLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDUFUgc3RhbGxzIG9yIGluZmluaXRlIGxvb3BzIGluIHRoZSBhZHZhbmNlX3NjaGVkIHRpbWVyIGNhbGxiYWNrLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSB0YXByaW8gcWRpc2MsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MDYyYWEwNjNjNWY2NDIwNTY3ZWUzZmZmMWEwMGIxYWNjN2RiYjA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMDowMDoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTQwLDYgKzQwLDcgQEAgc3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xuIFxuICNkZWZpbmUgVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfVFhUSU1FX0FTU0lTVClcbiAjZGVmaW5lIEZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKVxuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTCA1MDAwMCAvKiA1MCB1cyAqL1xuICNkZWZpbmUgVEFQUklPX1NVUFBPUlRFRF9GTEFHUyBcXFxuIFx0KFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QgfCBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpXG4gI2RlZmluZSBUQVBSSU9fRkxBR1NfSU5WQUxJRCBVMzJfTUFYXG5AQCAtOTgwLDEwICs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4gXHR9XG4gXG4rZmlyc3RfcnVuOlxuK1x0LyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovXG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7XG4rXHRcdGt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuK1x0XHRrdGltZV90IGN5Y2xlID0gb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuK1x0XHRzNjQgbjtcbitcbitcdFx0aWYgKGxpa2VseShjeWNsZSkpIHtcbitcdFx0XHRuID0gZGl2NjRfczY0KGt0aW1lX3N1Yl9ucyhub3csIGVuZF90aW1lKSwgY3ljbGUpO1xuK1x0XHRcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVuZF90aW1lLCAobiArIDEpICogY3ljbGUpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbitcdFx0XHRcdFx0XHRcdCAgICAobiArIDEpICogY3ljbGUpO1xuK1xuK1x0XHRcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YysrKSB7XG4rXHRcdFx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdICE9IEtUSU1FX01BWClcbitcdFx0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cbitcdFx0XHRcdFx0XHRrdGltZV9hZGRfbnMobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdLFxuK1x0XHRcdFx0XHRcdFx0ICAgICAobiArIDEpICogY3ljbGUpO1xuK1x0XHRcdH1cbitcdFx0fVxuK1x0fVxuK1xuIFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuIFx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xuIFxuLWZpcnN0X3J1bjpcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuIFxuQEAgLTEwNjEsNiArMTA4MywxMSBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGludGVydmFsIFx1MDAzYyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSW50ZXJ2YWwgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGVudHJ5LVx1MDAzZWludGVydmFsID0gaW50ZXJ2YWw7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC0xMTcxLDYgKzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4rXHQgICAgbmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCInY3ljbGVfdGltZScgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMocSwgbmV3KTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MjkuODg3MzUxMTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNjc1NTczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIGludHJvZHVjaW5nIGEgbmV3IG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwsIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYCwgc2V0IHRvIDUwIG1pY3Jvc2Vjb25kcy4gVGhhdCdzIHRoZSBmaXJzdCBzaWduaWZpY2FudCB0aGluZy4gTXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgaGFuZGxpbmcgb3ZlcmhlYWQgYW5kIHByZXZlbnRpbmcgdGhlIHNjaGVkdWxlciBmcm9tIHRyeWluZyB0byBkbyB0aGluZ3MgdG9vIGZyZXF1ZW50bHkgaW4gc29mdHdhcmUsIG1heWJlIHByZXZlbnRpbmcgZXhjZXNzaXZlIGNvbnRleHQgc3dpdGNoaW5nIG9yIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcuXG5cblRoZSBjb2RlIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBjaGVja2luZyB0aGlzIGludGVydmFsIGluIHR3byBwbGFjZXMsIGFuZCB0aG9zZSBjaGVja3MgYXJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGBGVUxMX09GRkxPQURfSVNfRU5BQkxFRGAgKm5vdCogYmVpbmcgc2V0LiBUaGF0IG1lYW5zIHRoaXMgbWluaW11bSBpbnRlcnZhbCBpcyBvbmx5IGVuZm9yY2VkIHdoZW4gaGFyZHdhcmUgb2ZmbG9hZCBpc24ndCBiZWluZyB1c2VkLiBPbmUgY2hlY2sgaXMgb24gdGhlIGBpbnRlcnZhbGAgaXRzZWxmLCB0aGUgb3RoZXIgbG9va3MgYXQgYG5ldy1cdTAwM2VjeWNsZV90aW1lYCBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgbXVsdGlwbGllZCBieSB0aGF0IGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBndWFyZHMgYWdhaW5zdCBzY2hlZHVsZXMgYmVpbmcgc2V0IHVwIHRoYXQgYXJlIHRvbyB0aWdodCBmb3IgdGhlIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZS4gSXQncyBhIHByb3RlY3Rpb24gbWVjaGFuaXNtLlxuXG5UaGUgZmluYWwga2V5IGNoYW5nZSBmb2N1c2VzIG9uIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2ggaGludHMgYXQgaGFuZGxpbmcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGVyIG1pZ2h0IGZhbGwgYmVoaW5kLiBUaGlzIGlzIGNydWNpYWw7IGlmIGl0J3MgbGFnZ2luZywgdGhlIGVudGlyZSBxdWFsaXR5IG9mIHNlcnZpY2UgdGhlIHNjaGVkdWxlciBpcyBzdXBwb3NlZCB0byBkZWxpdmVyIGNhbiBiZSBpbXBhY3RlZC4gU28sIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgaG93IGl0IGhhbmRsZXMgdGhlIFwiZmFsbGluZyBiZWhpbmRcIiBtYXRoZW1hdGljYWxseS4gV2hhdCdzIHRoZSBzdHJhdGVneT8gRG9lcyBpdCBkcm9wIHBhY2tldHM/IERvZXMgaXQgYWRqdXN0IHRoZSBzY2hlZHVsZSBkeW5hbWljYWxseT8gRG9lcyBpdCBwcmlvcml0aXplIGNyaXRpY2FsIHRyYWZmaWM/XG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYHNjaF90YXByaW8uY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRURgIGlzIGRlZmluZWQsIGZvciBzdGFydGVycy4gV2hlcmUgaXMgYHNjaF90YXByaW9gIGNvbmZpZ3VyZWQ/IExldCdzIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZvciBob3cgYHNjaF90YXByaW8ub2AgaXMgYnVpbHQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LCBhbmQgSSBjYW4gc3RhcnQgdGhlcmUgdG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDozNS4wMjQxMDg2ODRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyNzM3MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoX3RhcHJpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcXHQrPSBzY2hfZXRmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVxcdCs9IHNjaF90YXByaW8ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXFx0Kz0gYnBmX3FkaXNjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MzUuMTA2Mzg2NzQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTc4MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipEZXBlbmRlbmNpZXMgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmcgSSdtIGxvb2tpbmcgYXQgaXMgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQsIGJ1dCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSBpZiB0aGlzIHNwZWNpZmljIHNldHRpbmcgaGFzIGFueSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiBgTkVUX1NDSF9UQVBSSU9gJ3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gb3RoZXIgb3B0aW9ucyBiZWluZyBlbmFibGVkIG9yIHByb3Blcmx5IGNvbmZpZ3VyZWQuIEF2b2lkaW5nIG92ZXJsb29raW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIHNhdmUgbWUgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUgYW5kIGVuc3VyZSBhIHJvYnVzdCBhbmQgZnVuY3Rpb25hbCBvdXRjb21lLiBMZXQncyBzZWUgd2hhdCBlbHNlIG5lZWRzIGNvbnNpZGVyYXRpb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjM4LjE1ODE2OTQzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4ODY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MzguMjAzODYzMzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg1MDc3NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORVRfU0NIX1RBUFJJTyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwbGFjZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBoaWVyYXJjaHkuIFdoZXJlIGRvZXMgaXQgZml0PyBJcyBpdCB1bmRlciBhIG1vcmUgZ2VuZXJpYyBgTkVUX1NDSGAgdW1icmVsbGEsIG9yIGlzIGl0IG1vcmUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyYWwgb3IgcHJvdG9jb2wgZmVhdHVyZSBzZXQ/IEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXM6IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGxpa2UgdGltZXN0YW1waW5nIG9yIHBhcnRpY3VsYXIgRXRoZXJuZXQgY29udHJvbGxlcnM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBjb25mbGljdHMgd2l0aCBvdGhlciBzY2hlZHVsZXJzLCBvciBhcmUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgZGVzaWduZWQgZm9yIGNvbXBhdGliaWxpdHk/XG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSByZWxldmFudCBgI2lmZGVmYCBibG9ja3MuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBjb25kaXRpb25zIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgaXQuIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpc3N1ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgcmVnYXJkaW5nIGRlcGVuZGVuY2llcywgYnVpbGQgb3B0aW9ucyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucz8gSSdtIHRyeWluZyB0byBpZGVudGlmeSB3aGF0IG90aGVyIGZlYXR1cmVzL29wdGlvbnMgaGF2ZSB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciB0YXByaW8gdG8gYmUgYXZhaWxhYmxlLiBBbHNvLCBJJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgY29tbWVudGFyeSB0aGF0IHByb3ZpZGVzIGNvbnRleHQgb3IgZGVzaWduIGludGVudC4gV2hhdCBhcmUgdGhlIGtleSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggZW5hYmxpbmcgdGhpcyBzY2hlZHVsZXI/XG5cbk15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjb25maWd1cmF0aW9uOiBXaGF0IGxldmVsIG9mIGdyYW51bGFyIGNvbnRyb2wgZG8gSSBoYXZlIG92ZXIgaXRzIHBhcmFtZXRlcnM/IEFyZSB0aGVyZSBydW50aW1lIHR1bmFibGVzIGV4cG9zZWQgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rLCBvciBpcyBpdCBhbG1vc3QgZW50aXJlbHkgY29tcGlsZS10aW1lIGNvbmZpZ3VyZWQ/IEknbGwgYmUgbG9va2luZyBmb3IgaGludHMgb24gdHlwaWNhbCB1c2FnZSBzY2VuYXJpb3MuIElzIHRoaXMgc2NoZWR1bGVyIHByaW1hcmlseSBmb3IgVFNOIChUaW1lLVNlbnNpdGl2ZSBOZXR3b3JraW5nKSBlbnZpcm9ubWVudHMsIG9yIGRvZXMgaXQgaGF2ZSBicm9hZGVyIGFwcGxpY2FiaWxpdHk/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHJlZmVyZW5jZXM/IEknbSBxdWlja2x5IGZpbHRlcmluZyBmb3IgYW55dGhpbmcgdGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgTkVUX1NDSF9UQVBSSU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDIuMzg4OTQ0OTQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MjpcXHRjb25maWcgTkVUX1NDSF9UQVBSSU9cXG4gMTczOlxcdFxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG4gMTc0OlxcdFxcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcXG4gMTc1OlxcdFxcdGhlbHBcXG4gMTc2OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XFxuIDE3NzpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE4MDpcXHRcXG4gMTgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxODI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbiAxODU6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuIDE4NjpcXHRcXHRoZWxwXFxuIDE4NzpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cXG4gMTg4OlxcdFxcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xcbiAxODk6XFx0XFx0ICAoc2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1xcdTAwM2UgZm9yIGRldGFpbHMgYW5kXFxuIDE5MDpcXHRcXHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXFxuIDE5MTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDIuMzg5MDU0MjQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2MjY5Njg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgVGFwcmlvIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGBORVRfU0NIX1RBUFJJT2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6b29tIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLCB3aGljaCBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZnVuY3Rpb25zIGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBpbnN0aW5jdGl2ZWx5IGtub3cgdGhhdCB0aGVzZSBhcmUgbGlrZWx5IHRoZSBoZWFydCBvZiB0aGUgc2NoZWR1bGluZyBtb2RpZmljYXRpb25zLCBhbmQgc28gSSBzaG91bGQgYWRkIHRoZW0gdG8gbXkgbWVudGFsIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2AuXG5cbk5vdywgYmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBhIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgaXMgaW4gb3JkZXIuIEFuZCB5ZXAsIGl0IGFwcGVhcnMgdGhleSBhbGwgYXJlOiBgYWR2YW5jZV9zY2hlZGAsIGBmaWxsX3NjaGVkX2VudHJ5YCwgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMuIE9rYXksIHRoYXQncyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgZG9lcyBtZWFuIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSWYgdGhleSdyZSBpbmxpbmVkLCB0aGV5IG1pZ2h0IG5vdCBsZWF2ZSB0aGUgc3ltYm9scyBhcyBhIHRyYWNlLiBJbmxpbmluZyB3b3VsZCBoaWRlIHRoZWlyIHRydWUgZGVwZW5kZW5jeS5cblxuU28sIG5leHQgc3RlcDogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB0aGUgcHVibGljIGVudHJ5IHBvaW50cywgdGhhdCBjYWxsIHRoZXNlIGZ1bmN0aW9ucy4gVGhvc2UgYXJlIHRoZSBrZXkgdGFyZ2V0cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gdHJhY2sgZG93biB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGluIGEgYnJvYWRlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDYuNTUxNzUzMzY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ0NTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYXJzZV90YXByaW9fc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTExMTU9c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU1OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTYtXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg1MD1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk0NC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NDU6XFx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQ2LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo0Ni41OTcyMTQ5OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNjk3ODQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gVGhhdCdzIHRoZSBleHBlY3RlZCBlbnRyeSBwb2ludCBmb3IgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgVEFQUklPIHNjaGVkdWxlIOKAkyBtYWtlcyBwZXJmZWN0IHNlbnNlLiBOb3csIGxldCdzIGRyaWxsIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyAqd2l0aGluKiB0aGF0IGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsZSBlbnRyaWVzIGFyZSBhY3R1YWxseSBwb3B1bGF0ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHNjaGVkdWxpbmcgaXMgbGlrZWx5IHRvIHJlc2lkZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBleGFtaW5pbmcgdGhlIGBmaWxsX3NjaGVkX2VudHJ5YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgc2NoZWR1bGUgaXMgYmVpbmcgcG9wdWxhdGVkIGFmdGVyIHRoZSBwYXJzaW5nLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIGNvbnN0cnVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzA0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDkuNzE0MTk2NTUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDAwOTc4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWxsX3NjaGVkX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNTk6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjAtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwOTY9c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTExLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExMjpcXHRyZXR1cm4gZmlsbF9zY2hlZF9lbnRyeShxLCB0YiwgZW50cnksIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDkuNzU4MjEyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM2NzEzMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgVGFwcmlvIFNjaGVkdWxlIFBhcnNpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoaXMgYHRhcHJpb19jaGFuZ2VgIGZ1bmN0aW9uIGlzIHdvcmtpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHNjaGVkdWxpbmcgbG9naWMuIFRoZSBjYWxsIHN0YWNrIEkgc2VlIGlzOiBgdGFwcmlvX2NoYW5nZWAgY2FsbHMgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIHdoaWNoIHRoZW4gY2FsbHMgYHBhcnNlX3NjaGVkX2xpc3RgLiBUaGF0IGluIHR1cm4gY2FsbHMgYHBhcnNlX3NjaGVkX2VudHJ5YC4gQW5kIGZpbmFsbHksIHdlIGdldCB0byBgZmlsbF9zY2hlZF9lbnRyeWAuIFRoYXQncyB0aGUgY29yZSwgdGhlbi4gTm93LCB3aGVyZSBkb2VzIGBhZHZhbmNlX3NjaGVkYCBmaXQgaW50byBhbGwgdGhpcz8gSSdkIGJldHRlciB0cmFjZSB0aGF0IG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo1Mi45OTQ5MjgyMDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDgxNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkdmFuY2Vfc2NoZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg4NT1zdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTE5OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkyMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NTA9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5ODQtXFx0ICAgICFocnRpbWVyX2FjdGl2ZShcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lcikpIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODU6XFx0XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lciwgYWR2YW5jZV9zY2hlZCwgcS1cXHUwMDNlY2xvY2tpZCwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg2LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMDQ6XFx0XFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwNS1cXHRcXHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cXHUwMDNlYWRtaW5fc2NoZWQsIG5ld19hZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMTI6XFx0XFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTMtXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMDk5PXN0YXRpYyBpbnQgdGFwcmlvX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEwNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxMDg6XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lciwgYWR2YW5jZV9zY2hlZCwgQ0xPQ0tfVEFJLCBIUlRJTUVSX01PREVfQUJTKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjUzLjAzOTAxNDM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzY5MTcyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU2NoZWR1bGluZyBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNjaGVkdWxpbmcgY29kZS4uLiBgYWR2YW5jZV9zY2hlZGAg4oCTIHRoYXQncyBhIGNsYXNzaWMgdGltZXIgY2FsbGJhY2ssIG5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIFRoZSByZWFsIG1lYXQgaXMgaW4gdGhlIGVudHJ5IHBvaW50cy4gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSB0aGUgb25lcyB0aGF0IGp1bXAgb3V0IGF0IG1lIGFzIHRoZSBtYWluIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIHdob2xlIHNjaGVkdWxpbmcgcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpczogKkFyZSB0aGVzZSB0aGUgb25seSBlbnRyeSBwb2ludHM/KiBUaGVyZSdzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgb2Ygc3VidGxlIGludGVyYWN0aW9ucyBvciBhbHRlcm5hdGl2ZSBpbml0aWFsaXphdGlvbnMgdGhhdCBhcmVuJ3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhpcyDigJMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdsbCBuZWVkIHRvIGNoZWNrIGZvciBoaWRkZW4gZnVuY3Rpb25zIHRoYXQgbWF5IGZlZWQgaW50byB0aGUgY29yZSBwcm9jZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo1Ni4yNzU5MzQ0ODJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTIzOTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhcHJpb19jaGFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4MzA9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQ5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg1MDpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NTEtXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjA5OT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMTItXFx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjExMzpcXHQgKiBhbmQgZ2V0IHRoZSB2YWxpZCBvbmUgb24gdGFwcmlvX2NoYW5nZSgpLlxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjExNC1cXHQgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE2MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxNjE6XFx0cmV0dXJuIHRhcHJpb19jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTYyLX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjU3ND1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NzgtXFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU3OTpcXHQuY2hhbmdlXFx0XFx0PSB0YXByaW9fY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4MC1cXHQuZGVzdHJveVxcdD0gdGFwcmlvX2Rlc3Ryb3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjU2LjMyNTA2MjU5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjI4ODQ1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFRBUFJJTyBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBUQVBSSU8gcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCBmdXp6aW5nIGFwcHJvYWNoLiBJdCBsb29rcyBsaWtlIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBzY2hlZHVsZXIuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBidWcgd2hlcmUgc21hbGwgaW50ZXJ2YWxzIGNvdWxkIGxlYWQgdG8gZW5kbGVzcyBsb29wcyBvciBoaWdoIENQVSB1c2FnZSBpbiBgYWR2YW5jZV9zY2hlZGAuIFRoZSBmaXggaW5jbHVkZXMgYSBtYXRoZW1hdGljYWwgYWRqdXN0bWVudCBpbiBgYWR2YW5jZV9zY2hlZGAgdG8gaGFuZGxlIHNjaGVkdWxpbmcgZGVsYXlzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3Igc3RhYmlsaXR5LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBwYXRjaCB3b3J0aCBmdXp6aW5nIGFnZ3Jlc3NpdmVseS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgZXhwb3NlIHRoZSBjb25maWd1cmF0aW9uIHBhcnNpbmcgbG9naWMuIGBhZHZhbmNlX3NjaGVkYCBpdHNlbGYgaXMgYSB0aW1lciBjYWxsYmFjaywgc28gbm90IGRpcmVjdGx5IHRyaWdnZXJlZCBieSBhIHN5c2NhbGwsIGJ1dCBieSB0aGUgY29uZmlnLiBGdXp6aW5nIHRoZSBjb25maWcgaXMga2V5LiBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgKmNvdWxkKiBiZSByZWxldmFudCwgYnV0IGdpdmVuIHRoZSBwYXRjaCdzIGZvY3VzLCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCB0aW1lciBjYWxsYmFjaywgYnV0IHNpbmNlIGl0J3MgdHJpZ2dlcmVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLCBJJ20gZ29pbmcgdG8gYWRkIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCB0byB0aGUgYEZvY3VzU3ltYm9sc2AuIElmIHRoZSBmdXp6ZXIgYWxsb3dzIHRpbWVyIGhvb2tzIChzeXprYWxsZXIgY2FuIHNvbWV0aW1lcyBkbyBpdCwgdGhvdWdoIHN5c2NhbGwgZW50cnkgcG9pbnRzIGFyZSBnZW5lcmFsbHkgYmV0dGVyKSwgSSBjb3VsZCBhbHNvIGFkZCBgYWR2YW5jZV9zY2hlZGAsIGJ1dCBJJ2xsIGFkZCBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgZmlyc3QsIHRvIGtlZXAgaXQgc2ltcGxlLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBjb25maWcgaXMgY29ycmVjdC4gYE5FVF9TQ0hfVEFQUklPYCBkZXBlbmRzIG9uIGBORVRfU0NIX01RUFJJT19MSUJgIGFuZCBpcyB1bmRlciBgTkVUX1NDSEVEYCBpbiBgbWVudWNvbmZpZ2AuIFNvIGBORVRfU0NIRURgIGhhcyB0byBiZSBlbmFibGVkLiBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhpcyBpbiB0aGUga2VybmVsIGNvbmZpZyBiZWZvcmUgSSBzdGFydCBmdXp6aW5nLiBMZXQncyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHByb3Blcmx5IGFuZCB0aGVuIEknbGwgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDE6MDMuNTUzOTEwNzU5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjYxOTM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDE6MDMuNjIwNTM2Mjc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTg1MTk3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBsb29raW5nIGF0IG5ldHdvcmsgc2NoZWR1bGluZywgd2hpY2ggbmF0dXJhbGx5IGJyaW5ncyBgTkVUX1NDSEVEYCB0byBtaW5kIOKAkyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGltbWVkaWF0ZWx5IGlzOiAqd2hhdCBhYm91dCogYE5FVF9TQ0hfVEFQUklPYD8gR2l2ZW4gdGhlIHBvdGVudGlhbCByZXF1aXJlbWVudHMgZm9yIHRyYWZmaWMgc2hhcGluZyBhbmQgcHJpb3JpdHkgaGFuZGxpbmcsIEknZCB3YW50IHRvIHVuZGVyc3RhbmQgaWYgd2UgbmVlZCB0aGUgcHJlY2lzaW9uIGFuZCBjYXBhYmlsaXRpZXMgdGhhdCBUQVBSSU8gb2ZmZXJzLiBXZSBzaG91bGQgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IFRBUFJJTyBjb21wYXJlcyB0byBzaW1wbGVyIHNjaGVkdWxpbmcgbWV0aG9kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAxOjA2LjY3OTA1OTY3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NDQ4NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAxOjA2LjcyODAxMDc0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA4NjMyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCByZWxhdGVkIHRvIFRBUFJJTyBzY2hlZHVsaW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBzbWFsbCBpbnRlcnZhbHMsIGxpa2VseSByZWxhdGVkIHRvIHNvZnR3YXJlIHNjaGVkdWxpbmcuIFRoZSBjb25maWdzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBhcmUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfU0NIX1RBUFJJT2AgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYSBrZXkgY2hlY2sgd2l0aGluIGBmaWxsX3NjaGVkX2VudHJ5YDpcblxuYGBgY1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjYgaW50ZXJ2YWwgXHUwMDNjIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuYGBgXG5cblRoaXMgbWFrZXMgc3VyZSB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCBpcyBzZW5zaWJsZSB3aGVuIHNvZnR3YXJlIHNjaGVkdWxpbmcgaXMgaW4gdXNlLiBUaGVyZSdzIGEgc2ltaWxhciBjaGVjayBpbiBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYDpcblxuYGBgY1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogVEFQUklPX01JTl9TV19JTlRFUlZBTCkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuYGBgXG5cblRoaXMgb25lIGZvY3VzZXMgb24gYGN5Y2xlX3RpbWVgLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgY3ljbGUgdGltZSBpcyBzYW5lLiBUaGUgdGhpcmQgcGllY2UsIGZvdW5kIGluIGBhZHZhbmNlX3NjaGVkYCwgaW52b2x2ZXMgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIHNjaGVkdWxlIFwiZmFsbHMgYmVoaW5kXCI6XG5cbmBgYGNcbitmaXJzdF9ydW46XG4rXHQvKiBDaGVjayBpZiB3ZSBmZWxsIGJlaGluZCBhbmQgYWR2YW5jZSB0aGUgc2NoZWR1bGUgbWF0aGVtYXRpY2FsbHkgKi9cbitcdGlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHtcbitcdFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG4rXHRcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4rXHRcdHM2NCBuO1xuK1xuK1x0XHRpZiAobGlrZWx5KGN5Y2xlKSkge1xuK1x0XHRcdG4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7XG4rXHRcdFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW5kX3RpbWUsIChuICsgMSkgKiBjeWNsZSk7XG4rXHRcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHRcdFx0ICAgIChuICsgMSkgKiBjeWNsZSk7XG4rXG4rXHRcdFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbitcdFx0XHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKVxuK1x0XHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuK1x0XHRcdFx0XHRcdGt0aW1lX2FkZF9ucyhuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10sXG4rXHRcdFx0XHRcdFx0XHQgICAgIChuICsgMSkgKiBjeWNsZSk7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG5gYGBcblxuVGhpcyBsb29rcyBsaWtlIHRoZSBjb3JlIGxvZ2ljIHRvIHByZXZlbnQgYSBDUFUgc3RhbGwgb3IgaW5maW5pdGUgbG9vcC4gSWYgdGhlIGN1cnJlbnQgdGltZSBoYXMgcGFzc2VkIHRoZSBzY2hlZHVsZWQgZW5kIHRpbWUsIGl0IG1hdGhlbWF0aWNhbGx5IGFkdmFuY2VzIHRoZSBzY2hlZHVsZSBieSBhZGRpbmcgbXVsdGlwbGVzIG9mIHRoZSBjeWNsZSB0aW1lLlxuXG5TbywgdGhlIG92ZXJhbGwgaW1wYWN0IGlzIGZ1bmN0aW9uYWwuIEl0IGxvb2tzIGxpa2Ugd2UncmUgYWRkaW5nIHNvbWUgY2hlY2tzIG9uIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHRvIGF2b2lkIGlzc3Vlcy4gSSB0aGluayBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMgY2hhbmdlLiBMZXQgbWUgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDM3LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMToxNS42MzY2NDYzNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQyOTUyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 23:58:22 +0000 UTC FinishedAt: 2026-08-03 00:01:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "632d1b7b-08f2-4e70-91f1-8c152c6aec78" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "taprio_change", "taprio_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwNjJhYTA2M2M1ZjY0MjA1NjdlZTNmZmYxYTAwYjFhY2M3ZGJiMDVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAwOjAwOjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTQwLDYgJiM0Mzs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbztcbiBcbiAjZGVmaW5lIFRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChmbGFncykgKChmbGFncykgXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpXG4gI2RlZmluZSBGVUxMX09GRkxPQURfSVNfRU5BQkxFRChmbGFncykgKChmbGFncykgXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX0ZVTExfT0ZGTE9BRClcbiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMIDUwMDAwIC8qIDUwIHVzICovXG4gI2RlZmluZSBUQVBSSU9fU1VQUE9SVEVEX0ZMQUdTIFxcXG4gXHQoVENBX1RBUFJJT19BVFRSX0ZMQUdfVFhUSU1FX0FTU0lTVCB8IFRDQV9UQVBSSU9fQVRUUl9GTEFHX0ZVTExfT0ZGTE9BRClcbiAjZGVmaW5lIFRBUFJJT19GTEFHU19JTlZBTElEIFUzMl9NQVhcbkBAIC05ODAsMTAgJiM0Mzs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4gXHR9XG4gXG4mIzQzO2ZpcnN0X3J1bjpcbiYjNDM7XHQvKiBDaGVjayBpZiB3ZSBmZWxsIGJlaGluZCBhbmQgYWR2YW5jZSB0aGUgc2NoZWR1bGUgbWF0aGVtYXRpY2FsbHkgKi9cbiYjNDM7XHRpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7XG4mIzQzO1x0XHRrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTtcbiYjNDM7XHRcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4mIzQzO1x0XHRzNjQgbjtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobGlrZWx5KGN5Y2xlKSkge1xuJiM0MztcdFx0XHRuID0gZGl2NjRfczY0KGt0aW1lX3N1Yl9ucyhub3csIGVuZF90aW1lKSwgY3ljbGUpO1xuJiM0MztcdFx0XHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbmRfdGltZSwgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1xuJiM0MztcdFx0XHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4mIzQzO1x0XHRcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSAhPSBLVElNRV9NQVgpXG4mIzQzO1x0XHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuJiM0MztcdFx0XHRcdFx0XHRrdGltZV9hZGRfbnMobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdLFxuJiM0MztcdFx0XHRcdFx0XHRcdCAgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuIFx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xuIFxuLWZpcnN0X3J1bjpcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuIFxuQEAgLTEwNjEsNiAmIzQzOzEwODMsMTEgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjYgaW50ZXJ2YWwgXHUwMDNjIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbiYjNDM7XHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwmIzM0O0ludGVydmFsIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZ1wmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ZW50cnktXHUwMDNlaW50ZXJ2YWwgPSBpbnRlcnZhbDtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTExNzEsNiAmIzQzOzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbiYjNDM7XHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogVEFQUklPX01JTl9TV19JTlRFUlZBTCkge1xuJiM0MztcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdH1cbiYjNDM7XG4gXHR0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9faW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgdG8gbWF0aGVtYXRpY2FsbHkgYWR2YW5jZSB0aGUgc2NoZWR1bGUgaWYgaXQgZmFsbHMgYmVoaW5kLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDUFUgc3RhbGxzIG9yIGluZmluaXRlIGxvb3BzIGluIHRoZSBhZHZhbmNlX3NjaGVkIHRpbWVyIGNhbGxiYWNrLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSB0YXByaW8gcWRpc2MsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODA2MmFhMDYzYzVmNjQyMDU2N2VlM2ZmZjFhMDBiMWFjYzdkYmIwNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDA6MDA6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwppbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKQEAgLTQwLDYgJiM0Mzs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbzsKIAogI2RlZmluZSBUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQoZmxhZ3MpICgoZmxhZ3MpICZhbXA7IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpCiAjZGVmaW5lIEZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSAmYW1wOyBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMIDUwMDAwIC8qIDUwIHVzICovCiAjZGVmaW5lIFRBUFJJT19TVVBQT1JURURfRkxBR1MgXAogCShUQ0FfVEFQUklPX0FUVFJfRkxBR19UWFRJTUVfQVNTSVNUIHwgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKQogI2RlZmluZSBUQVBSSU9fRkxBR1NfSU5WQUxJRCBVMzJfTUFYCkBAIC05ODAsMTAgJiM0Mzs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQllbmRfdGltZSA9IG5leHQtJmd0O2VuZF90aW1lOwogCX0KIAomIzQzO2ZpcnN0X3J1bjoKJiM0MzsJLyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovCiYjNDM7CWlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHsKJiM0MzsJCWt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpOwomIzQzOwkJa3RpbWVfdCBjeWNsZSA9IG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CQlzNjQgbjsKJiM0MzsKJiM0MzsJCWlmIChsaWtlbHkoY3ljbGUpKSB7CiYjNDM7CQkJbiA9IGRpdjY0X3M2NChrdGltZV9zdWJfbnMobm93LCBlbmRfdGltZSksIGN5Y2xlKTsKJiM0MzsJCQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbmRfdGltZSwgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CQkJb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUsCiYjNDM7CQkJCQkJCSAgICAobiAmIzQzOyAxKSAqIGN5Y2xlKTsKJiM0MzsKJiM0MzsJCQlmb3IgKHRjID0gMDsgdGMgJmx0OyBudW1fdGM7IHRjJiM0MzsmIzQzOykgewomIzQzOwkJCQlpZiAobmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSAhPSBLVElNRV9NQVgpCiYjNDM7CQkJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0KJiM0MzsJCQkJCQlrdGltZV9hZGRfbnMobmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSwKJiM0MzsJCQkJCQkJICAgICAobiAmIzQzOyAxKSAqIGN5Y2xlKTsKJiM0MzsJCQl9CiYjNDM7CQl9CiYjNDM7CX0KJiM0MzsKIAluZXh0LSZndDtlbmRfdGltZSA9IGVuZF90aW1lOwogCXRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTsKIAotZmlyc3RfcnVuOgogCXJjdV9hc3NpZ25fcG9pbnRlcihxLSZndDtjdXJyZW50X2VudHJ5LCBuZXh0KTsKIAlzcGluX3VubG9jaygmYW1wO3EtJmd0O2N1cnJlbnRfZW50cnlfbG9jayk7CiAKQEAgLTEwNjEsNiAmIzQzOzEwODMsMTEgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS0mZ3Q7ZmxhZ3MpICZhbXA7JmFtcDsgaW50ZXJ2YWwgJmx0OyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0O0ludGVydmFsIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJZW50cnktJmd0O2ludGVydmFsID0gaW50ZXJ2YWw7CiAKIAlyZXR1cm4gMDsKQEAgLTExNzEsNiAmIzQzOzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgbmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHsKJiM0MzsJCU5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssICYjMzQ7JiMzOTtjeWNsZV90aW1lJiMzOTsgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nJiMzNDspOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAl0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHEsIG5ldyk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgaW50cm9kdWNpbmcgYSBuZXcgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCwgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxgLCBzZXQgdG8gNTAgbWljcm9zZWNvbmRzLiBUaGF0JiMzOTtzIHRoZSBmaXJzdCBzaWduaWZpY2FudCB0aGluZy4gTXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgaGFuZGxpbmcgb3ZlcmhlYWQgYW5kIHByZXZlbnRpbmcgdGhlIHNjaGVkdWxlciBmcm9tIHRyeWluZyB0byBkbyB0aGluZ3MgdG9vIGZyZXF1ZW50bHkgaW4gc29mdHdhcmUsIG1heWJlIHByZXZlbnRpbmcgZXhjZXNzaXZlIGNvbnRleHQgc3dpdGNoaW5nIG9yIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcuCgpUaGUgY29kZSBzZWVtcyB0byBiZSBzcGVjaWZpY2FsbHkgY2hlY2tpbmcgdGhpcyBpbnRlcnZhbCBpbiB0d28gcGxhY2VzLCBhbmQgdGhvc2UgY2hlY2tzIGFyZSBjb25kaXRpb25hbCBiYXNlZCBvbiBgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRURgICpub3QqIGJlaW5nIHNldC4gVGhhdCBtZWFucyB0aGlzIG1pbmltdW0gaW50ZXJ2YWwgaXMgb25seSBlbmZvcmNlZCB3aGVuIGhhcmR3YXJlIG9mZmxvYWQgaXNuJiMzOTt0IGJlaW5nIHVzZWQuIE9uZSBjaGVjayBpcyBvbiB0aGUgYGludGVydmFsYCBpdHNlbGYsIHRoZSBvdGhlciBsb29rcyBhdCBgbmV3LSZndDtjeWNsZV90aW1lYCBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgbXVsdGlwbGllZCBieSB0aGF0IGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBndWFyZHMgYWdhaW5zdCBzY2hlZHVsZXMgYmVpbmcgc2V0IHVwIHRoYXQgYXJlIHRvbyB0aWdodCBmb3IgdGhlIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZS4gSXQmIzM5O3MgYSBwcm90ZWN0aW9uIG1lY2hhbmlzbS4KClRoZSBmaW5hbCBrZXkgY2hhbmdlIGZvY3VzZXMgb24gYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBoaW50cyBhdCBoYW5kbGluZyBzaXR1YXRpb25zIHdoZXJlIHRoZSBzY2hlZHVsZXIgbWlnaHQgZmFsbCBiZWhpbmQuIFRoaXMgaXMgY3J1Y2lhbDsgaWYgaXQmIzM5O3MgbGFnZ2luZywgdGhlIGVudGlyZSBxdWFsaXR5IG9mIHNlcnZpY2UgdGhlIHNjaGVkdWxlciBpcyBzdXBwb3NlZCB0byBkZWxpdmVyIGNhbiBiZSBpbXBhY3RlZC4gU28sIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgaG93IGl0IGhhbmRsZXMgdGhlICYjMzQ7ZmFsbGluZyBiZWhpbmQmIzM0OyBtYXRoZW1hdGljYWxseS4gV2hhdCYjMzk7cyB0aGUgc3RyYXRlZ3k/IERvZXMgaXQgZHJvcCBwYWNrZXRzPyBEb2VzIGl0IGFkanVzdCB0aGUgc2NoZWR1bGUgZHluYW1pY2FsbHk/IERvZXMgaXQgcHJpb3JpdGl6ZSBjcml0aWNhbCB0cmFmZmljPwoKTm93LCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LCBJIG5lZWQgdG8ga25vdyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgc2NoX3RhcHJpby5jYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGBGVUxMX09GRkxPQURfSVNfRU5BQkxFRGAgaXMgZGVmaW5lZCwgZm9yIHN0YXJ0ZXJzLiBXaGVyZSBpcyBgc2NoX3RhcHJpb2AgY29uZmlndXJlZD8gTGV0JiMzOTtzIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZvciBob3cgYHNjaF90YXByaW8ub2AgaXMgYnVpbHQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LCBhbmQgSSBjYW4gc3RhcnQgdGhlcmUgdG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX3RhcHJpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX05FVF9TQ0hfRVRGKVx0JiM0Mzs9IHNjaF9ldGYub1xubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcdCYjNDM7PSBzY2hfdGFwcmlvLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXHQmIzQzOz0gYnBmX3FkaXNjLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTgyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIHRob3VnaHQgcHJvY2VzcyB1bmZvbGRzOgoKKipEZXBlbmRlbmNpZXMgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIEkmIzM5O20gbG9va2luZyBhdCBpcyBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgY29udGV4dCwgYnV0IG15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoaXMgc3BlY2lmaWMgc2V0dGluZyBoYXMgYW55IGRlcGVuZGVudCBjb25maWd1cmF0aW9ucy4gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiBgTkVUX1NDSF9UQVBSSU9gJiMzOTtzIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIG90aGVyIG9wdGlvbnMgYmVpbmcgZW5hYmxlZCBvciBwcm9wZXJseSBjb25maWd1cmVkLiBBdm9pZGluZyBvdmVybG9va2luZyB0aGVzZSBkZXBlbmRlbmNpZXMgd2lsbCBzYXZlIG1lIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lIGFuZCBlbnN1cmUgYSByb2J1c3QgYW5kIGZ1bmN0aW9uYWwgb3V0Y29tZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgbmVlZHMgY29uc2lkZXJhdGlvbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfU0NIX1RBUFJJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXG4tLVxubmV0L3NjaGVkL0tjb25maWctMTcxLVxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xubmV0L3NjaGVkL0tjb25maWctMTczLVx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODY1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkVUX1NDSF9UQVBSSU8gS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwbGFjZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBoaWVyYXJjaHkuIFdoZXJlIGRvZXMgaXQgZml0PyBJcyBpdCB1bmRlciBhIG1vcmUgZ2VuZXJpYyBgTkVUX1NDSGAgdW1icmVsbGEsIG9yIGlzIGl0IG1vcmUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyYWwgb3IgcHJvdG9jb2wgZmVhdHVyZSBzZXQ/IEkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzOiBEb2VzIGl0IHJlbHkgb24gc3BlY2lmaWMgaGFyZHdhcmUgY2FwYWJpbGl0aWVzLCBsaWtlIHRpbWVzdGFtcGluZyBvciBwYXJ0aWN1bGFyIEV0aGVybmV0IGNvbnRyb2xsZXJzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgY29uZmxpY3RzIHdpdGggb3RoZXIgc2NoZWR1bGVycywgb3IgYXJlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zIGRlc2lnbmVkIGZvciBjb21wYXRpYmlsaXR5PwoKSSYjMzk7bSBtZW50YWxseSBtYXBwaW5nIHRoZSByZWxldmFudCBgI2lmZGVmYCBibG9ja3MuIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgY29uZGl0aW9ucyB0aGF0IGVuYWJsZSBvciBkaXNhYmxlIGl0LiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gaXNzdWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIHJlZ2FyZGluZyBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMgb3IgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnM/IEkmIzM5O20gdHJ5aW5nIHRvIGlkZW50aWZ5IHdoYXQgb3RoZXIgZmVhdHVyZXMvb3B0aW9ucyBoYXZlIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIHRhcHJpbyB0byBiZSBhdmFpbGFibGUuIEFsc28sIEkmIzM5O20gY2hlY2tpbmcgaWYgdGhlcmUmIzM5O3MgYW55IGNvbW1lbnRhcnkgdGhhdCBwcm92aWRlcyBjb250ZXh0IG9yIGRlc2lnbiBpbnRlbnQuIFdoYXQgYXJlIHRoZSBrZXkgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGVuYWJsaW5nIHRoaXMgc2NoZWR1bGVyPwoKTXkgZm9jdXMgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgc2NvcGUgb2YgdGhlIGNvbmZpZ3VyYXRpb246IFdoYXQgbGV2ZWwgb2YgZ3JhbnVsYXIgY29udHJvbCBkbyBJIGhhdmUgb3ZlciBpdHMgcGFyYW1ldGVycz8gQXJlIHRoZXJlIHJ1bnRpbWUgdHVuYWJsZXMgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzIG9yIG5ldGxpbmssIG9yIGlzIGl0IGFsbW9zdCBlbnRpcmVseSBjb21waWxlLXRpbWUgY29uZmlndXJlZD8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaGludHMgb24gdHlwaWNhbCB1c2FnZSBzY2VuYXJpb3MuIElzIHRoaXMgc2NoZWR1bGVyIHByaW1hcmlseSBmb3IgVFNOIChUaW1lLVNlbnNpdGl2ZSBOZXR3b3JraW5nKSBlbnZpcm9ubWVudHMsIG9yIGRvZXMgaXQgaGF2ZSBicm9hZGVyIGFwcGxpY2FiaWxpdHk/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHJlZmVyZW5jZXM/IEkmIzM5O20gcXVpY2tseSBmaWx0ZXJpbmcgZm9yIGFueXRoaW5nIHRoYXQgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgYE5FVF9TQ0hfVEFQUklPYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzI6XHRjb25maWcgTkVUX1NDSF9UQVBSSU9cbiAxNzM6XHRcdHRyaXN0YXRlIFwmIzM0O1RpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXCYjMzQ7XG4gMTc0Olx0XHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXG4gMTc1Olx0XHRoZWxwXG4gMTc2Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxuIDE3NzpcdFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cbiAxNzg6XHRcbiAxNzk6XHRcdCAgU2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXG4gMTgwOlx0XG4gMTgxOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcbiAxODI6XHRcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXG4gMTgzOlx0XG4gMTg0Olx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxuIDE4NTpcdFx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVwmIzM0O1xuIDE4NjpcdFx0aGVscFxuIDE4NzpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXG4gMTg4Olx0XHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcbiAxODk6XHRcdCAgKHNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1x1MDAzZSBmb3IgZGV0YWlscyBhbmRcbiAxOTA6XHRcdCAgcmVmZXJlbmNlcyBhYm91dCB0aGUgYWxnb3JpdGhtKS5cbiAxOTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjA4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBUYXByaW8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gem9vbSBpbiBvbiB0aGUgY29yZSBvZiB0aGUgY2hhbmdlcywgd2hpY2ggc2VlbSB0byBiZSBjZW50ZXJlZCBhcm91bmQgdGhlIGZ1bmN0aW9ucyBgYWR2YW5jZV9zY2hlZGAsIGBmaWxsX3NjaGVkX2VudHJ5YCwgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgaW5zdGluY3RpdmVseSBrbm93IHRoYXQgdGhlc2UgYXJlIGxpa2VseSB0aGUgaGVhcnQgb2YgdGhlIHNjaGVkdWxpbmcgbW9kaWZpY2F0aW9ucywgYW5kIHNvIEkgc2hvdWxkIGFkZCB0aGVtIHRvIG15IG1lbnRhbCBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgLgoKTm93LCBiZWZvcmUgSSBkaWcgdG9vIGRlZXAsIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGFueSBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHN0YXRpYyBpcyBpbiBvcmRlci4gQW5kIHllcCwgaXQgYXBwZWFycyB0aGV5IGFsbCBhcmU6IGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGFsbCBmbGFnZ2VkIGFzIHN0YXRpYy4gT2theSwgdGhhdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgZG9lcyBtZWFuIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSWYgdGhleSYjMzk7cmUgaW5saW5lZCwgdGhleSBtaWdodCBub3QgbGVhdmUgdGhlIHN5bWJvbHMgYXMgYSB0cmFjZS4gSW5saW5pbmcgd291bGQgaGlkZSB0aGVpciB0cnVlIGRlcGVuZGVuY3kuCgpTbywgbmV4dCBzdGVwOiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMsIHRoZSBwdWJsaWMgZW50cnkgcG9pbnRzLCB0aGF0IGNhbGwgdGhlc2UgZnVuY3Rpb25zLiBUaG9zZSBhcmUgdGhlIGtleSB0YXJnZXRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGFjdCBvZiB0aGUgcGF0Y2guIFRob3NlIGFyZSB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byB0cmFjayBkb3duIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHN0YXRpYyBmdW5jdGlvbnMgYXJlIGJlaW5nIHVzZWQgaW4gYSBicm9hZGVyIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhcnNlX3RhcHJpb19zY2hlZHVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMTE1PXN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTE1NTpzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTYtXHRcdFx0XHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqbmV3LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg1MD1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5NDQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NDU6XHRlcnIgPSBwYXJzZV90YXByaW9fc2NoZWR1bGUocSwgdGIsIG5ld19hZG1pbiwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk0Ni1cdGlmIChlcnIgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMDQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgY29kZToKCioqQW5hbHl6aW5nIHRoZSBUQVBSSU8gU2NoZWR1bGUgTW9kaWZpY2F0aW9uKioKCk9rYXksIHNvIEkgc2VlIGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgZW50cnkgcG9pbnQgZm9yIGFueSBtb2RpZmljYXRpb24gdG8gdGhlIFRBUFJJTyBzY2hlZHVsZSDigJMgbWFrZXMgcGVyZmVjdCBzZW5zZS4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93bi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBoYXBwZW5zICp3aXRoaW4qIHRoYXQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBtb3N0IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsZSBlbnRyaWVzIGFyZSBhY3R1YWxseSBwb3B1bGF0ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSBzY2hlZHVsaW5nIGlzIGxpa2VseSB0byByZXNpZGUuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIGV4YW1pbmluZyB0aGUgYGZpbGxfc2NoZWRfZW50cnlgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIGZpZ3VyZSBvdXQgaG93IHRoZSBzY2hlZHVsZSBpcyBiZWluZyBwb3B1bGF0ZWQgYWZ0ZXIgdGhlIHBhcnNpbmcuIFRoaXMgaXMgd2hlcmUgSSYjMzk7bGwgZ2V0IGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIGNvbnN0cnVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWxsX3NjaGVkX2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHRhcHJpb19wb2xpY3lbVENBX1RBUFJJT19BVFRSX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNTk6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0Yixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA2MC1cdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwOTY9c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExMjpcdHJldHVybiBmaWxsX3NjaGVkX2VudHJ5KHEsIHRiLCBlbnRyeSwgZXh0YWNrKTtcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTExMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyB0aGUgVGFwcmlvIFNjaGVkdWxlIFBhcnNpbmcgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byBob3cgdGhpcyBgdGFwcmlvX2NoYW5nZWAgZnVuY3Rpb24gaXMgd29ya2luZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGUgc2NoZWR1bGluZyBsb2dpYy4gVGhlIGNhbGwgc3RhY2sgSSBzZWUgaXM6IGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCwgd2hpY2ggdGhlbiBjYWxscyBgcGFyc2Vfc2NoZWRfbGlzdGAuIFRoYXQgaW4gdHVybiBjYWxscyBgcGFyc2Vfc2NoZWRfZW50cnlgLiBBbmQgZmluYWxseSwgd2UgZ2V0IHRvIGBmaWxsX3NjaGVkX2VudHJ5YC4gVGhhdCYjMzk7cyB0aGUgY29yZSwgdGhlbi4gTm93LCB3aGVyZSBkb2VzIGBhZHZhbmNlX3NjaGVkYCBmaXQgaW50byBhbGwgdGhpcz8gSSYjMzk7ZCBiZXR0ZXIgdHJhY2UgdGhhdCBuZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthZHZhbmNlX3NjaGVkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg4NT1zdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkxOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTE5OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NTA9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg0LVx0ICAgICFocnRpbWVyX2FjdGl2ZShcdTAwMjZxLVx1MDAzZWFkdmFuY2VfdGltZXIpKSB7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODU6XHRcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBxLVx1MDAzZWNsb2NraWQsIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg2LVx0fVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwMy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjAwNDpcdFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDA1LVx0XHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cdTAwM2VhZG1pbl9zY2hlZCwgbmV3X2FkbWluLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjAxMjpcdFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMy1cdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2ssIGZsYWdzKTtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIwOTk9c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEwNy1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjEwODpcdGhydGltZXJfc2V0dXAoXHUwMDI2cS1cdTAwM2VhZHZhbmNlX3RpbWVyLCBhZHZhbmNlX3NjaGVkLCBDTE9DS19UQUksIEhSVElNRVJfTU9ERV9BQlMpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTA5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTc5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqQW5hbHl6aW5nIHRoZSBTY2hlZHVsaW5nIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzY2hlZHVsaW5nIGNvZGUuLi4gYGFkdmFuY2Vfc2NoZWRgIOKAkyB0aGF0JiMzOTtzIGEgY2xhc3NpYyB0aW1lciBjYWxsYmFjaywgbm90aGluZyB0b28gc3VycHJpc2luZyB0aGVyZS4gVGhlIHJlYWwgbWVhdCBpcyBpbiB0aGUgZW50cnkgcG9pbnRzLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHRoZSBvbmVzIHRoYXQganVtcCBvdXQgYXQgbWUgYXMgdGhlIG1haW4gc3RhcnRpbmcgcG9pbnRzIGZvciB0aGUgd2hvbGUgc2NoZWR1bGluZyBwcm9jZXNzLiBNeSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzOiAqQXJlIHRoZXNlIHRoZSBvbmx5IGVudHJ5IHBvaW50cz8qIFRoZXJlJiMzOTtzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgb2Ygc3VidGxlIGludGVyYWN0aW9ucyBvciBhbHRlcm5hdGl2ZSBpbml0aWFsaXphdGlvbnMgdGhhdCBhcmVuJiMzOTt0IGltbWVkaWF0ZWx5IG9idmlvdXMuIEl0JiMzOTtzIGNydWNpYWwgdG8gY29uZmlybSB0aGlzIOKAkyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayBmb3IgaGlkZGVuIGZ1bmN0aW9ucyB0aGF0IG1heSBmZWVkIGludG8gdGhlIGNvcmUgcHJvY2Vzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4MzA9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg0OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg1MDpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg1MS1cdFx0XHQgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjA5OT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTEyLVx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMTEzOlx0ICogYW5kIGdldCB0aGUgdmFsaWQgb25lIG9uIHRhcHJpb19jaGFuZ2UoKS5cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjExNC1cdCAqL1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE2MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjE2MTpcdHJldHVybiB0YXByaW9fY2hhbmdlKHNjaCwgb3B0LCBleHRhY2spO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTYyLX1cbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI1NzQ9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OC1cdC5pbml0XHRcdD0gdGFwcmlvX2luaXQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1Nzk6XHQuY2hhbmdlXHRcdD0gdGFwcmlvX2NoYW5nZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4MC1cdC5kZXN0cm95XHQ9IHRhcHJpb19kZXN0cm95LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3Mjc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFRBUFJJTyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIFRBUFJJTyBwYXRjaCBhbmQgZmlndXJpbmcgb3V0IHRoZSBiZXN0IGZ1enppbmcgYXBwcm9hY2guIEl0IGxvb2tzIGxpa2UgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgY29uZmlndXJpbmcgdGhlIHNjaGVkdWxlci4gVGhlIHBhdGNoIGFkZHJlc3NlcyBhIGJ1ZyB3aGVyZSBzbWFsbCBpbnRlcnZhbHMgY291bGQgbGVhZCB0byBlbmRsZXNzIGxvb3BzIG9yIGhpZ2ggQ1BVIHVzYWdlIGluIGBhZHZhbmNlX3NjaGVkYC4gVGhlIGZpeCBpbmNsdWRlcyBhIG1hdGhlbWF0aWNhbCBhZGp1c3RtZW50IGluIGBhZHZhbmNlX3NjaGVkYCB0byBoYW5kbGUgc2NoZWR1bGluZyBkZWxheXMsIHdoaWNoIGlzIGEgZ29vZCBzaWduIGZvciBzdGFiaWxpdHkuIFRoaXMgaXMgZGVmaW5pdGVseSBhIHBhdGNoIHdvcnRoIGZ1enppbmcgYWdncmVzc2l2ZWx5LgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgZXhwb3NlIHRoZSBjb25maWd1cmF0aW9uIHBhcnNpbmcgbG9naWMuIGBhZHZhbmNlX3NjaGVkYCBpdHNlbGYgaXMgYSB0aW1lciBjYWxsYmFjaywgc28gbm90IGRpcmVjdGx5IHRyaWdnZXJlZCBieSBhIHN5c2NhbGwsIGJ1dCBieSB0aGUgY29uZmlnLiBGdXp6aW5nIHRoZSBjb25maWcgaXMga2V5LiBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgKmNvdWxkKiBiZSByZWxldmFudCwgYnV0IGdpdmVuIHRoZSBwYXRjaCYjMzk7cyBmb2N1cywgSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucy4KClRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCB0aW1lciBjYWxsYmFjaywgYnV0IHNpbmNlIGl0JiMzOTtzIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJhdGlvbiwgSSYjMzk7bSBnb2luZyB0byBhZGQgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4gSWYgdGhlIGZ1enplciBhbGxvd3MgdGltZXIgaG9va3MgKHN5emthbGxlciBjYW4gc29tZXRpbWVzIGRvIGl0LCB0aG91Z2ggc3lzY2FsbCBlbnRyeSBwb2ludHMgYXJlIGdlbmVyYWxseSBiZXR0ZXIpLCBJIGNvdWxkIGFsc28gYWRkIGBhZHZhbmNlX3NjaGVkYCwgYnV0IEkmIzM5O2xsIGFkZCBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgZmlyc3QsIHRvIGtlZXAgaXQgc2ltcGxlLgoKRmluYWxseSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgYnVpbGQgY29uZmlnIGlzIGNvcnJlY3QuIGBORVRfU0NIX1RBUFJJT2AgZGVwZW5kcyBvbiBgTkVUX1NDSF9NUVBSSU9fTElCYCBhbmQgaXMgdW5kZXIgYE5FVF9TQ0hFRGAgaW4gYG1lbnVjb25maWdgLiBTbyBgTkVUX1NDSEVEYCBoYXMgdG8gYmUgZW5hYmxlZC4gSSB3aWxsIG5lZWQgdG8gdmVyaWZ5IHRoaXMgaW4gdGhlIGtlcm5lbCBjb25maWcgYmVmb3JlIEkgc3RhcnQgZnV6emluZy4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgcHJvcGVybHkgYW5kIHRoZW4gSSYjMzk7bGwgZ2V0IHN0YXJ0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MTYyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gSSBzZWUgd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBzY2hlZHVsaW5nLCB3aGljaCBuYXR1cmFsbHkgYnJpbmdzIGBORVRfU0NIRURgIHRvIG1pbmQg4oCTIGEgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2suIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgdXAgaW1tZWRpYXRlbHkgaXM6ICp3aGF0IGFib3V0KiBgTkVUX1NDSF9UQVBSSU9gPyBHaXZlbiB0aGUgcG90ZW50aWFsIHJlcXVpcmVtZW50cyBmb3IgdHJhZmZpYyBzaGFwaW5nIGFuZCBwcmlvcml0eSBoYW5kbGluZywgSSYjMzk7ZCB3YW50IHRvIHVuZGVyc3RhbmQgaWYgd2UgbmVlZCB0aGUgcHJlY2lzaW9uIGFuZCBjYXBhYmlsaXRpZXMgdGhhdCBUQVBSSU8gb2ZmZXJzLiBXZSBzaG91bGQgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IFRBUFJJTyBjb21wYXJlcyB0byBzaW1wbGVyIHNjaGVkdWxpbmcgbWV0aG9kcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDA6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfVEFQUklPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDM3CgkJCQkJCQlvdXRwdXQ6IDEyMQoJCQkJCQkJdGhvdWdodHM6IDYwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsaW5nIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCByZWxhdGVkIHRvIFRBUFJJTyBzY2hlZHVsaW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCYjMzk7cyBhZGRyZXNzaW5nIGEgcG90ZW50aWFsIGlzc3VlIHdpdGggc21hbGwgaW50ZXJ2YWxzLCBsaWtlbHkgcmVsYXRlZCB0byBzb2Z0d2FyZSBzY2hlZHVsaW5nLiBUaGUgY29uZmlncyBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgYXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgpMb29raW5nIGF0IHRoZSBjb2RlLCBJIHNlZSBhIGtleSBjaGVjayB3aXRoaW4gYGZpbGxfc2NoZWRfZW50cnlgOgoKYGBgYwomIzQzOwlpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7IGludGVydmFsICZsdDsgVEFQUklPX01JTl9TV19JTlRFUlZBTCkgewomIzQzOwkJTkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgJiMzNDtJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmcmIzM0Oyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQpgYGAKClRoaXMgbWFrZXMgc3VyZSB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCBpcyBzZW5zaWJsZSB3aGVuIHNvZnR3YXJlIHNjaGVkdWxpbmcgaXMgaW4gdXNlLiBUaGVyZSYjMzk7cyBhIHNpbWlsYXIgY2hlY2sgaW4gYHBhcnNlX3RhcHJpb19zY2hlZHVsZWA6CgpgYGBjCiYjNDM7CWlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS0mZ3Q7ZmxhZ3MpICZhbXA7JmFtcDsKJiM0MzsJICAgIG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IG5ldy0mZ3Q7bnVtX2VudHJpZXMgKiBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7CiYjNDM7CQlOTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCBmb3Igc29mdHdhcmUgc2NoZWR1bGluZyYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CmBgYAoKVGhpcyBvbmUgZm9jdXNlcyBvbiBgY3ljbGVfdGltZWAuIFRoaXMgbWFrZXMgc3VyZSB0aGF0IHRoZSBjeWNsZSB0aW1lIGlzIHNhbmUuIFRoZSB0aGlyZCBwaWVjZSwgZm91bmQgaW4gYGFkdmFuY2Vfc2NoZWRgLCBpbnZvbHZlcyB3aGF0IGhhcHBlbnMgd2hlbiB0aGUgc2NoZWR1bGUgJiMzNDtmYWxscyBiZWhpbmQmIzM0OzoKCmBgYGMKJiM0MztmaXJzdF9ydW46CiYjNDM7CS8qIENoZWNrIGlmIHdlIGZlbGwgYmVoaW5kIGFuZCBhZHZhbmNlIHRoZSBzY2hlZHVsZSBtYXRoZW1hdGljYWxseSAqLwomIzQzOwlpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7CiYjNDM7CQlrdGltZV90IG5vdyA9IHRhcHJpb19nZXRfdGltZShxKTsKJiM0MzsJCWt0aW1lX3QgY3ljbGUgPSBvcGVyLSZndDtjeWNsZV90aW1lOwomIzQzOwkJczY0IG47CiYjNDM7CiYjNDM7CQlpZiAobGlrZWx5KGN5Y2xlKSkgewomIzQzOwkJCW4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7CiYjNDM7CQkJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW5kX3RpbWUsIChuICYjNDM7IDEpICogY3ljbGUpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CiYjNDM7CQkJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKJiM0MzsJCQkJaWYgKG5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKQomIzQzOwkJCQkJbmV4dC0mZ3Q7Z2F0ZV9jbG9zZV90aW1lW3RjXSA9CiYjNDM7CQkJCQkJa3RpbWVfYWRkX25zKG5leHQtJmd0O2dhdGVfY2xvc2VfdGltZVt0Y10sCiYjNDM7CQkJCQkJCSAgICAgKG4gJiM0MzsgMSkgKiBjeWNsZSk7CiYjNDM7CQkJfQomIzQzOwkJfQomIzQzOwl9CmBgYAoKVGhpcyBsb29rcyBsaWtlIHRoZSBjb3JlIGxvZ2ljIHRvIHByZXZlbnQgYSBDUFUgc3RhbGwgb3IgaW5maW5pdGUgbG9vcC4gSWYgdGhlIGN1cnJlbnQgdGltZSBoYXMgcGFzc2VkIHRoZSBzY2hlZHVsZWQgZW5kIHRpbWUsIGl0IG1hdGhlbWF0aWNhbGx5IGFkdmFuY2VzIHRoZSBzY2hlZHVsZSBieSBhZGRpbmcgbXVsdGlwbGVzIG9mIHRoZSBjeWNsZSB0aW1lLgoKU28sIHRoZSBvdmVyYWxsIGltcGFjdCBpcyBmdW5jdGlvbmFsLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBhZGRpbmcgc29tZSBjaGVja3Mgb24gY29uZmlndXJhdGlvbiB2YWx1ZXMgdG8gYXZvaWQgaXNzdWVzLiBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcyBjaGFuZ2UuIExldCBtZSBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAwOjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjI5LjQ2NzAyODA1N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIzOTI3ODg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjI5LjQ2NzAzMzY3N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE5NTM3ODE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODA2MmFhMDYzYzVmNjQyMDU2N2VlM2ZmZjFhMDBiMWFjYzdkYmIwNVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDAwOjAwOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuaW5kZXggMjk5MjM0YTVmMGZlNi4uNjQ2MDBmM2JjMzM4ZiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbkBAIC00MCw2ICs0MCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3RhdGljX2tleV9mYWxzZSB0YXByaW9faGF2ZV93b3JraW5nX21xcHJpbztcXG4gXFxuICNkZWZpbmUgVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcXHUwMDI2IFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QpXFxuICNkZWZpbmUgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQoZmxhZ3MpICgoZmxhZ3MpIFxcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKVxcbisjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUwgNTAwMDAgLyogNTAgdXMgKi9cXG4gI2RlZmluZSBUQVBSSU9fU1VQUE9SVEVEX0ZMQUdTIFxcXFxcXG4gXFx0KFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QgfCBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpXFxuICNkZWZpbmUgVEFQUklPX0ZMQUdTX0lOVkFMSUQgVTMyX01BWFxcbkBAIC05ODAsMTAgKzk4MSwzMSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdGVuZF90aW1lID0gbmV4dC1cXHUwMDNlZW5kX3RpbWU7XFxuIFxcdH1cXG4gXFxuK2ZpcnN0X3J1bjpcXG4rXFx0LyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovXFxuK1xcdGlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHtcXG4rXFx0XFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XFxuK1xcdFxcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVxcdTAwM2VjeWNsZV90aW1lO1xcbitcXHRcXHRzNjQgbjtcXG4rXFxuK1xcdFxcdGlmIChsaWtlbHkoY3ljbGUpKSB7XFxuK1xcdFxcdFxcdG4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7XFxuK1xcdFxcdFxcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVuZF90aW1lLCAobiArIDEpICogY3ljbGUpO1xcbitcXHRcXHRcXHRvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIChuICsgMSkgKiBjeWNsZSk7XFxuK1xcbitcXHRcXHRcXHRmb3IgKHRjID0gMDsgdGMgXFx1MDAzYyBudW1fdGM7IHRjKyspIHtcXG4rXFx0XFx0XFx0XFx0aWYgKG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKVxcbitcXHRcXHRcXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cXG4rXFx0XFx0XFx0XFx0XFx0XFx0a3RpbWVfYWRkX25zKG5leHQtXFx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10sXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgKG4gKyAxKSAqIGN5Y2xlKTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdG5leHQtXFx1MDAzZWVuZF90aW1lID0gZW5kX3RpbWU7XFxuIFxcdHRhcHJpb19zZXRfYnVkZ2V0cyhxLCBvcGVyLCBuZXh0KTtcXG4gXFxuLWZpcnN0X3J1bjpcXG4gXFx0cmN1X2Fzc2lnbl9wb2ludGVyKHEtXFx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cS1cXHUwMDNlY3VycmVudF9lbnRyeV9sb2NrKTtcXG4gXFxuQEAgLTEwNjEsNiArMTA4MywxMSBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjYgaW50ZXJ2YWwgXFx1MDAzYyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7XFxuK1xcdFxcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFxcXCJJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdGVudHJ5LVxcdTAwM2VpbnRlcnZhbCA9IGludGVydmFsO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTExNzEsNiArMTE5OCwxMiBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXFx1MDAzZWZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmV3LVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2MgbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcXG4rXFx0XFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXFxcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdH1cXG4rXFxuIFxcdHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMocSwgbmV3KTtcXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDoyOS44ODczNDk0NDNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0NjEwMzU5NTgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgdG8gbWF0aGVtYXRpY2FsbHkgYWR2YW5jZSB0aGUgc2NoZWR1bGUgaWYgaXQgZmFsbHMgYmVoaW5kLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBDUFUgc3RhbGxzIG9yIGluZmluaXRlIGxvb3BzIGluIHRoZSBhZHZhbmNlX3NjaGVkIHRpbWVyIGNhbGxiYWNrLiBUaGUgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgYWZmZWN0IHRoZSBjb3JlIGxvZ2ljIG9mIHRoZSB0YXByaW8gcWRpc2MsIG1ha2luZyBpdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MDYyYWEwNjNjNWY2NDIwNTY3ZWUzZmZmMWEwMGIxYWNjN2RiYjA1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwMDowMDoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li42NDYwMGYzYmMzMzhmIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTQwLDYgKzQwLDcgQEAgc3RhdGljIHN0cnVjdCBzdGF0aWNfa2V5X2ZhbHNlIHRhcHJpb19oYXZlX3dvcmtpbmdfbXFwcmlvO1xuIFxuICNkZWZpbmUgVFhUSU1FX0FTU0lTVF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfVFhUSU1FX0FTU0lTVClcbiAjZGVmaW5lIEZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKGZsYWdzKSAoKGZsYWdzKSBcdTAwMjYgVENBX1RBUFJJT19BVFRSX0ZMQUdfRlVMTF9PRkZMT0FEKVxuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTCA1MDAwMCAvKiA1MCB1cyAqL1xuICNkZWZpbmUgVEFQUklPX1NVUFBPUlRFRF9GTEFHUyBcXFxuIFx0KFRDQV9UQVBSSU9fQVRUUl9GTEFHX1RYVElNRV9BU1NJU1QgfCBUQ0FfVEFQUklPX0FUVFJfRkxBR19GVUxMX09GRkxPQUQpXG4gI2RlZmluZSBUQVBSSU9fRkxBR1NfSU5WQUxJRCBVMzJfTUFYXG5AQCAtOTgwLDEwICs5ODEsMzEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRlbmRfdGltZSA9IG5leHQtXHUwMDNlZW5kX3RpbWU7XG4gXHR9XG4gXG4rZmlyc3RfcnVuOlxuK1x0LyogQ2hlY2sgaWYgd2UgZmVsbCBiZWhpbmQgYW5kIGFkdmFuY2UgdGhlIHNjaGVkdWxlIG1hdGhlbWF0aWNhbGx5ICovXG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYWZ0ZXIodGFwcmlvX2dldF90aW1lKHEpLCBlbmRfdGltZSkpKSB7XG4rXHRcdGt0aW1lX3Qgbm93ID0gdGFwcmlvX2dldF90aW1lKHEpO1xuK1x0XHRrdGltZV90IGN5Y2xlID0gb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuK1x0XHRzNjQgbjtcbitcbitcdFx0aWYgKGxpa2VseShjeWNsZSkpIHtcbitcdFx0XHRuID0gZGl2NjRfczY0KGt0aW1lX3N1Yl9ucyhub3csIGVuZF90aW1lKSwgY3ljbGUpO1xuK1x0XHRcdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVuZF90aW1lLCAobiArIDEpICogY3ljbGUpO1xuK1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbitcdFx0XHRcdFx0XHRcdCAgICAobiArIDEpICogY3ljbGUpO1xuK1xuK1x0XHRcdGZvciAodGMgPSAwOyB0YyBcdTAwM2MgbnVtX3RjOyB0YysrKSB7XG4rXHRcdFx0XHRpZiAobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdICE9IEtUSU1FX01BWClcbitcdFx0XHRcdFx0bmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID1cbitcdFx0XHRcdFx0XHRrdGltZV9hZGRfbnMobmV4dC1cdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdLFxuK1x0XHRcdFx0XHRcdFx0ICAgICAobiArIDEpICogY3ljbGUpO1xuK1x0XHRcdH1cbitcdFx0fVxuK1x0fVxuK1xuIFx0bmV4dC1cdTAwM2VlbmRfdGltZSA9IGVuZF90aW1lO1xuIFx0dGFwcmlvX3NldF9idWRnZXRzKHEsIG9wZXIsIG5leHQpO1xuIFxuLWZpcnN0X3J1bjpcbiBcdHJjdV9hc3NpZ25fcG9pbnRlcihxLVx1MDAzZWN1cnJlbnRfZW50cnksIG5leHQpO1xuIFx0c3Bpbl91bmxvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuIFxuQEAgLTEwNjEsNiArMTA4MywxMSBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2IGludGVydmFsIFx1MDAzYyBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMKSB7XG4rXHRcdE5MX1NFVF9FUlJfTVNHX01PRChleHRhY2ssIFwiSW50ZXJ2YWwgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGVudHJ5LVx1MDAzZWludGVydmFsID0gaW50ZXJ2YWw7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC0xMTcxLDYgKzExOTgsMTIgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4rXHQgICAgbmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCInY3ljbGVfdGltZScgaXMgdG9vIHNtYWxsIGZvciBzb2Z0d2FyZSBzY2hlZHVsaW5nXCIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHRhcHJpb19jYWxjdWxhdGVfZ2F0ZV9kdXJhdGlvbnMocSwgbmV3KTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MjkuODg3MzUxMTIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzNjc1NTczMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRBUFJJTyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIGludHJvZHVjaW5nIGEgbmV3IG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwsIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYCwgc2V0IHRvIDUwIG1pY3Jvc2Vjb25kcy4gVGhhdCdzIHRoZSBmaXJzdCBzaWduaWZpY2FudCB0aGluZy4gTXkgc3BpZGV5LXNlbnNlIGlzIHRlbGxpbmcgbWUgdGhpcyBpcyBsaWtlbHkgYWJvdXQgaGFuZGxpbmcgb3ZlcmhlYWQgYW5kIHByZXZlbnRpbmcgdGhlIHNjaGVkdWxlciBmcm9tIHRyeWluZyB0byBkbyB0aGluZ3MgdG9vIGZyZXF1ZW50bHkgaW4gc29mdHdhcmUsIG1heWJlIHByZXZlbnRpbmcgZXhjZXNzaXZlIGNvbnRleHQgc3dpdGNoaW5nIG9yIHVubmVjZXNzYXJ5IHByb2Nlc3NpbmcuXG5cblRoZSBjb2RlIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBjaGVja2luZyB0aGlzIGludGVydmFsIGluIHR3byBwbGFjZXMsIGFuZCB0aG9zZSBjaGVja3MgYXJlIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGBGVUxMX09GRkxPQURfSVNfRU5BQkxFRGAgKm5vdCogYmVpbmcgc2V0LiBUaGF0IG1lYW5zIHRoaXMgbWluaW11bSBpbnRlcnZhbCBpcyBvbmx5IGVuZm9yY2VkIHdoZW4gaGFyZHdhcmUgb2ZmbG9hZCBpc24ndCBiZWluZyB1c2VkLiBPbmUgY2hlY2sgaXMgb24gdGhlIGBpbnRlcnZhbGAgaXRzZWxmLCB0aGUgb3RoZXIgbG9va3MgYXQgYG5ldy1cdTAwM2VjeWNsZV90aW1lYCBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGVudHJpZXMgbXVsdGlwbGllZCBieSB0aGF0IGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdGhpcyBndWFyZHMgYWdhaW5zdCBzY2hlZHVsZXMgYmVpbmcgc2V0IHVwIHRoYXQgYXJlIHRvbyB0aWdodCBmb3IgdGhlIHNvZnR3YXJlIGltcGxlbWVudGF0aW9uIHRvIGhhbmRsZS4gSXQncyBhIHByb3RlY3Rpb24gbWVjaGFuaXNtLlxuXG5UaGUgZmluYWwga2V5IGNoYW5nZSBmb2N1c2VzIG9uIGBhZHZhbmNlX3NjaGVkYCwgd2hpY2ggaGludHMgYXQgaGFuZGxpbmcgc2l0dWF0aW9ucyB3aGVyZSB0aGUgc2NoZWR1bGVyIG1pZ2h0IGZhbGwgYmVoaW5kLiBUaGlzIGlzIGNydWNpYWw7IGlmIGl0J3MgbGFnZ2luZywgdGhlIGVudGlyZSBxdWFsaXR5IG9mIHNlcnZpY2UgdGhlIHNjaGVkdWxlciBpcyBzdXBwb3NlZCB0byBkZWxpdmVyIGNhbiBiZSBpbXBhY3RlZC4gU28sIEkgbmVlZCB0byBsb29rIGNsb3NlbHkgYXQgaG93IGl0IGhhbmRsZXMgdGhlIFwiZmFsbGluZyBiZWhpbmRcIiBtYXRoZW1hdGljYWxseS4gV2hhdCdzIHRoZSBzdHJhdGVneT8gRG9lcyBpdCBkcm9wIHBhY2tldHM/IERvZXMgaXQgYWRqdXN0IHRoZSBzY2hlZHVsZSBkeW5hbWljYWxseT8gRG9lcyBpdCBwcmlvcml0aXplIGNyaXRpY2FsIHRyYWZmaWM/XG5cbk5vdywgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgSSBuZWVkIHRvIGtub3cgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYHNjaF90YXByaW8uY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgRlVMTF9PRkZMT0FEX0lTX0VOQUJMRURgIGlzIGRlZmluZWQsIGZvciBzdGFydGVycy4gV2hlcmUgaXMgYHNjaF90YXByaW9gIGNvbmZpZ3VyZWQ/IExldCdzIGNoZWNrIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGZvciBob3cgYHNjaF90YXByaW8ub2AgaXMgYnVpbHQuIFRoYXQgd2lsbCBnaXZlIG1lIGEgY2x1ZSBhcyB0byB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGV2YW50LCBhbmQgSSBjYW4gc3RhcnQgdGhlcmUgdG8gZ2V0IGEgYmV0dGVyIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDgsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDozNS4wMjQxMDg2ODRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIyNzM3MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2NoX3RhcHJpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19ORVRfU0NIX0VURilcXHQrPSBzY2hfZXRmLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVxcdCs9IHNjaF90YXByaW8ub1xcbm5ldC9zY2hlZC9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfTkVUX1NDSF9CUEYpXFx0Kz0gYnBmX3FkaXNjLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MzUuMTA2Mzg2NzQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA1MTc4MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczpcblxuKipEZXBlbmRlbmNpZXMgQ2hlY2sgZm9yIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmcgSSdtIGxvb2tpbmcgYXQgaXMgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQsIGJ1dCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSBpZiB0aGlzIHNwZWNpZmljIHNldHRpbmcgaGFzIGFueSBkZXBlbmRlbnQgY29uZmlndXJhdGlvbnMuIEl0J3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiBgTkVUX1NDSF9UQVBSSU9gJ3MgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gb3RoZXIgb3B0aW9ucyBiZWluZyBlbmFibGVkIG9yIHByb3Blcmx5IGNvbmZpZ3VyZWQuIEF2b2lkaW5nIG92ZXJsb29raW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIHNhdmUgbWUgaGVhZGFjaGVzIGRvd24gdGhlIGxpbmUgYW5kIGVuc3VyZSBhIHJvYnVzdCBhbmQgZnVuY3Rpb25hbCBvdXRjb21lLiBMZXQncyBzZWUgd2hhdCBlbHNlIG5lZWRzIGNvbnNpZGVyYXRpb24uLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzU4MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjM4LjE1ODE2OTQzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTY4ODY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6MzguMjAzODYzMzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTg1MDc3NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBORVRfU0NIX1RBUFJJTyBLY29uZmlnKipcblxuQWxyaWdodCwgbGV0J3MgZGlzc2VjdCB0aGUgS2NvbmZpZyBlbnRyeSBmb3IgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGl0cyBwbGFjZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxlciBoaWVyYXJjaHkuIFdoZXJlIGRvZXMgaXQgZml0PyBJcyBpdCB1bmRlciBhIG1vcmUgZ2VuZXJpYyBgTkVUX1NDSGAgdW1icmVsbGEsIG9yIGlzIGl0IG1vcmUgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGFyY2hpdGVjdHVyYWwgb3IgcHJvdG9jb2wgZmVhdHVyZSBzZXQ/IEknbSBpbW1lZGlhdGVseSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXM6IERvZXMgaXQgcmVseSBvbiBzcGVjaWZpYyBoYXJkd2FyZSBjYXBhYmlsaXRpZXMsIGxpa2UgdGltZXN0YW1waW5nIG9yIHBhcnRpY3VsYXIgRXRoZXJuZXQgY29udHJvbGxlcnM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBjb25mbGljdHMgd2l0aCBvdGhlciBzY2hlZHVsZXJzLCBvciBhcmUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMgZGVzaWduZWQgZm9yIGNvbXBhdGliaWxpdHk/XG5cbkknbSBtZW50YWxseSBtYXBwaW5nIHRoZSByZWxldmFudCBgI2lmZGVmYCBibG9ja3MuIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBjb25kaXRpb25zIHRoYXQgZW5hYmxlIG9yIGRpc2FibGUgaXQuIEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpc3N1ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgcmVnYXJkaW5nIGRlcGVuZGVuY2llcywgYnVpbGQgb3B0aW9ucyBvciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucz8gSSdtIHRyeWluZyB0byBpZGVudGlmeSB3aGF0IG90aGVyIGZlYXR1cmVzL29wdGlvbnMgaGF2ZSB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGZvciB0YXByaW8gdG8gYmUgYXZhaWxhYmxlLiBBbHNvLCBJJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgY29tbWVudGFyeSB0aGF0IHByb3ZpZGVzIGNvbnRleHQgb3IgZGVzaWduIGludGVudC4gV2hhdCBhcmUgdGhlIGtleSBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggZW5hYmxpbmcgdGhpcyBzY2hlZHVsZXI/XG5cbk15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBjb25maWd1cmF0aW9uOiBXaGF0IGxldmVsIG9mIGdyYW51bGFyIGNvbnRyb2wgZG8gSSBoYXZlIG92ZXIgaXRzIHBhcmFtZXRlcnM/IEFyZSB0aGVyZSBydW50aW1lIHR1bmFibGVzIGV4cG9zZWQgdGhyb3VnaCBzeXNmcyBvciBuZXRsaW5rLCBvciBpcyBpdCBhbG1vc3QgZW50aXJlbHkgY29tcGlsZS10aW1lIGNvbmZpZ3VyZWQ/IEknbGwgYmUgbG9va2luZyBmb3IgaGludHMgb24gdHlwaWNhbCB1c2FnZSBzY2VuYXJpb3MuIElzIHRoaXMgc2NoZWR1bGVyIHByaW1hcmlseSBmb3IgVFNOIChUaW1lLVNlbnNpdGl2ZSBOZXR3b3JraW5nKSBlbnZpcm9ubWVudHMsIG9yIGRvZXMgaXQgaGF2ZSBicm9hZGVyIGFwcGxpY2FiaWxpdHk/IEFyZSB0aGVyZSBhbnkgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIHJlZmVyZW5jZXM/IEknbSBxdWlja2x5IGZpbHRlcmluZyBmb3IgYW55dGhpbmcgdGhhdCB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBgTkVUX1NDSF9UQVBSSU9gLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODY1LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDIuMzg4OTQ0OTQ3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3NTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3MixcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE3MjpcXHRjb25maWcgTkVUX1NDSF9UQVBSSU9cXG4gMTczOlxcdFxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG4gMTc0OlxcdFxcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcXG4gMTc1OlxcdFxcdGhlbHBcXG4gMTc2OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XFxuIDE3NzpcXHRcXHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRcXHQgIFNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHUwMDNlIGZvciBtb3JlIGRldGFpbHMuXFxuIDE4MDpcXHRcXG4gMTgxOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxODI6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cXG4gMTgzOlxcdFxcbiAxODQ6XFx0Y29uZmlnIE5FVF9TQ0hfR1JFRFxcbiAxODU6XFx0XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcXFwiXFxuIDE4NjpcXHRcXHRoZWxwXFxuIDE4NzpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cXG4gMTg4OlxcdFxcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xcbiAxODk6XFx0XFx0ICAoc2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF9yZWQuY1xcdTAwM2UgZm9yIGRldGFpbHMgYW5kXFxuIDE5MDpcXHRcXHQgIHJlZmVyZW5jZXMgYWJvdXQgdGhlIGFsZ29yaXRobSkuXFxuIDE5MTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDIuMzg5MDU0MjQ3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2MjY5Njg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgVGFwcmlvIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIGBORVRfU0NIX1RBUFJJT2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6b29tIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBjaGFuZ2VzLCB3aGljaCBzZWVtIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZnVuY3Rpb25zIGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBpbnN0aW5jdGl2ZWx5IGtub3cgdGhhdCB0aGVzZSBhcmUgbGlrZWx5IHRoZSBoZWFydCBvZiB0aGUgc2NoZWR1bGluZyBtb2RpZmljYXRpb25zLCBhbmQgc28gSSBzaG91bGQgYWRkIHRoZW0gdG8gbXkgbWVudGFsIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2AuXG5cbk5vdywgYmVmb3JlIEkgZGlnIHRvbyBkZWVwLCBhIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgZnVuY3Rpb25zIGFyZSBzdGF0aWMgaXMgaW4gb3JkZXIuIEFuZCB5ZXAsIGl0IGFwcGVhcnMgdGhleSBhbGwgYXJlOiBgYWR2YW5jZV9zY2hlZGAsIGBmaWxsX3NjaGVkX2VudHJ5YCwgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFyZSBhbGwgZmxhZ2dlZCBhcyBzdGF0aWMuIE9rYXksIHRoYXQncyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLCBidXQgaXQgZG9lcyBtZWFuIHRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlci4gSWYgdGhleSdyZSBpbmxpbmVkLCB0aGV5IG1pZ2h0IG5vdCBsZWF2ZSB0aGUgc3ltYm9scyBhcyBhIHRyYWNlLiBJbmxpbmluZyB3b3VsZCBoaWRlIHRoZWlyIHRydWUgZGVwZW5kZW5jeS5cblxuU28sIG5leHQgc3RlcDogSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zLCB0aGUgcHVibGljIGVudHJ5IHBvaW50cywgdGhhdCBjYWxsIHRoZXNlIGZ1bmN0aW9ucy4gVGhvc2UgYXJlIHRoZSBrZXkgdGFyZ2V0cyBmb3IgdW5kZXJzdGFuZGluZyB0aGUgZnVsbCBpbXBhY3Qgb2YgdGhlIHBhdGNoLiBUaG9zZSBhcmUgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gdHJhY2sgZG93biB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBzdGF0aWMgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGluIGEgYnJvYWRlciBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDYuNTUxNzUzMzY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQ0NTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYXJzZV90YXByaW9fc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTExMTU9c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTQtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU1OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTYtXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg1MD1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk0NC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5NDU6XFx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTQ2LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo0Ni41OTcyMTQ5OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzExNjk3ODQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBhbmFseXppbmcgdGhhdCBjb2RlOlxuXG4qKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGB0YXByaW9fY2hhbmdlYCBjYWxscyBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gVGhhdCdzIHRoZSBleHBlY3RlZCBlbnRyeSBwb2ludCBmb3IgYW55IG1vZGlmaWNhdGlvbiB0byB0aGUgVEFQUklPIHNjaGVkdWxlIOKAkyBtYWtlcyBwZXJmZWN0IHNlbnNlLiBOb3csIGxldCdzIGRyaWxsIGRvd24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaGFwcGVucyAqd2l0aGluKiB0aGF0IGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIEknbSBtb3N0IGludGVyZXN0ZWQgaW4gaG93IHRoZSBzY2hlZHVsZSBlbnRyaWVzIGFyZSBhY3R1YWxseSBwb3B1bGF0ZWQuIE15IGd1dCB0ZWxscyBtZSB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHNjaGVkdWxpbmcgaXMgbGlrZWx5IHRvIHJlc2lkZS4gSSdtIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byBleGFtaW5pbmcgdGhlIGBmaWxsX3NjaGVkX2VudHJ5YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgc2NoZWR1bGUgaXMgYmVpbmcgcG9wdWxhdGVkIGFmdGVyIHRoZSBwYXJzaW5nLiBUaGlzIGlzIHdoZXJlIEknbGwgZ2V0IGEgcmVhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGVzZSBzY2hlZHVsZXMgYXJlIGNvbnN0cnVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzA0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDkuNzE0MTk2NTUzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDAwOTc4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmaWxsX3NjaGVkX2VudHJ5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMDQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTA1OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEwNTk6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEwNjAtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTEwOTY9c3RhdGljIGludCBwYXJzZV9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTExLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTExMjpcXHRyZXR1cm4gZmlsbF9zY2hlZF9lbnRyeShxLCB0YiwgZW50cnksIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTEzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDA6NDkuNzU4MjEyOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM2NzEzMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6XG5cbioqTmF2aWdhdGluZyB0aGUgVGFwcmlvIFNjaGVkdWxlIFBhcnNpbmcgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IHRoaXMgYHRhcHJpb19jaGFuZ2VgIGZ1bmN0aW9uIGlzIHdvcmtpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIHNjaGVkdWxpbmcgbG9naWMuIFRoZSBjYWxsIHN0YWNrIEkgc2VlIGlzOiBgdGFwcmlvX2NoYW5nZWAgY2FsbHMgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIHdoaWNoIHRoZW4gY2FsbHMgYHBhcnNlX3NjaGVkX2xpc3RgLiBUaGF0IGluIHR1cm4gY2FsbHMgYHBhcnNlX3NjaGVkX2VudHJ5YC4gQW5kIGZpbmFsbHksIHdlIGdldCB0byBgZmlsbF9zY2hlZF9lbnRyeWAuIFRoYXQncyB0aGUgY29yZSwgdGhlbi4gTm93LCB3aGVyZSBkb2VzIGBhZHZhbmNlX3NjaGVkYCBmaXQgaW50byBhbGwgdGhpcz8gSSdkIGJldHRlciB0cmFjZSB0aGF0IG5leHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo1Mi45OTQ5MjgyMDJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDgxNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkdmFuY2Vfc2NoZWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg4NT1zdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTE4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTE5OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTkyMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4NTA9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5ODQtXFx0ICAgICFocnRpbWVyX2FjdGl2ZShcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lcikpIHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODU6XFx0XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lciwgYWR2YW5jZV9zY2hlZCwgcS1cXHUwMDNlY2xvY2tpZCwgSFJUSU1FUl9NT0RFX0FCUyk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTg2LVxcdH1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwMy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMDQ6XFx0XFx0LyogTm90IGdvaW5nIHRvIHJhY2UgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCksIGJ1dCBzdGlsbCAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAwNS1cXHRcXHRhZG1pbiA9IHJjdV9yZXBsYWNlX3BvaW50ZXIocS1cXHUwMDNlYWRtaW5fc2NoZWQsIG5ld19hZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjAxMS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIwMTI6XFx0XFx0LyogUHJvdGVjdHMgYWdhaW5zdCBhZHZhbmNlX3NjaGVkKCkgKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwMTMtXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jaywgZmxhZ3MpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yMDk5PXN0YXRpYyBpbnQgdGFwcmlvX2luaXQoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjEwNy1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxMDg6XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2cS1cXHUwMDNlYWR2YW5jZV90aW1lciwgYWR2YW5jZV9zY2hlZCwgQ0xPQ0tfVEFJLCBIUlRJTUVSX01PREVfQUJTKTtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMDktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjUzLjAzOTAxNDM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzY5MTcyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkFuYWx5emluZyB0aGUgU2NoZWR1bGluZyBTdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNjaGVkdWxpbmcgY29kZS4uLiBgYWR2YW5jZV9zY2hlZGAg4oCTIHRoYXQncyBhIGNsYXNzaWMgdGltZXIgY2FsbGJhY2ssIG5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIFRoZSByZWFsIG1lYXQgaXMgaW4gdGhlIGVudHJ5IHBvaW50cy4gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSB0aGUgb25lcyB0aGF0IGp1bXAgb3V0IGF0IG1lIGFzIHRoZSBtYWluIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIHdob2xlIHNjaGVkdWxpbmcgcHJvY2Vzcy4gTXkgaW1tZWRpYXRlIG5leHQgdGhvdWdodCBpczogKkFyZSB0aGVzZSB0aGUgb25seSBlbnRyeSBwb2ludHM/KiBUaGVyZSdzIGFsd2F5cyB0aGUgcG9zc2liaWxpdHkgb2Ygc3VidGxlIGludGVyYWN0aW9ucyBvciBhbHRlcm5hdGl2ZSBpbml0aWFsaXphdGlvbnMgdGhhdCBhcmVuJ3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gSXQncyBjcnVjaWFsIHRvIGNvbmZpcm0gdGhpcyDigJMgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcnVjaWFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gSSdsbCBuZWVkIHRvIGNoZWNrIGZvciBoaWRkZW4gZnVuY3Rpb25zIHRoYXQgbWF5IGZlZWQgaW50byB0aGUgY29yZSBwcm9jZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMDo1Ni4yNzU5MzQ0ODJaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTIzOTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRhcHJpb19jaGFuZ2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4MzA9c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODQ5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTg1MDpzdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NTEtXFx0XFx0XFx0IHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjA5OT1zdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMTItXFx0LyogV2Ugb25seSBzdXBwb3J0IHN0YXRpYyBjbG9ja2lkcy4gVXNlIGFuIGludmFsaWQgdmFsdWUgYXMgZGVmYXVsdFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjExMzpcXHQgKiBhbmQgZ2V0IHRoZSB2YWxpZCBvbmUgb24gdGFwcmlvX2NoYW5nZSgpLlxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjExNC1cXHQgKi9cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjE2MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxNjE6XFx0cmV0dXJuIHRhcHJpb19jaGFuZ2Uoc2NoLCBvcHQsIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTYyLX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjU3ND1zdGF0aWMgc3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NzgtXFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU3OTpcXHQuY2hhbmdlXFx0XFx0PSB0YXByaW9fY2hhbmdlLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU4MC1cXHQuZGVzdHJveVxcdD0gdGFwcmlvX2Rlc3Ryb3ksXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAwOjU2LjMyNTA2MjU5OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjI4ODQ1MTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFRBUFJJTyBGdXp6aW5nIFN0cmF0ZWd5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBUQVBSSU8gcGF0Y2ggYW5kIGZpZ3VyaW5nIG91dCB0aGUgYmVzdCBmdXp6aW5nIGFwcHJvYWNoLiBJdCBsb29rcyBsaWtlIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBzY2hlZHVsZXIuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBidWcgd2hlcmUgc21hbGwgaW50ZXJ2YWxzIGNvdWxkIGxlYWQgdG8gZW5kbGVzcyBsb29wcyBvciBoaWdoIENQVSB1c2FnZSBpbiBgYWR2YW5jZV9zY2hlZGAuIFRoZSBmaXggaW5jbHVkZXMgYSBtYXRoZW1hdGljYWwgYWRqdXN0bWVudCBpbiBgYWR2YW5jZV9zY2hlZGAgdG8gaGFuZGxlIHNjaGVkdWxpbmcgZGVsYXlzLCB3aGljaCBpcyBhIGdvb2Qgc2lnbiBmb3Igc3RhYmlsaXR5LiBUaGlzIGlzIGRlZmluaXRlbHkgYSBwYXRjaCB3b3J0aCBmdXp6aW5nIGFnZ3Jlc3NpdmVseS5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZvY3VzIGZ1enppbmcgZWZmb3J0cyBvbiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgZXhwb3NlIHRoZSBjb25maWd1cmF0aW9uIHBhcnNpbmcgbG9naWMuIGBhZHZhbmNlX3NjaGVkYCBpdHNlbGYgaXMgYSB0aW1lciBjYWxsYmFjaywgc28gbm90IGRpcmVjdGx5IHRyaWdnZXJlZCBieSBhIHN5c2NhbGwsIGJ1dCBieSB0aGUgY29uZmlnLiBGdXp6aW5nIHRoZSBjb25maWcgaXMga2V5LiBgdGFwcmlvX2VucXVldWVgIG9yIGB0YXByaW9fZGVxdWV1ZWAgKmNvdWxkKiBiZSByZWxldmFudCwgYnV0IGdpdmVuIHRoZSBwYXRjaCdzIGZvY3VzLCBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMuXG5cblRoZSBwYXRjaCBpdHNlbGYgbW9kaWZpZXMgdGhlIGBhZHZhbmNlX3NjaGVkYCB0aW1lciBjYWxsYmFjaywgYnV0IHNpbmNlIGl0J3MgdHJpZ2dlcmVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLCBJJ20gZ29pbmcgdG8gYWRkIGB0YXByaW9fY2hhbmdlYCBhbmQgYHRhcHJpb19pbml0YCB0byB0aGUgYEZvY3VzU3ltYm9sc2AuIElmIHRoZSBmdXp6ZXIgYWxsb3dzIHRpbWVyIGhvb2tzIChzeXprYWxsZXIgY2FuIHNvbWV0aW1lcyBkbyBpdCwgdGhvdWdoIHN5c2NhbGwgZW50cnkgcG9pbnRzIGFyZSBnZW5lcmFsbHkgYmV0dGVyKSwgSSBjb3VsZCBhbHNvIGFkZCBgYWR2YW5jZV9zY2hlZGAsIGJ1dCBJJ2xsIGFkZCBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgZmlyc3QsIHRvIGtlZXAgaXQgc2ltcGxlLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBidWlsZCBjb25maWcgaXMgY29ycmVjdC4gYE5FVF9TQ0hfVEFQUklPYCBkZXBlbmRzIG9uIGBORVRfU0NIX01RUFJJT19MSUJgIGFuZCBpcyB1bmRlciBgTkVUX1NDSEVEYCBpbiBgbWVudWNvbmZpZ2AuIFNvIGBORVRfU0NIRURgIGhhcyB0byBiZSBlbmFibGVkLiBJIHdpbGwgbmVlZCB0byB2ZXJpZnkgdGhpcyBpbiB0aGUga2VybmVsIGNvbmZpZyBiZWZvcmUgSSBzdGFydCBmdXp6aW5nLiBMZXQncyBtYWtlIHN1cmUgdGhlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHByb3Blcmx5IGFuZCB0aGVuIEknbGwgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDE6MDMuNTUzOTEwNzU5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjYxOTM4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIE5FVF9TQ0hFRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZy01LVxcbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcXG5uZXQvc2NoZWQvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlFvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDA6MDE6MDMuNjIwNTM2Mjc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTg1MTk3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIHNlZSB3ZSdyZSBsb29raW5nIGF0IG5ldHdvcmsgc2NoZWR1bGluZywgd2hpY2ggbmF0dXJhbGx5IGJyaW5ncyBgTkVUX1NDSEVEYCB0byBtaW5kIOKAkyBhIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIHVwIGltbWVkaWF0ZWx5IGlzOiAqd2hhdCBhYm91dCogYE5FVF9TQ0hfVEFQUklPYD8gR2l2ZW4gdGhlIHBvdGVudGlhbCByZXF1aXJlbWVudHMgZm9yIHRyYWZmaWMgc2hhcGluZyBhbmQgcHJpb3JpdHkgaGFuZGxpbmcsIEknZCB3YW50IHRvIHVuZGVyc3RhbmQgaWYgd2UgbmVlZCB0aGUgcHJlY2lzaW9uIGFuZCBjYXBhYmlsaXRpZXMgdGhhdCBUQVBSSU8gb2ZmZXJzLiBXZSBzaG91bGQgY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IFRBUFJJTyBjb21wYXJlcyB0byBzaW1wbGVyIHNjaGVkdWxpbmcgbWV0aG9kcy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE2MiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAxOjA2LjY3OTA1OTY3N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg5NDQ4NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVF9TQ0hfVEFQUklPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTE2Nz1jb25maWcgTkVUX1NDSF9NUVBSSU9fTElCXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXFxubmV0L3NjaGVkL0tjb25maWc6MTcyOmNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbm5ldC9zY2hlZC9LY29uZmlnLTE3My1cXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDAwOjAxOjA2LjcyODAxMDc0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTA4NjMyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVEFQUklPIFNjaGVkdWxpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBwYXRjaCByZWxhdGVkIHRvIFRBUFJJTyBzY2hlZHVsaW5nLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBzbWFsbCBpbnRlcnZhbHMsIGxpa2VseSByZWxhdGVkIHRvIHNvZnR3YXJlIHNjaGVkdWxpbmcuIFRoZSBjb25maWdzIEkgbmVlZCB0byBiZSBhd2FyZSBvZiBhcmUgYE5FVF9TQ0hFRGAgYW5kIGBORVRfU0NIX1RBUFJJT2AgdG8gZW5hYmxlIHRoaXMgZnVuY3Rpb25hbGl0eS5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgSSBzZWUgYSBrZXkgY2hlY2sgd2l0aGluIGBmaWxsX3NjaGVkX2VudHJ5YDpcblxuYGBgY1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjYgaW50ZXJ2YWwgXHUwMDNjIFRBUFJJT19NSU5fU1dfSU5URVJWQUwpIHtcbitcdFx0TkxfU0VUX0VSUl9NU0dfTU9EKGV4dGFjaywgXCJJbnRlcnZhbCB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuYGBgXG5cblRoaXMgbWFrZXMgc3VyZSB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCBpcyBzZW5zaWJsZSB3aGVuIHNvZnR3YXJlIHNjaGVkdWxpbmcgaXMgaW4gdXNlLiBUaGVyZSdzIGEgc2ltaWxhciBjaGVjayBpbiBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYDpcblxuYGBgY1xuK1x0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVx1MDAzZWZsYWdzKSBcdTAwMjZcdTAwMjZcbitcdCAgICBuZXctXHUwMDNlY3ljbGVfdGltZSBcdTAwM2MgbmV3LVx1MDAzZW51bV9lbnRyaWVzICogVEFQUklPX01JTl9TV19JTlRFUlZBTCkge1xuK1x0XHROTF9TRVRfRVJSX01TR19NT0QoZXh0YWNrLCBcIidjeWNsZV90aW1lJyBpcyB0b28gc21hbGwgZm9yIHNvZnR3YXJlIHNjaGVkdWxpbmdcIik7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuYGBgXG5cblRoaXMgb25lIGZvY3VzZXMgb24gYGN5Y2xlX3RpbWVgLiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgY3ljbGUgdGltZSBpcyBzYW5lLiBUaGUgdGhpcmQgcGllY2UsIGZvdW5kIGluIGBhZHZhbmNlX3NjaGVkYCwgaW52b2x2ZXMgd2hhdCBoYXBwZW5zIHdoZW4gdGhlIHNjaGVkdWxlIFwiZmFsbHMgYmVoaW5kXCI6XG5cbmBgYGNcbitmaXJzdF9ydW46XG4rXHQvKiBDaGVjayBpZiB3ZSBmZWxsIGJlaGluZCBhbmQgYWR2YW5jZSB0aGUgc2NoZWR1bGUgbWF0aGVtYXRpY2FsbHkgKi9cbitcdGlmICh1bmxpa2VseShrdGltZV9hZnRlcih0YXByaW9fZ2V0X3RpbWUocSksIGVuZF90aW1lKSkpIHtcbitcdFx0a3RpbWVfdCBub3cgPSB0YXByaW9fZ2V0X3RpbWUocSk7XG4rXHRcdGt0aW1lX3QgY3ljbGUgPSBvcGVyLVx1MDAzZWN5Y2xlX3RpbWU7XG4rXHRcdHM2NCBuO1xuK1xuK1x0XHRpZiAobGlrZWx5KGN5Y2xlKSkge1xuK1x0XHRcdG4gPSBkaXY2NF9zNjQoa3RpbWVfc3ViX25zKG5vdywgZW5kX3RpbWUpLCBjeWNsZSk7XG4rXHRcdFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMoZW5kX3RpbWUsIChuICsgMSkgKiBjeWNsZSk7XG4rXHRcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLFxuK1x0XHRcdFx0XHRcdFx0ICAgIChuICsgMSkgKiBjeWNsZSk7XG4rXG4rXHRcdFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbitcdFx0XHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gIT0gS1RJTUVfTUFYKVxuK1x0XHRcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPVxuK1x0XHRcdFx0XHRcdGt0aW1lX2FkZF9ucyhuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10sXG4rXHRcdFx0XHRcdFx0XHQgICAgIChuICsgMSkgKiBjeWNsZSk7XG4rXHRcdFx0fVxuK1x0XHR9XG4rXHR9XG5gYGBcblxuVGhpcyBsb29rcyBsaWtlIHRoZSBjb3JlIGxvZ2ljIHRvIHByZXZlbnQgYSBDUFUgc3RhbGwgb3IgaW5maW5pdGUgbG9vcC4gSWYgdGhlIGN1cnJlbnQgdGltZSBoYXMgcGFzc2VkIHRoZSBzY2hlZHVsZWQgZW5kIHRpbWUsIGl0IG1hdGhlbWF0aWNhbGx5IGFkdmFuY2VzIHRoZSBzY2hlZHVsZSBieSBhZGRpbmcgbXVsdGlwbGVzIG9mIHRoZSBjeWNsZSB0aW1lLlxuXG5TbywgdGhlIG92ZXJhbGwgaW1wYWN0IGlzIGZ1bmN0aW9uYWwuIEl0IGxvb2tzIGxpa2Ugd2UncmUgYWRkaW5nIHNvbWUgY2hlY2tzIG9uIGNvbmZpZ3VyYXRpb24gdmFsdWVzIHRvIGF2b2lkIGlzc3Vlcy4gSSB0aGluayBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMgY2hhbmdlLiBMZXQgbWUgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDM3LCJPdXRwdXRUb2tlbnMiOjEyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMDowMToxNS42MzY2NDYzNTRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNTQyOTUyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCB0byBtYXRoZW1hdGljYWxseSBhZHZhbmNlIHRoZSBzY2hlZHVsZSBpZiBpdCBmYWxscyBiZWhpbmQuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIENQVSBzdGFsbHMgb3IgaW5maW5pdGUgbG9vcHMgaW4gdGhlIGFkdmFuY2Vfc2NoZWQgdGltZXIgY2FsbGJhY2suIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBhZmZlY3QgdGhlIGNvcmUgbG9naWMgb2YgdGhlIHRhcHJpbyBxZGlzYywgbWFraW5nIGl0IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCIsXG4gICAgXCJORVRfU0NIX1RBUFJJT1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRhcHJpb19jaGFuZ2VcIixcbiAgICBcInRhcHJpb19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIHRvIG1hdGhlbWF0aWNhbGx5IGFkdmFuY2UgdGhlIHNjaGVkdWxlIGlmIGl0IGZhbGxzIGJlaGluZC4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgQ1BVIHN0YWxscyBvciBpbmZpbml0ZSBsb29wcyBpbiB0aGUgYWR2YW5jZV9zY2hlZCB0aW1lciBjYWxsYmFjay4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIGFmZmVjdCB0aGUgY29yZSBsb2dpYyBvZiB0aGUgdGFwcmlvIHFkaXNjLCBtYWtpbmcgaXQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[1] Phase: Succeeded StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 00:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 00:01:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2] Phase: Succeeded StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 00:01:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 00:01:27 +0000 UTC FinishedAt: 2026-08-03 00:01:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf5j4r/series-workflowf5j4r-convert-artifact-2980867963/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 00:01:37 +0000 UTC FinishedAt: 2026-08-03 00:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 00:01:37 +0000 UTC FinishedAt: 2026-08-03 00:19:34 +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:*90a7cd00-7d59-4942-af3e-82256bb03e74,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-workflowf5j4r/series-workflowf5j4r-convert-artifact-2980867963/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": "6302317f-79b2-414c-8582-4ef4f1e8a78c", "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-workflowf5j4r/series-workflowf5j4r-build-action-3316588217/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 00:01:37 +0000 UTC FinishedAt: 2026-08-03 00:19:24 +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:*90a7cd00-7d59-4942-af3e-82256bb03e74,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-workflowf5j4r/series-workflowf5j4r-convert-artifact-2980867963/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": "6302317f-79b2-414c-8582-4ef4f1e8a78c", "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-workflowf5j4r/series-workflowf5j4r-build-action-3316588217/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 00:19:34 +0000 UTC FinishedAt: 2026-08-03 00:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 00:19:34 +0000 UTC FinishedAt: 2026-08-03 00:19:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 00:19:34 +0000 UTC FinishedAt: 2026-08-03 00:19:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 00:19:34 +0000 UTC FinishedAt: 2026-08-03 00:19:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf5j4r/series-workflowf5j4r-convert-artifact-303582418/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 00:19:44 +0000 UTC FinishedAt: 2026-08-03 00:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 00:19:44 +0000 UTC FinishedAt: 2026-08-03 00:21:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6302317f-79b2-414c-8582-4ef4f1e8a78c,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-workflowf5j4r/series-workflowf5j4r-build-action-3316588217/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-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 00:21:36 +0000 UTC FinishedAt: 2026-08-03 00:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 00:21:36 +0000 UTC FinishedAt: 2026-08-03 00:21:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 00:21:36 +0000 UTC FinishedAt: 2026-08-03 00:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 00:21:36 +0000 UTC FinishedAt: 2026-08-03 00:37:50 +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:*90a7cd00-7d59-4942-af3e-82256bb03e74,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-workflowf5j4r/series-workflowf5j4r-convert-artifact-303582418/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": "3d3aa70a-b9c6-4d03-a4d2-5a9edb51c34b", "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-workflowf5j4r/series-workflowf5j4r-build-action-1450625894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 00:21:36 +0000 UTC FinishedAt: 2026-08-03 00:37:40 +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:*90a7cd00-7d59-4942-af3e-82256bb03e74,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-workflowf5j4r/series-workflowf5j4r-convert-artifact-303582418/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": "3d3aa70a-b9c6-4d03-a4d2-5a9edb51c34b", "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-workflowf5j4r/series-workflowf5j4r-build-action-1450625894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 00:37:50 +0000 UTC FinishedAt: 2026-08-03 00:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 00:37:50 +0000 UTC FinishedAt: 2026-08-03 00:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 00:37:50 +0000 UTC FinishedAt: 2026-08-03 00:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 00:37:50 +0000 UTC FinishedAt: 2026-08-03 00:39:42 +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:*3d3aa70a-b9c6-4d03-a4d2-5a9edb51c34b,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-workflowf5j4r/series-workflowf5j4r-build-action-1450625894/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-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +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":null,"focus_symbols":["taprio_change","taprio_init"],"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:*6302317f-79b2-414c-8582-4ef4f1e8a78c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3d3aa70a-b9c6-4d03-a4d2-5a9edb51c34b,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-workflowf5j4r/series-workflowf5j4r-build-action-3316588217/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-workflowf5j4r/series-workflowf5j4r-build-action-1450625894/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 00:40:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 00:39:57 +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":null,"focus_symbols":["taprio_change","taprio_init"],"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-workflowf5j4r/series-workflowf5j4r-convert-artifact-3951577127/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 00:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 00:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 00:39:52 +0000 UTC FinishedAt: 2026-08-03 00:39:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 00:40:02 +0000 UTC FinishedAt: 2026-08-03 03:45:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf5j4r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["taprio_change","taprio_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"632d1b7b-08f2-4e70-91f1-8c152c6aec78","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 00:40:02 +0000 UTC FinishedAt: 2026-08-03 03:45:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6302317f-79b2-414c-8582-4ef4f1e8a78c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3d3aa70a-b9c6-4d03-a4d2-5a9edb51c34b,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-workflowf5j4r/series-workflowf5j4r-build-action-3316588217/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-workflowf5j4r/series-workflowf5j4r-build-action-1450625894/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-workflowf5j4r/series-workflowf5j4r-convert-artifact-3951577127/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,}