Name: series-workflow6lt9k Phase: Succeeded StartedAt: 2026-08-20 06:39:45 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[0] Phase: Succeeded StartedAt: 2026-08-20 06:39:45 +0000 UTC FinishedAt: 2026-08-20 06:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 06:39:45 +0000 UTC FinishedAt: 2026-08-20 06:58:24 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "64cdeaeb-dcaa-4675-b5fe-6743fcd15246" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "taprio_change", "taprio_init", "advance_sched" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OywKICAgICYjMzQ7YWR2YW5jZV9zY2hlZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEFQUklPIHFkaXNjIHNjaGVkdWxpbmcgbG9naWMgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgc2NoZWR1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGYyM2ZmMmIwZjZlNDYzZDIzYTE0MDRhZDNhMDZiZTk4MTU2OGU0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDA2OjU3OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICYjNDM7MjU5LDI2IEBAIHN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXG4gXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTtcbiB9XG4gXG4mIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFsc1xuJiM0MzsgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4mIzQzOyAqIGFscmVhZHkgaW4gdGhlIHBhc3QgYW5kIHN0b3JtIHRoZSBDUFUuIDEwMHVzIGxlYXZlcyBtYXJnaW4gYWJvdmUgdGhlXG4mIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNcdCgxMDAgKiBOU0VDX1BFUl9VU0VDKVxuJiM0MztcbiYjNDM7c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4mIzQzO3tcbiYjNDM7XHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbiYjNDM7XG4mIzQzO1x0LyogT25seSBwdXJlIHNvZnR3YXJlIHNjaGVkdWxlcyBhcm0gdGhlIHBlci1lbnRyeSBocnRpbWVyLiAqL1xuJiM0MztcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4mIzQzO1x0XHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcbiYjNDM7XHRcdFx0XHQgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWluX2ludGVydmFsO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiYjNDM7LyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXG4mIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuJiM0MzsgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXG4mIzQzOyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxuJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxuJiM0MztcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbiYjNDM7XHRcdFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcbiYjNDM7e1xuJiM0MztcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyAmIzQzOyAxO1xuJiM0MztcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSAqbmV4dDtcbiYjNDM7XHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4mIzQzO1x0a3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7XG4mIzQzO1x0czY0IGJlaGluZCA9IGt0aW1lX3N1Yihub3csIGVuZCk7XG4mIzQzO1xuJiM0MztcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGJlaGluZCBcdTAwM2U9IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuJiM0MztcdFx0czY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuJiM0MztcbiYjNDM7XHRcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcbiYjNDM7XHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGp1bXApO1xuJiM0MztcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuJiM0MztcdFx0aWYgKGxpc3RfaXNfbGFzdChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMpIHx8XG4mIzQzO1x0XHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpID09IDApIHtcbiYjNDM7XHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbiYjNDM7XHRcdFx0XHRcdFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRzdGFydCA9IGVuZDtcbiYjNDM7XHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbiYjNDM7XHRcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqbmV4dCA9IGVudHJ5O1xuJiM0MztcdCpuZXh0X3N0YXJ0ID0gc3RhcnQ7XG4mIzQzO1x0KmVuZF90aW1lID0gZW5kO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiB7XG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbiYjNDM7XHRrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiBcdH1cbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiYjNDM7XHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4mIzQzO1x0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4gXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbiBcbiYjNDM7XHRub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbiYjNDM7XHRcdHRhcHJpb19jYXRjaF91cChvcGVyLCBcdTAwMjZuZXh0LCBcdTAwMjZuZXh0X3N0YXJ0LCBcdTAwMjZlbmRfdGltZSwgbm93KTtcbiYjNDM7XG4gXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXHUwMDNlY3ljbGVfdGltZSlcbiBcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XG4gXHRcdGVsc2Vcbi1cdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4mIzQzO1x0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxuIFx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4gXHR9XG4gXG5AQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbiYjNDM7XHRzNjQgbWluX2R1cmF0aW9uID0gdGFwcmlvX21pbl9pbnRlcnZhbChxKTtcbiBcdHUzMiBpbnRlcnZhbCA9IDA7XG4gXG4gXHRpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKVxuQEAgLTExNjYsNyAmIzQzOzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdG5ldy1cdTAwM2VjeWNsZV90aW1lID0gY3ljbGU7XG4gXHR9XG4gXG4tXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcbiYjNDM7XHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbFwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbmluZGV4IGNkMTlkMDU5MjVlNDAuLjNmZTY2ODM5ZjhhZWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbkBAIC0xNTQsNiAmIzQzOzE1NCwyOCBAQFxuICAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxXFxcJiMzNDsgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCYjMzQ7XG4gICAgICAgICBdXG4gICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2Y0YjJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHNvZnR3YXJlIGludGVydmFsIGJlbG93IHRoZSBtaW5pbXVtXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FkaXNjXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDt0YXByaW9cJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFwmIzM0O25zUGx1Z2luXCYjMzQ7XG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtlY2hvIFxcXCYjMzQ7MSAxIDhcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2VcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDsyXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtlY2hvIFxcXCYjMzQ7MVxcXCYjMzQ7IFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwmIzM0O1xuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDs4MzFmXCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDssCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIGxvZ2ljIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTsKJiM0MzsJaWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpCiYjNDM7CQl0YXByaW9fY2F0Y2hfdXAob3BlciwgJmFtcDtuZXh0LCAmYW1wO25leHRfc3RhcnQsICZhbXA7ZW5kX3RpbWUsIG5vdyk7CiYjNDM7CiAJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKIAkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpCiAJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYOwogCQllbHNlCi0JCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LSZndDtlbmRfdGltZSwKJiM0MzsJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsCiAJCQkJCQkJCSBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiAJfQogCkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJCSAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LAogCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQlpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKJiM0MzsJczY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7CiAJdTMyIGludGVydmFsID0gMDsKIAogCWlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pCkBAIC0xMTY2LDcgJiM0MzsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQluZXctJmd0O2N5Y2xlX3RpbWUgPSBjeWNsZTsKIAl9CiAKLQlpZiAobmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHsKJiM0MzsJaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IChzNjQpbmV3LSZndDtudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgppbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgpAQCAtMTU0LDYgJiM0MzsxNTQsMjggQEAKICAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwogICAgICAgICBdCiAgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2Y0YjImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7dGFwcmlvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzEgMSA4XCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAogICAgIHsKICAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzgzMWYmIzM0OywKICAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVEFQUklPIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgVEFQUklPIHFkaXNjLCBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgeWVzLCB0aGlzIGlzIGFic29sdXRlbHkgd29ydGggdGFraW5nIGEgZGVlcGVyIGxvb2sgYXQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgc3BlY2lmaWNhbGx5IGluIHRoZSBUQVBSSU8gcWRpc2MuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgIGFuZCBgdGFwcmlvX2NhdGNoX3VwYCB0byBhZGRyZXNzIHBvdGVudGlhbCBDUFUgc3Rvcm1zIGFuZCBzY2hlZHVsaW5nIGJhY2tsb2dzIGFyZSBjcml0aWNhbCBmdW5jdGlvbmFsIGltcHJvdmVtZW50cy4KClNpbmNlIHRoaXMgYWZmZWN0cyB0aGUgY29yZSBzY2hlZHVsaW5nIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKGkuZS4sIGB0YyBxZGlzYyBhZGQgLi4uIHRhcHJpb2ApLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQgaW50ZXJhY3RzIHdpdGggdXNlcnNwYWNlIHZpYSBhIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2UgaXMgYSBiaWcgYWR2YW50YWdlIGZvciBmdXp6aW5nIGVmZmVjdGl2ZW5lc3MuIEFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggQ09ORklHIG9wdGlvbnMgZW5hYmxlIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBhcHByb3ByaWF0ZWx5LiBJdCYjMzk7cyBpbiBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AsIHNvIEkmIzM5O2xsIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdG8gZmluZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBjb2RlIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGludG8gdGhlIGZ1enppbmcgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF90YXByaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzk6XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxubmV0L3NjaGVkL0tjb25maWctMTgwLVxubmV0L3NjaGVkL0tjb25maWctMTgxLVx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5uZXQvc2NoZWQvS2NvbmZpZzoxODI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxubmV0L3NjaGVkL0tjb25maWctMTgzLVxuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MzovKiBuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNC0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYE5FVF9TQ0hfVEFQUklPYCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBORVRfU0NIX1RBUFJJT2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCB0aGF0JiMzOTtzIHRoZSBjb25maWcgdG8gbG9vayBhdC4mIzM0OyBUaW1lIHRvIGRpdmUgaW4gYW5kIGdldCBhIGdyaXAgb24gdGhlIGRlcGVuZGVuY2llcy4gR290dGEgc2VlIHdoYXQgb3RoZXIga25vYnMgYW5kIGxldmVycyB0aGlzIG1vZHVsZSBpcyB0aWVkIHRvLCB3aGF0IGFzc3VtcHRpb25zIGl0IG1ha2VzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgaW50ZXJwbGF5IHdpdGhpbiB0aGUgbGFyZ2VyIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWdzIGFyZSBnb2luZyB0byBpbmZsdWVuY2UgYE5FVF9TQ0hfVEFQUklPYCYjMzk7cyBiZWhhdmlvci4gVGltZSB0byB0cmFjZSB0aGUgcmFiYml0IGhvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfVEFQUklPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyB0aGUgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGNvbmZpZyBORVRfU0NIX1RBUFJJT2AuIEkga25vdyB0aGlzIG1lYW5zIEkgbmVlZCB0byBsb29rIGF0IGBuZXQvc2NoZWQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBzY2hlZHVsaW5nIGFyZSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGBLY29uZmlnYCBmaWxlIHRvIGhvbGQgdGhlIGRldGFpbHMgLSB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0LCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCBldmVyeXRoaW5nIGVsc2UgbmVlZGVkIGZvciBjb25maWd1cmluZyBUQVBSSU8uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBzdHJ1Y3R1cmVkIGluIHJlbGF0aW9uIHRvIG90aGVyIHNjaGVkdWxpbmcgZGlzY2lwbGluZXM7IGlzIGl0IGEgc3RhbmRhbG9uZSBmZWF0dXJlIG9yIGJ1aWx0IHVwb24gc29tZXRoaW5nIGVsc2U/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25mbGljdGluZyBvcHRpb25zPyBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl0IHJlbGF0ZXMgdG8gdGhlIFRTTiBmcmFtZXdvcmsgb3Igc3BlY2lmaWMgTklDIGRyaXZlcnMuIFRoaXMgaXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gSSYjMzk7bSBleHBlY3RpbmcgaXQgdG8gYmUgZ3VhcmRlZCBieSBjZXJ0YWluIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvdGhlciBrZXJuZWwgZmVhdHVyZSBjb25maWd1cmF0aW9ucy4gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdC4gSSYjMzk7bSBnb2luZyBpbiB3aXRoIGEgY3JpdGljYWwgZXllLCByZWFkeSB0byBhc3Nlc3MgaG93IHRoaXMgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JrIHNjaGVkdWxlciYjMzk7cyBhcmNoaXRlY3R1cmUuIEkgZXhwZWN0IEkmIzM5O2xsIHVuY292ZXIgc29tZSBpbnRlcmVzdGluZyBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuIDE3NDpcdFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxuIDE3NTpcdFx0aGVscFxuIDE3NjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcbiAxNzc6XHRcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMTc4Olx0XG4gMTc5Olx0XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxuIDE4MDpcdFxuIDE4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTgyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBORVRfU0NIX0dSRURcbiAxODU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbiAxODY6XHRcdGhlbHBcbiAxODc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxuIDE4ODpcdFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXG4gMTg5Olx0XHQgIChzZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcdTAwM2UgZm9yIGRldGFpbHMgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk4NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRfU0NIX1RBUFJJT2AgaGVyZS4gSXQgc2VlbXMgdGhhdCBlbmFibGluZyB0aGlzIHNwZWNpZmljIHNjaGVkdWxlciBhdXRvbWF0aWNhbGx5IHB1bGxzIGluIGBORVRfU0NIX01RUFJJT19MSUJgLiBUaGF0IG1ha2VzIHNlbnNlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBwYXJlbnQgY29uZmlncyBmb3IgYE5FVF9TQ0hfVEFQUklPYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhtbSwgYE5FVF9TQ0hFRGAgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUuIExldCBtZSBxdWlja2x5IGp1bXAgb3ZlciB0byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORVRfU0NIRUQgYW5kIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIOKAkyB0aGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBOb3csIHRoZSBrZXkgaXMgdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG91Y2hlZCBieSB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgdGhlIHZhcmlhYmxlcy4KCkkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGFkdmFuY2Vfc2NoZWRgLCBgZmlsbF9zY2hlZF9lbnRyeWAsIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gT2theSwgYW5kIHRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgaW50cm9kdWN0aW9uczogYHRhcHJpb19jYXRjaF91cGAg4oCTIHdoaWNoIGlzICpzdGF0aWMqIC0gYW5kIGB0YXByaW9fbWluX2ludGVydmFsYCwgYWxzbyAqc3RhdGljKi4gSG1tLCBgYWR2YW5jZV9zY2hlZGAgaXMgYSBgaHJ0aW1lcmAgY2FsbGJhY2suIEludGVyZXN0aW5nLiBOb3csIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIHFkaXNjIGNvbmZpZ3VyYXRpb24gcGhhc2UuCgpHaXZlbiB0aGF0IHRoZXNlIGxhc3QgdHdvIGFyZSBjYWxsZWQgZHVyaW5nIGNvbmZpZywgbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIG1vcmUgZGVlcGx5IOKAkyBhcmUgdGhleSBzdGF0aWMgZnVuY3Rpb25zPyBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBJIG5lZWQgdG8gcmVzb2x2ZS4gSSYjMzk7bGwgY2hlY2sgdGhlIGRlY2xhcmF0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGgsIHRvIGNvbmZpcm0gdGhlIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYXJzZV90YXByaW9fc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTE1OD1zdGF0aWMgaW50IHBhcnNlX3NjaGVkX2xpc3Qoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqbGlzdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTg6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTk5LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4ODc9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTgxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTgyOlx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5ODMtXHRpZiAoZXJyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjAzCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBUQVBSSU8gU2NoZWR1bGVyIENvZGUqKgoKQWxyaWdodCwgc28gYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYW5kIGB0YXByaW9fY2hhbmdlYCBhcmUgYm90aCBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IHVzdWFsbHkgbWVhbnMgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgbm90IGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzY2hlZHVsZXIgKmFjdHVhbGx5KiB3b3Jrcywgc28gbm93IEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGUgc2NoZWR1bGVyLiBUaW1lIHRvIGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgYWltIGlzIHRvIGdldCBhIHNlbnNlIG9mIHRoZSBkeW5hbWljIGludGVycGxheTsgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5IHJlc3BvbmQgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzY2hlZHVsaW5nIGNoYW5nZXMsIGFuZCB0cmFmZmljIGRhdGEuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRlbGwgbWUgYWJvdXQgdGhlIHNjaGVkdWxlciYjMzk7cyBiZWhhdmlvci4gSSBhbnRpY2lwYXRlIHRoZXNlIGFyZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IFRBUFJJTyBzY2hlZHVsZXMgdHJhZmZpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihbYS16MC05X10mIzQzOyApJiM0MztbYS16MC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMTQ9c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTpzdGF0aWMgdm9pZCB0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMC1cdFx0XHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjQ6c3RhdGljIGJvb2wgdGFwcmlvX2VudHJ5X2FsbG93c190eChrdGltZV90IHNrYl9lbmRfdGltZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1LVx0XHRcdFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgaW50IHRjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzA6c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzEte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzg6c3RhdGljIGt0aW1lX3QgdGFwcmlvX21vbm9fdG9fYW55KGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGt0aW1lX3QgbW9ubylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTkxOnN0YXRpYyBrdGltZV90IHRhcHJpb19nZXRfdGltZShjb25zdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTIte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTY6c3RhdGljIHZvaWQgdGFwcmlvX2ZyZWVfc2NoZWRfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTcte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDk6c3RhdGljIHZvaWQgc3dpdGNoX3NjaGVkdWxlcyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICoqYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjMtLyogR2V0IGhvdyBtdWNoIHRpbWUgaGFzIGJlZW4gYWxyZWFkeSBlbGFwc2VkIGluIHRoZSBjdXJyZW50IGN5Y2xlLiAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjQ6c3RhdGljIHMzMiBnZXRfY3ljbGVfdGltZV9lbGFwc2VkKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IHRpbWUpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyNS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTpzdGF0aWMga3RpbWVfdCBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNi1cdFx0XHRcdCAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NzpzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjk6c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI3MC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yODEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI4MjpzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI4My17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yOTAtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI5MTpzdGF0aWMgdm9pZCB0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkyLVx0XHRcdFx0XHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTM0Mz1zdGF0aWMgc3RydWN0IHNjaGVkX2VudHJ5ICpmaW5kX2VudHJ5X3RvX3RyYW5zbWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQyMDpzdGF0aWMgYm9vbCBpc192YWxpZF9pbnRlcnZhbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDIxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQzOC0vKiBUaGlzIHJldHVybnMgdGhlIHRzdGFtcCB2YWx1ZSBzZXQgYnkgVENQIGluIHRlcm1zIG9mIHRoZSBzZXQgY2xvY2suICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQzOTpzdGF0aWMga3RpbWVfdCBnZXRfdGNwX3RzdGFtcChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDg3LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0ODg6c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ4OS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NTktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NjA6c3RhdGljIGJvb2wgdGFwcmlvX3NrYl9leGNlZWRzX3F1ZXVlX21heF9zZHUoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1ODE6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4Mi1cdFx0XHQgICAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjYwMjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVx0XHRcdFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDgtXHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz02NzY9c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjgyOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfYnVkZ2V0cyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODMtXHRcdFx0ICAgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzAyLS8qIFdoZW4gYW4gc2tiIGlzIHNlbnQsIGl0IGNvbnN1bWVzIGZyb20gdGhlIGJ1ZGdldCBvZiBhbGwgdHJhZmZpYyBjbGFzc2VzICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcwMzpzdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDQtXHRcdFx0XHQgaW50IHRjX2NvbnN1bWVkLCBpbnQgbnVtX3RjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzI2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03ODItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzg0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg1Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4OTI6c3RhdGljIGJvb2wgc2hvdWxkX3Jlc3RhcnRfY3ljbGUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODkzLVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MDMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkwNDpzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTA1LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDMtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk0NDpzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTQ1LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKipuZXh0LCBrdGltZV90ICpuZXh0X3N0YXJ0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTgyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5ODM6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3BvbGljeVtUQ0FfVEFQUklPX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEwNi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTEwNzpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTA4LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTEzOTpzdGF0aWMgaW50IHBhcnNlX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKm4sXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNDAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTU3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU4OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTU5LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTg6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTk5LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyNDgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNDk6c3RhdGljIGludCB0YXByaW9fcGFyc2VfbXFwcmlvX29wdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUwLVx0XHRcdFx0ICAgc3RydWN0IHRjX21xcHJpb19xb3B0ICpxb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3Ni1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTI3NzpzdGF0aWMgaW50IHRhcHJpb19nZXRfc3RhcnRfdGltZShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3OC1cdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMTAtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMTE6c3RhdGljIHZvaWQgc2V0dXBfZmlyc3RfZW5kX3RpbWUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxMi1cdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM0MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM0MTpzdGF0aWMgdm9pZCB0YXByaW9fc3RhcnRfc2NoZWQoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNDItXHRcdFx0ICAgICAgIGt0aW1lX3Qgc3RhcnQsIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldylcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzNjM6c3RhdGljIHZvaWQgdGFwcmlvX3NldF9waWNvc19wZXJfYnl0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzY0LVx0XHRcdFx0ICAgICAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzOTc6c3RhdGljIGludCB0YXByaW9fZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTgtXHRcdFx0ICAgICAgIHZvaWQgKnB0cilcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MzQ6c3RhdGljIHZvaWQgc2V0dXBfdHh0aW1lKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzUtXHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzM6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0ODU9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZnJlZSk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDk4LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDk5OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUwOTpzdGF0aWMgdTMyIHRjX21hcF90b19xdWV1ZV9tYXNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0Y19tYXNrKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTEwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MjctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1Mjg6c3RhdGljIHZvaWQgdGFwcmlvX3NjaGVkX3RvX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUyOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NTc6c3RhdGljIHZvaWQgdGFwcmlvX2RldGVjdF9icm9rZW5fbXFwcmlvKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTgte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU3My1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU3NDpzdGF0aWMgdm9pZCB0YXByaW9fY2xlYW51cF9icm9rZW5fbXFwcmlvKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzUte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4NTpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTg2LVx0XHRcdFx0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjUxOnN0YXRpYyBpbnQgdGFwcmlvX2Rpc2FibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUyLVx0XHRcdFx0ICBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5MS0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY5MjpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9jbG9ja2lkKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2OTMtXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzY5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzcwOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzcxLVx0XHRcdFx0IHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4MTc6c3RhdGljIGludCB0YXByaW9fcGFyc2VfdGNfZW50cmllcyhzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTgxOC1cdFx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Njc6c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY4LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODg3OnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDgxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDgyOnN0YXRpYyB2b2lkIHRhcHJpb19yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4My17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDk3OnN0YXRpYyB2b2lkIHRhcHJpb19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMzUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxMzY6c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM3LVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIwMC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIwMTpzdGF0aWMgdm9pZCB0YXByaW9fYXR0YWNoKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjAyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIyMzc9c3RhdGljIHN0cnVjdCBuZXRkZXZfcXVldWUgKnRhcHJpb19xdWV1ZV9nZXQoc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjQ4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjQ5OnN0YXRpYyBpbnQgdGFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjUwLVx0XHRcdHN0cnVjdCBRZGlzYyAqbmV3LCBzdHJ1Y3QgUWRpc2MgKipvbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjkyOnN0YXRpYyBpbnQgZHVtcF9lbnRyeShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjkzLVx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5KVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjMyMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjMyMjpzdGF0aWMgaW50IGR1bXBfc2NoZWR1bGUoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjMyMy1cdFx0XHQgY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqcm9vdClcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTg6c3RhdGljIGludCB0YXByaW9fZHVtcF90Y19lbnRyaWVzKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTktXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzkwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzkxOnN0YXRpYyBpbnQgdGFwcmlvX3B1dF9zdGF0KHN0cnVjdCBza19idWZmICpza2IsIHU2NCB2YWwsIHUxNiBhdHRydHlwZSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjM5Mi17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzk5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNDAwOnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfeHN0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDAxLVx0XHRcdCAgICAgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjQ0ODpzdGF0aWMgaW50IHRhcHJpb19kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDQ5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI0NTc6c3RhdGljIGludCB0YXByaW9fZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ1OC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTI3PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnRhcHJpb19sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjUzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjUzOTpzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXByaW9fZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU0ODpzdGF0aWMgaW50IHRhcHJpb19kdW1wX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQ5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjbXNnICp0Y20pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTU5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTYwOnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NjEtXHRcdFx0XHQgICBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU4MDpzdGF0aWMgdm9pZCB0YXByaW9fd2FsayhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHFkaXNjX3dhbGtlciAqYXJnKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2Mjk9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB0YXByaW9fZGV2aWNlX25vdGlmaWVyID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzMi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYzMzpzdGF0aWMgaW50IF9faW5pdCB0YXByaW9fbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzNC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjQyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjQzOnN0YXRpYyB2b2lkIF9fZXhpdCB0YXByaW9fbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFRhcHJpbyYjMzk7cyBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHRhcHJpb19vZmZsb2FkX2ZyZWVgLiBUaGF0JiMzOTtzIG5vbi1zdGF0aWMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGltcG9ydGFudCBmb3IgaGFuZGxpbmcgb2ZmbG9hZHMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHdoZXJlIGFyZSB0aGUgUWRpc2Mgb3BlcmF0aW9ucyBkZWZpbmVkPyBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhleSYjMzk7cmUgbGlrZWx5IHJlZ2lzdGVyZWQgd2l0aGluIGB0YXByaW9fbW9kdWxlX2luaXRgLiBZZXMsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgZGlnZ2luZyBpbnRvIGB0YXByaW9fcWRpc2Nfb3BzYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBzbyBJIGNhbiBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgdG8gdGhvc2Ugb2ZmbG9hZGVkIHJlc291cmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTE6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjEyLVx0LmNsX29wc1x0XHQ9IFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGluaXRpYWwgdGhvdWdodHMsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZW06CgoqKkluaXRpYWwgRGl2ZSBpbnRvIFRBUFJJTyBRZGlzYyBhbmQgQ2xhc3MgT3BlcmF0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBiZWFyaW5ncyBvbiB0aGVzZSBUQVBSSU8gY29tcG9uZW50cy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHNjaGVkdWxpbmcgYW5kIGNsYXNzaWZpY2F0aW9uIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGlzIG1vZHVsZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AgYW5kIGB0YXByaW9fY2xhc3Nfb3BzYC4gSSBrbm93IHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgUWRpc2MgKHF1ZXVlaW5nIGRpc2NpcGxpbmUpIG1hbmFnZW1lbnQgYW5kIGNsYXNzLWJhc2VkIHRyYWZmaWMgaGFuZGxpbmcsIHJlc3BlY3RpdmVseS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlcmZhY2Ugd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgdGhlIFRBUFJJTyBhbGdvcml0aG0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjAwOlx0XG4yNjAxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbjI2MDI6XHRcdC5ncmFmdFx0XHQ9IHRhcHJpb19ncmFmdCxcbjI2MDM6XHRcdC5sZWFmXHRcdD0gdGFwcmlvX2xlYWYsXG4yNjA0Olx0XHQuZmluZFx0XHQ9IHRhcHJpb19maW5kLFxuMjYwNTpcdFx0LndhbGtcdFx0PSB0YXByaW9fd2FsayxcbjI2MDY6XHRcdC5kdW1wXHRcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXG4yNjA3Olx0XHQuZHVtcF9zdGF0c1x0PSB0YXByaW9fZHVtcF9jbGFzc19zdGF0cyxcbjI2MDg6XHRcdC5zZWxlY3RfcXVldWVcdD0gdGFwcmlvX3NlbGVjdF9xdWV1ZSxcbjI2MDk6XHR9O1xuMjYxMDpcdFxuMjYxMTpcdHN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbjI2MTI6XHRcdC5jbF9vcHNcdFx0PSBcdTAwMjZ0YXByaW9fY2xhc3Nfb3BzLFxuMjYxMzpcdFx0LmlkXHRcdD0gXCYjMzQ7dGFwcmlvXCYjMzQ7LFxuMjYxNDpcdFx0LnByaXZfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IHRhcHJpb19zY2hlZCksXG4yNjE1Olx0XHQuaW5pdFx0XHQ9IHRhcHJpb19pbml0LFxuMjYxNjpcdFx0LmNoYW5nZVx0XHQ9IHRhcHJpb19jaGFuZ2UsXG4yNjE3Olx0XHQuZGVzdHJveVx0PSB0YXByaW9fZGVzdHJveSxcbjI2MTg6XHRcdC5yZXNldFx0XHQ9IHRhcHJpb19yZXNldCxcbjI2MTk6XHRcdC5hdHRhY2hcdFx0PSB0YXByaW9fYXR0YWNoLFxuMjYyMDpcdFx0LnBlZWtcdFx0PSB0YXByaW9fcGVlayxcbjI2MjE6XHRcdC5kZXF1ZXVlXHQ9IHRhcHJpb19kZXF1ZXVlLFxuMjYyMjpcdFx0LmVucXVldWVcdD0gdGFwcmlvX2VucXVldWUsXG4yNjIzOlx0XHQuZHVtcFx0XHQ9IHRhcHJpb19kdW1wLFxuMjYyNDpcdFx0LmR1bXBfc3RhdHNcdD0gdGFwcmlvX2R1bXBfc3RhdHMsXG4yNjI1Olx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbjI2MjY6XHR9O1xuMjYyNzpcdE1PRFVMRV9BTElBU19ORVRfU0NIKFwmIzM0O3RhcHJpb1wmIzM0Oyk7XG4yNjI4Olx0XG4yNjI5Olx0c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB0YXByaW9fZGV2aWNlX25vdGlmaWVyID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUyNAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCBvbiB0aGUgYHRhcHJpb2AgU2NoZWR1bGVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyBhIGNyaXRpY2FsIGhydGltZXIgY2FsbGJhY2sg4oCTIHRoYXQmIzM5O3MgYSBoaWdoLXByaW9yaXR5IGFyZWEgdG8gdW5kZXJzdGFuZC4gSXQmIzM5O3MgYWxzbyBtb2RpZnlpbmcgYGZpbGxfc2NoZWRfZW50cnlgIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCwgYW5kIHRob3NlIGFyZSBjYWxsZWQgZnJvbSBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFJpZ2h0LCBzbyBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBmb2N1c2VkIGFuYWx5c2lzLgoKSG1tLCB3YWl0IGEgc2Vjb25kLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHN0YXRpYy4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIHdpbGwgaW5saW5lIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBzbyB0aGV5IGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dOKApiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLiBUaGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSAqbm90KiBpbmxpbmVkLiBUaGV5IGhhdmUgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuCgpTdGlsbCwgaWYgd2Ugd2FudCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyBhIHByZWZlcmVuY2UsIHdlIG1pZ2h0IGJlIG91dCBvZiBsdWNrIHdpdGhpbiBgc2NoX3RhcHJpby5jYCBleGNlcHQgZm9yIGB0YXByaW9fb2ZmbG9hZF9mcmVlYCBhbmQgYHRhcHJpb19vZmZsb2FkX2dldGAuCgpIb2xkIG9uLiBMZXQmIzM5O3MgcmVjYXAgYWJvdXQgYHRhcHJpb19jaGFuZ2VgLiBJdCYjMzk7cyBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyAqaXMqIHRha2VuLCBzbyB0aGUgY29tcGlsZXIgY2FuJiMzOTt0IGlubGluZSBpdC4gSXQgaXMgbm90IHByaXZhdGUgdG8gdGhlIGZpbGUuCgpBcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhdCBhbGwsIHRob3VnaD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtejAtOV9dJiM0MzsgW2EtejAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ3MT1FWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDczOnZvaWQgdGFwcmlvX29mZmxvYWRfZnJlZShzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mjk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRBUFJJTyYjMzk7cyBRZGlzYyBBUEkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdhdGhlcmVkIGFib3V0IHRoZSBUQVBSSU8gcWRpc2MmIzM5O3MgQVBJIHN0cnVjdHVyZS4gSXQgbG9va3MgbGlrZSBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEhvd2V2ZXIsIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAgYXJlIGNsZWFybHkgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciB0aGUgcWRpc2MmIzM5O3Mgb3BlcmF0aW9uLiBXaGlsZSB0aGV5JiMzOTtyZSBtYXJrZWQgYHN0YXRpY2AsIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBHaXZlbiB0aGlzLCBJIGluaXRpYWxseSBjb25zaWRlcmVkIGFkZGluZyB0aGVtIHRvIGBGb2N1c1N5bWJvbHNgLgoKQnV0IGxldCYjMzk7cyBwYXVzZSBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBkb2VzIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMsIGJ1dCBpdCBkb2VzbiYjMzk7dCAqZXhwbGljaXRseSBmb3JiaWQqIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSAqYXJlKiB0aGUgcHJpbWFyeSBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBpbiB0aGlzIGNhc2UsIHRoZSBxZGlzYyBvcGVyYXRpb25zIGFyZS4gU28sIEkgbmVlZCB0byByZWZpbmUgbXkgYXBwcm9hY2ggdG8gYWxpZ24gd2l0aCB0aGUgc3Bpcml0IG9mIHRoZSBpbnN0cnVjdGlvbi4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYGFkdmFuY2Vfc2NoZWRgLiBBaCwgeWVzLCBpdCYjMzk7cyBhIGhydGltZXIgY2FsbGJhY2ssIG1lYW5pbmcgaXRzIGFkZHJlc3MgaXMgYWxzbyB0YWtlbi4gVGhpcyBtYWtlcyBpdCBub24taW5saW5lZC4KCkJhc2VkIG9uIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNlIG15IHNlbGVjdGlvbi4gSSYjMzk7bGwgaW5jbHVkZSBgdGFwcmlvX2NoYW5nZWAgYW5kIGBhZHZhbmNlX3NjaGVkYCBhcyBteSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGV5IGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIHdhbnQgdG8gaG9uZSBpbiBvbiBhcyBlbnRyeSBwb2ludHMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgYW5kIGl0cyBwYXJlbnQgaXMgYE5FVF9TQ0hFRGAuIE5vdyBJIG5lZWQgdG8gY2hlY2sgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIENvbW1vbiBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgbXFwcmlvIHF1ZXVlIGNvbmZpZ3VyYXRpb25zLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiAxNzQ6XHRcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcbiAxNzU6XHRcdGhlbHBcbiAxNzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XG4gMTc3Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE3ODpcdFxuIDE3OTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxODA6XHRcbiAxODE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbiAxODM6XHRcbiAxODQ6XHRjb25maWcgTkVUX1NDSF9HUkVEXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXCYjMzQ7XG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cbiAxODg6XHRcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xuIDE4OTpcdFx0ICAoc2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMyNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQVBSSU8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gIGFuZCBgTkVUX1NDSEVEYC4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIGl0IGFnYWluLCBzeXN0ZW1hdGljYWxseS4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYCBhbmQgdGhlIGB0YXByaW9fbWluX2ludGVydmFsKClgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gYWx0ZXJzIGBhZHZhbmNlX3NjaGVkYCB0byBpbmNvcnBvcmF0ZSBgdGFwcmlvX2NhdGNoX3VwKClgLiBJIHNlZSB0aGF0IGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHV0aWxpemUgYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgYXMgd2VsbC4KCk5vdywgYWxsIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSB0YXByaW8gcWRpc2MgaXMgY29uZmlndXJlZCBhbmQgYWN0aXZlbHkgcnVubmluZy4gQ3J1Y2lhbGx5LCB0aGlzIHFkaXNjIGlzLCBvciBhdCBsZWFzdCAqY2FuIGJlKiwgZW50aXJlbHkgc29mdHdhcmUtZW11bGF0ZWQuIFRoaXMgbWVhbnMgaXQmIzM5O3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGltcG9ydGFudCBmcm9tIGEgZGVwbG95bWVudCBwZXJzcGVjdGl2ZS4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBiZWluZyBhZGRyZXNzZWQgaXMgYSBDUFUgc3Rvcm0gcHJvYmxlbSB0aGF0IG9jY3VycyB3aGVuIHRoZSBzb2Z0d2FyZSBpbnRlcnZhbCBpcyBzZXQgdG8gc29tZXRoaW5nIHRvbyBzbWFsbC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBtZWFuaW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcga2V5IHN5bWJvbHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYW5kIGBhZHZhbmNlX3NjaGVkYC4gSSBzaG91bGQgYWxzbyBkb3VibGUgY2hlY2sgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBORVRfU0NIX1RBUFJJT2AgaGluZ2VzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBsaWJyYXJpZXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzM0PWNvbmZpZyBORVRfU0NIX0ZRX1BJRVxubmV0L3NjaGVkL0tjb25maWc6MzM1Olx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzM2LVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzozNDk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXHRzZWxlY3QgTkVUX1hHUkVTU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQwNj1jb25maWcgTkVUX1NDSF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTQwNy1cdGJvb2wgXCYjMzQ7QlBGLWJhc2VkIFFkaXNjXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxubmV0L3NjaGVkL0tjb25maWctNDA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NDk2Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xubmV0L3NjaGVkL0tjb25maWctNTM0LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTM1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTM2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NTMtXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZzo1NTQ6XHRkZXBlbmRzIG9uIENHUk9VUFNcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcbm5ldC9zY2hlZC9LY29uZmlnLTYwNi1cdGludCBcJiMzNDtTdGFjayBzaXplXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2MDc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYwOC1cdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXG5uZXQvc2NoZWQvS2NvbmZpZy02MTYtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjE3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MTgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjI1PWNvbmZpZyBORVRfRU1BVENIX05CWVRFXG5uZXQvc2NoZWQvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aSBieXRlIGNvbXBhcmlzb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjI4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYzNT1jb25maWcgTkVUX0VNQVRDSF9VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cdHRyaXN0YXRlIFwmIzM0O1UzMiBrZXlcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYzNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjM4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXG5uZXQvc2NoZWQvS2NvbmZpZy02NDYtXHR0cmlzdGF0ZSBcJiMzNDtNZXRhZGF0YVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjQ3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02NDgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjU2PWNvbmZpZyBORVRfRU1BVENIX1RFWFRcbm5ldC9zY2hlZC9LY29uZmlnLTY1Ny1cdHRyaXN0YXRlIFwmIzM0O1RleHRzZWFyY2hcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjU5LVx0c2VsZWN0IFRFWFRTRUFSQ0hcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NzA9Y29uZmlnIE5FVF9FTUFUQ0hfQ0FOSURcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cdHRyaXN0YXRlIFwmIzM0O0NBTiBJZGVudGlmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NzI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IChDQU49eSB8fCBDQU49bSlcbm5ldC9zY2hlZC9LY29uZmlnLTY3My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02ODA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBTRVRcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cdHRyaXN0YXRlIFwmIzM0O0lQc2V0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2ODI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IElQX1NFVFxubmV0L3NjaGVkL0tjb25maWctNjgzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cdHRyaXN0YXRlIFwmIzM0O0lQdGFibGVzIE1hdGNoZXNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY5MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgTkVURklMVEVSIFx1MDAyNlx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xubmV0L3NjaGVkL0tjb25maWctNjkzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgUG9saWNpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MjY9Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0Jcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cdGJvb2wgXCYjMzQ7UHJvYmFiaWxpdHkgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy03NDMtXHR0cmlzdGF0ZSBcJiMzNDtSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NDUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxubmV0L3NjaGVkL0tjb25maWctNzUzLVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBTYW1wbGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzU0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzU1LVx0c2VsZWN0IFBTQU1QTEVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NjY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzUtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzc2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzc3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc4Mz1jb25maWcgTkVUX0FDVF9TSU1QXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgRXhhbXBsZSAoRGVidWcpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cdHRyaXN0YXRlIFwmIzM0O1NLQiBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3OTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cbm5ldC9zY2hlZC9LY29uZmlnLTgwOS1cdHRyaXN0YXRlIFwmIzM0O0NoZWNrc3VtIFVwZGF0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXHRzZWxlY3QgTkVUX0NSQzMyQ1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXG5uZXQvc2NoZWQvS2NvbmZpZy04MjAtXHR0cmlzdGF0ZSBcJiMzNDtNUExTIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODIxOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODIyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgzMD1jb25maWcgTkVUX0FDVF9WTEFOXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXHR0cmlzdGF0ZSBcJiMzNDtWbGFuIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cdHRyaXN0YXRlIFwmIzM0O0JQRiBiYXNlZCBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg0MzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1NC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnOjg1NjpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xubmV0L3NjaGVkL0tjb25maWctODU3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg2NT1jb25maWcgTkVUX0FDVF9DVElORk9cbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODY3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZzo4Njg6XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXHR0cmlzdGF0ZSBcJiMzNDtza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctODk0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXHRzZWxlY3QgTkVUX0lGRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXHR0cmlzdGF0ZSBcJiMzNDtJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXHR0cmlzdGF0ZSBcJiMzNDtjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTE5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSBcJiMzNDtGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NDI9Y29uZmlnIE5FVF9JRkVfU0tCTUFSS1xubmV0L3NjaGVkL0tjb25maWctOTQzLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgbWFyayBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NDQ6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXG5uZXQvc2NoZWQvS2NvbmZpZz05NDY9Y29uZmlnIE5FVF9JRkVfU0tCUFJJT1xubmV0L3NjaGVkL0tjb25maWctOTQ3LVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgcHJpbyBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NDktXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxubmV0L3NjaGVkL0tjb25maWctOTUxLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NTI6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NTMtXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXHRib29sIFwmIzM0O1RDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTU2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTU3LVx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTM5CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVEFQUklPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGl0IGluaXRpYWxseSBzZWVtZWQgbGlrZSBgTkVUX1NDSF9UQVBSSU9gIHdhcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBvbmx5IGRlcGVuZGluZyBvbiBgTkVUX1NDSEVEYCB3aGljaCBpcyB0aGUgYmFzZSBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEJ1dCBob2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfU0NIX1RBUFJJT2AgKmFsc28qIHNlbGVjdHMgYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFRoaXMgbWVhbnMgdGhhdCBpZiBJIHdhbnQgdG8gZW5hYmxlIFRBUFJJTyBzY2hlZHVsaW5nLCBhbGwgSSAqcmVhbGx5KiBuZWVkIGFyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYCB0aGVtc2VsdmVzLiBObyBuZWVkIHRvIGdvIGh1bnRpbmcgZm9yIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UuCgpBbHJpZ2h0LCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gVGhpcyBpcyBhIGNoYW5nZSB0byBjb3JlIHNjaGVkdWxpbmcgZnVuY3Rpb25hbGl0eSwgc28geWVzLCB3b3J0aCBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgYWR2YW5jZV9zY2hlZGAgLSBUaGVzZSBmdW5jdGlvbnMgYXJlIGtleSwgdGhleSBjbGVhcmx5IHJlbGF0ZSB0byB0aGUgbW9kaWZpZWQgVEFQUklPIGJlaGF2aW9yLgoqICAgKipFbmFibGVDb25maWdzOioqIGBORVRfU0NIRURgLCBgTkVUX1NDSF9UQVBSSU9gIC0gVGhvc2UgYXJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb25zIG5lZWRlZC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIHRvIGludHJvZHVjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwsIGFuZCBhZGRzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYywgYW5kIGltcG9ydGFudGx5LCBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC4KCk9rYXksIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhhdC4gVGltZSB0byBmZWVkIHRoaXMgaW5mb3JtYXRpb24gaW50byB0aGUgc3lzdGVtIHVzaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDssCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIGxvZ2ljIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9faW5pdCYjMzQ7LAogICAgJiMzNDthZHZhbmNlX3NjaGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTsKJiM0MzsJaWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpCiYjNDM7CQl0YXByaW9fY2F0Y2hfdXAob3BlciwgJmFtcDtuZXh0LCAmYW1wO25leHRfc3RhcnQsICZhbXA7ZW5kX3RpbWUsIG5vdyk7CiYjNDM7CiAJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKIAkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpCiAJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYOwogCQllbHNlCi0JCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LSZndDtlbmRfdGltZSwKJiM0MzsJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsCiAJCQkJCQkJCSBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiAJfQogCkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJCSAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LAogCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQlpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKJiM0MzsJczY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7CiAJdTMyIGludGVydmFsID0gMDsKIAogCWlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pCkBAIC0xMTY2LDcgJiM0MzsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQluZXctJmd0O2N5Y2xlX3RpbWUgPSBjeWNsZTsKIAl9CiAKLQlpZiAobmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHsKJiM0MzsJaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IChzNjQpbmV3LSZndDtudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgppbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgpAQCAtMTU0LDYgJiM0MzsxNTQsMjggQEAKICAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwogICAgICAgICBdCiAgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2Y0YjImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7dGFwcmlvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzEgMSA4XCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAogICAgIHsKICAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzgzMWYmIzM0OywKICAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg2CgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDcwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSB0YXByaW8gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AgaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBzb2Z0d2FyZSBzY2hlZHVsaW5nLCBzcGVjaWZpY2FsbHkgYWltaW5nIHRvIHByZXZlbnQgQ1BVIHN0b3JtcyBmcm9tIGhhcHBlbmluZyBiZWNhdXNlIG9mIGhydGltZXJzIGdldHRpbmcgb3V0IG9mIHN5bmMuIEl0IGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB0YXByaW9fbWluX2ludGVydmFsKClgIGFuZCBgdGFwcmlvX2NhdGNoX3VwKClgLgoKYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCYjMzk7cyBjYWxjdWxhdGluZyBhIG1pbmltdW0gdGltZSBpbnRlcnZhbCBiYXNlZCBvbiBwYWNrZXQgc2l6ZSAoYGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTilgKSBhbmQgYSBoYXJkY29kZWQgbWluaW11bSAoYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgLCB3aGljaCBsb29rcyB0byBiZSAxMDB1cykuIFRoaXMgaXMgbGlrZWx5IGEgZ3VhcmRyYWlsIHRvIHByZXZlbnQgdGhpbmdzIGZyb20gZmlyaW5nIHRvbyByYXBpZGx5LCBwb3RlbnRpYWxseSBzd2FtcGluZyB0aGUgQ1BVIHdpdGggdGltZXIgaW50ZXJydXB0cy4KCmB0YXByaW9fY2F0Y2hfdXAoKWAgaXMgdGhlIG1vcmUgaW50ZXJlc3Rpbmcgb25lLiBJdCBraWNrcyBpbiB3aGVuIHRoZSBzY2hlZHVsZSBpcyBiZWhpbmQgcmVhbC10aW1lLiBJdCYjMzk7cyBza2lwcGluZyBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgaWYgdGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGhhcyBmYWxsZW4gYmVoaW5kIGR1ZSB0byBkZWxheWVkIHRpbWVycyBvciBjbG9jayBzdGVwcywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIHVwZGF0aW5nIGBuZXh0YCwgYG5leHRfc3RhcnRgLCBhbmQgYGVuZF90aW1lYCB0byBnZXQgdGhpbmdzIGJhY2sgb24gdHJhY2suCgpMb29raW5nIGF0IHRoZSBjb2RlLCB0aGUgY2hhbmdlcyBhcmUgYWxsIGxvZ2ljLWJhc2VkLiBJdCYjMzk7cyB0aW1lciBjYWxjdWxhdGlvbnMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlJiMzOTtzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucywgYW5kIG1vc3QgaW1wb3J0YW50bHksIG5vIGNoYW5nZXMgdGhhdCBJIGNhbiBzZWUgdGhhdCB3b3VsZCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgaHVnZSByZWxpZWYuCgpUaGUgcm9vdCBjYXVzZSB0aGlzIHBhdGNoIGlzIGZpeGluZyBpcyBsaWtlbHkgYSBDUFUgc3RhbGwgb3Igc3Rvcm0uIFRoZSBocnRpbWVyIGlzIGVpdGhlciBmaXJpbmcgdG9vIGZyZXF1ZW50bHksIG9yIHRoZSBzY2hlZHVsZXIgaGFzIGZhbGxlbiBiZWhpbmQgYW5kIGlzIHRyeWluZyB0byByZXBsYXkgYSBodWdlIGJhY2tsb2cgb2YgZXZlbnRzLgoKR2l2ZW4gYWxsIHRoaXMsIEkgYW0gY29uZmlkZW50IHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyAqbm90KiBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEtBU0FOLCBMT0NLREVQLCBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIG1vcmUgdGhhbiBzdWZmaWNpZW50IHRvIGNhdGNoIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvY2tpbmcgaXNzdWVzLgoKSSYjMzk7dmUgdGFrZW4gYSBjbG9zZXIgbG9vayBhdCBgdGFwcmlvX2NhdGNoX3VwKClgIGFnYWluIGp1c3QgdG8gYmUgc3VyZS4gSSBjYW4gdmVyaWZ5IHRoYXQgYWxsIHRoZSBrZXkgZGF0YSwgYG9wZXJgLCBgbmV4dGAsIGBuZXh0X3N0YXJ0YCwgYW5kIGBlbmRfdGltZWAsIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgYW5kIHRoZXJlJiMzOTtzIG5vIHdheSB0aGF0IHRoZSBmdW5jdGlvbiBjb3VsZCBwb3NzaWJseSBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpUaGVyZWZvcmUsIG15IGZpbmFsIGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycyB0byBwcmV2ZW50IENQVSBzdG9ybXMuIFRoZXNlIGNoYW5nZXMgaW52b2x2ZSBhcml0aG1ldGljIGNhbGN1bGF0aW9ucyBvbiBrdGltZV90IHZhcmlhYmxlcywgbG9vcCBjb25kaXRpb25zLCBhbmQgaW50ZXJ2YWwgYm91bmRzIGNoZWNrcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkLCBubyBjaGFuZ2VzIHRvIGhvdyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgcmVsYXRlZCB0byBsb2dpYyBlcnJvcnMsIGluZmluaXRlIGxvb3BzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzowMy41NjYzOTMxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYzNDM3MzIwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIixcbiAgICBcImFkdmFuY2Vfc2NoZWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjAzLjU2NjM5ODEzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2NzE4OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGYyM2ZmMmIwZjZlNDYzZDIzYTE0MDRhZDNhMDZiZTk4MTU2OGU0OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxcbiBcXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFxcdTAwMjZxLVxcdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xcbiB9XFxuIFxcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXFx0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXFxuK1xcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG4re1xcbitcXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFxuK1xcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cXHUwMDNlZmxhZ3MpKVxcbitcXHRcXHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcXG4rXFxuK1xcdHJldHVybiBtaW5faW50ZXJ2YWw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcXG4ge1xcbiBcXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXFx1MDAyNnEtXFx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XFxuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxcbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcXG4rXFx0XFx0XFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcXG4re1xcbitcXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXFx1MDAzZW51bV9lbnRyaWVzICsgMTtcXG4rXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xcbitcXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XFxuK1xcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xcbitcXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcXG4rXFxuK1xcdGlmIChvcGVyLVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBiZWhpbmQgXFx1MDAzZT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cXHUwMDNlY3ljbGVfdGltZTtcXG4rXFxuK1xcdFxcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcXG4rXFx0XFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XFxuK1xcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXFx1MDAyNlxcdTAwMjYgLS1idWRnZXQpIHtcXG4rXFx0XFx0aWYgKGxpc3RfaXNfbGFzdChcXHUwMDI2ZW50cnktXFx1MDAzZWxpc3QsIFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzKSB8fFxcbitcXHRcXHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XFxuK1xcdFxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c3RhcnQgPSBlbmQ7XFxuK1xcdFxcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCk7XFxuK1xcdFxcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHR9XFxuK1xcbitcXHQqbmV4dCA9IGVudHJ5O1xcbitcXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xcbitcXHQqZW5kX3RpbWUgPSBlbmQ7XFxuK31cXG4rXFxuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4gXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuIFxcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cXHUwMDNlcm9vdDtcXG4tXFx0a3RpbWVfdCBlbmRfdGltZTtcXG4rXFx0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xcbiBcXHRpbnQgdGM7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0bmV4dF9zdGFydCA9IGVudHJ5LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuIFxcbitcXHRub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTtcXG4rXFx0aWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpXFxuK1xcdFxcdHRhcHJpb19jYXRjaF91cChvcGVyLCBcXHUwMDI2bmV4dCwgXFx1MDAyNm5leHRfc3RhcnQsIFxcdTAwMjZlbmRfdGltZSwgbm93KTtcXG4rXFxuIFxcdGZvciAodGMgPSAwOyB0YyBcXHUwMDNjIG51bV90YzsgdGMrKykge1xcbiBcXHRcXHRpZiAobmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSlcXG4gXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSxcXG4rXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xcbiBcXHR9XFxuIFxcbkBAIC0xMDM4LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbi1cXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFx0czY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7XFxuIFxcdHUzMiBpbnRlcnZhbCA9IDA7XFxuIFxcbiBcXHRpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKVxcbkBAIC0xMTY2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxuIFxcdFxcdG5ldy1cXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobmV3LVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2MgbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcXG4rXFx0aWYgKG5ldy1cXHUwMDNlY3ljbGVfdGltZSBcXHUwMDNjIChzNjQpbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXFxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXFxuQEAgLTE1NCw2ICsxNTQsMjggQEBcXG4gICAgICAgICAgICAgXFxcImVjaG8gXFxcXFxcXCIxXFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVxcXCJcXG4gICAgICAgICBdXFxuICAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJmNGIyXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cXFwiLFxcbisgICAgICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcInFkaXNjXFxcIixcXG4rICAgICAgICAgICAgXFxcInRhcHJpb1xcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBcXFwibnNQbHVnaW5cXFwiXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJlY2hvIFxcXFxcXFwiMSAxIDhcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcXFwiLFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIyXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjFcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXFxcIlxcbisgICAgICAgIF1cXG4rICAgIH0sXFxuICAgICB7XFxuICAgICAgICAgXFxcImlkXFxcIjogXFxcIjgzMWZcXFwiLFxcbiAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIkFkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjA0LjA3Mzc3NDU4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3NjM1NTc2MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiLFxuICAgIFwiYWR2YW5jZV9zY2hlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbiBcdHJldHVybiBkaXZfdTY0KGxlbiAqIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xuIH1cbiBcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbisgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4rICogYWxyZWFkeSBpbiB0aGUgcGFzdCBhbmQgc3Rvcm0gdGhlIENQVS4gMTAwdXMgbGVhdmVzIG1hcmdpbiBhYm92ZSB0aGVcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuKyAqL1xuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU1x0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXG4rXG4rc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4re1xuK1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4rXG4rXHQvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovXG4rXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4rXHRcdG1pbl9pbnRlcnZhbCA9IG1heF90KHM2NCwgbWluX2ludGVydmFsLFxuK1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbitcbitcdHJldHVybiBtaW5faW50ZXJ2YWw7XG4rfVxuK1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuKy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuKyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXBcbisgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbisgKi9cbitzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbitcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbitcdFx0XHQgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KVxuK3tcbitcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyArIDE7XG4rXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4rXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4rXHRrdGltZV90IGVuZCA9ICplbmRfdGltZTtcbitcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuK1xuK1x0aWYgKG9wZXItXHUwMDNlY3ljbGVfdGltZSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYmVoaW5kIFx1MDAzZT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4rXHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbitcbitcdFx0c3RhcnQgPSBrdGltZV9hZGRfbnMoc3RhcnQsIGp1bXApO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbitcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbitcdH1cbitcbitcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuK1x0XHRpZiAobGlzdF9pc19sYXN0KFx1MDAyNmVudHJ5LVx1MDAzZWxpc3QsIFx1MDAyNm9wZXItXHUwMDNlZW50cmllcykgfHxcbitcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4rXHRcdH1cbitcbitcdFx0c3RhcnQgPSBlbmQ7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbitcdFx0ZW5kID0gbWluX3Qoa3RpbWVfdCwgZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdH1cbitcbitcdCpuZXh0ID0gZW50cnk7XG4rXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuK1x0KmVuZF90aW1lID0gZW5kO1xuK31cbitcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZW5kX3RpbWUsIG5leHRfc3RhcnQsIG5vdztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTYwLDE0ICsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4rXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiBcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuIFxuK1x0bm93ID0gaHJ0aW1lcl9jYl9nZXRfdGltZSh0aW1lcik7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzowNC4wNzM3NzU5NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTk4Mjc4NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRBUFJJTyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBUQVBSSU8gcWRpc2MsIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzLCB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCB0YWtpbmcgYSBkZWVwZXIgbG9vayBhdC4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgc3BlY2lmaWNhbGx5IGluIHRoZSBUQVBSSU8gcWRpc2MuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgIGFuZCBgdGFwcmlvX2NhdGNoX3VwYCB0byBhZGRyZXNzIHBvdGVudGlhbCBDUFUgc3Rvcm1zIGFuZCBzY2hlZHVsaW5nIGJhY2tsb2dzIGFyZSBjcml0aWNhbCBmdW5jdGlvbmFsIGltcHJvdmVtZW50cy5cblxuU2luY2UgdGhpcyBhZmZlY3RzIHRoZSBjb3JlIHNjaGVkdWxpbmcgYW5kIGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChpLmUuLCBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gKSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0IGludGVyYWN0cyB3aXRoIHVzZXJzcGFjZSB2aWEgYSB3ZWxsLWRlZmluZWQgaW50ZXJmYWNlIGlzIGEgYmlnIGFkdmFudGFnZSBmb3IgZnV6emluZyBlZmZlY3RpdmVuZXNzLiBBbnkgdW5leHBlY3RlZCBiZWhhdmlvciBoZXJlIGNvdWxkIGhhdmUgc2VyaW91cyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBDT05GSUcgb3B0aW9ucyBlbmFibGUgdGhpcyBjb2RlIHBhdGggc28gSSBjYW4gY29uZmlndXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuIEl0J3MgaW4gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLCBzbyBJJ2xsIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdG8gZmluZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIGNvZGUgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoxMS4yNzIwNTcxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNTQ1MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF90YXByaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXFxubmV0L3NjaGVkL0tjb25maWc6MTc5OlxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXFxubmV0L3NjaGVkL0tjb25maWctMTgxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTEuNzUzNjA3MTU4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MjM5NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBORVRfU0NIX1RBUFJJT2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoYXQncyB0aGUgY29uZmlnIHRvIGxvb2sgYXQuXCIgVGltZSB0byBkaXZlIGluIGFuZCBnZXQgYSBncmlwIG9uIHRoZSBkZXBlbmRlbmNpZXMuIEdvdHRhIHNlZSB3aGF0IG90aGVyIGtub2JzIGFuZCBsZXZlcnMgdGhpcyBtb2R1bGUgaXMgdGllZCB0bywgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGludGVycGxheSB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIHN0YWNrLiBMZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWdzIGFyZSBnb2luZyB0byBpbmZsdWVuY2UgYE5FVF9TQ0hfVEFQUklPYCdzIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRoZSByYWJiaXQgaG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjE1LjAxNjAwNzI0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDM0MTM5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTUuMDgwMzUyNjAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDA2ODIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOlxuXG4qKkFuYWx5emluZyB0aGUgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBjb25maWcgTkVUX1NDSF9UQVBSSU9gLiBJIGtub3cgdGhpcyBtZWFucyBJIG5lZWQgdG8gbG9vayBhdCBgbmV0L3NjaGVkL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBzY2hlZHVsaW5nIGFyZSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgYEtjb25maWdgIGZpbGUgdG8gaG9sZCB0aGUgZGV0YWlscyAtIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBoZWxwIHRleHQsIHRoZSBkZWZhdWx0IHZhbHVlcywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBuZWVkZWQgZm9yIGNvbmZpZ3VyaW5nIFRBUFJJTy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBzdHJ1Y3R1cmVkIGluIHJlbGF0aW9uIHRvIG90aGVyIHNjaGVkdWxpbmcgZGlzY2lwbGluZXM7IGlzIGl0IGEgc3RhbmRhbG9uZSBmZWF0dXJlIG9yIGJ1aWx0IHVwb24gc29tZXRoaW5nIGVsc2U/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25mbGljdGluZyBvcHRpb25zPyBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgaXQgcmVsYXRlcyB0byB0aGUgVFNOIGZyYW1ld29yayBvciBzcGVjaWZpYyBOSUMgZHJpdmVycy4gVGhpcyBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzbyBJJ20gZXhwZWN0aW5nIGl0IHRvIGJlIGd1YXJkZWQgYnkgY2VydGFpbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb3RoZXIga2VybmVsIGZlYXR1cmUgY29uZmlndXJhdGlvbnMuIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQuIEknbSBnb2luZyBpbiB3aXRoIGEgY3JpdGljYWwgZXllLCByZWFkeSB0byBhc3Nlc3MgaG93IHRoaXMgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JrIHNjaGVkdWxlcidzIGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgSSdsbCB1bmNvdmVyIHNvbWUgaW50ZXJlc3RpbmcgaW5zaWdodHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoxOC45NzA0MjM0MThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcXG4gMTc3OlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDE4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgTkVUX1NDSF9HUkVEXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxcbiAxODg6XFx0XFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXFxuIDE4OTpcXHRcXHQgIChzZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXFx1MDAzZSBmb3IgZGV0YWlscyBhbmRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTguOTcwNTI5MDc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMTU5NzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYCBoZXJlLiBJdCBzZWVtcyB0aGF0IGVuYWJsaW5nIHRoaXMgc3BlY2lmaWMgc2NoZWR1bGVyIGF1dG9tYXRpY2FsbHkgcHVsbHMgaW4gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHBhcmVudCBjb25maWdzIGZvciBgTkVUX1NDSF9UQVBSSU9gIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gSG1tLCBgTkVUX1NDSEVEYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZS4gTGV0IG1lIHF1aWNrbHkganVtcCBvdmVyIHRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MjIuMTgyMTI4MzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoyMi4xODIyMTMxMzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzNDQ4NTg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5FVF9TQ0hFRCBhbmQgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIOKAkyB0aGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIGtleSBpcyB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgc3ltYm9scyB0b3VjaGVkIGJ5IHRoZSBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGNhbGxzLCB0aGUgdmFyaWFibGVzLlxuXG5JIHNlZSBtb2RpZmljYXRpb25zIHRvIGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAuIE9rYXksIGFuZCB0aGVuIHRoZXJlIGFyZSB0aGUgbmV3IGludHJvZHVjdGlvbnM6IGB0YXByaW9fY2F0Y2hfdXBgIOKAkyB3aGljaCBpcyAqc3RhdGljKiAtIGFuZCBgdGFwcmlvX21pbl9pbnRlcnZhbGAsIGFsc28gKnN0YXRpYyouIEhtbSwgYGFkdmFuY2Vfc2NoZWRgIGlzIGEgYGhydGltZXJgIGNhbGxiYWNrLiBJbnRlcmVzdGluZy4gTm93LCBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBxZGlzYyBjb25maWd1cmF0aW9uIHBoYXNlLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGxhc3QgdHdvIGFyZSBjYWxsZWQgZHVyaW5nIGNvbmZpZywgbGV0J3MgZGlnIGludG8gdGhvc2UgbW9yZSBkZWVwbHkg4oCTIGFyZSB0aGV5IHN0YXRpYyBmdW5jdGlvbnM/IFRoYXQncyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUuIEknbGwgY2hlY2sgdGhlIGRlY2xhcmF0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGgsIHRvIGNvbmZpcm0gdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MjYuNTE2NzAxOTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MjI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYXJzZV90YXByaW9fc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTExNTg9c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk4OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTktXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg4Nz1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODI6XFx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTgzLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoyNi41ODc2NTgzNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNDYxOTc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFRBUFJJTyBTY2hlZHVsZXIgQ29kZSoqXG5cbkFscmlnaHQsIHNvIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFuZCBgdGFwcmlvX2NoYW5nZWAgYXJlIGJvdGggc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhhdCB1c3VhbGx5IG1lYW5zIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgbm90IGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzY2hlZHVsZXIgKmFjdHVhbGx5KiB3b3Jrcywgc28gbm93IEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGUgc2NoZWR1bGVyLiBUaW1lIHRvIGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgYWltIGlzIHRvIGdldCBhIHNlbnNlIG9mIHRoZSBkeW5hbWljIGludGVycGxheTsgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5IHJlc3BvbmQgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzY2hlZHVsaW5nIGNoYW5nZXMsIGFuZCB0cmFmZmljIGRhdGEuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50LiBMZXQncyBzZWUgd2hhdCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGVsbCBtZSBhYm91dCB0aGUgc2NoZWR1bGVyJ3MgYmVoYXZpb3IuIEkgYW50aWNpcGF0ZSB0aGVzZSBhcmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBUQVBSSU8gc2NoZWR1bGVzIHRyYWZmaWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMDMsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzozMC41OTIyODAzODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjMwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtejAtOV9dKyApK1thLXowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTE0PXN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk6c3RhdGljIHZvaWQgdGFwcmlvX2NhbGN1bGF0ZV9nYXRlX2R1cmF0aW9ucyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIwLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY0OnN0YXRpYyBib29sIHRhcHJpb19lbnRyeV9hbGxvd3NfdHgoa3RpbWVfdCBza2JfZW5kX3RpbWUsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgaW50IHRjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzA6c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc4OnN0YXRpYyBrdGltZV90IHRhcHJpb19tb25vX3RvX2FueShjb25zdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBrdGltZV90IG1vbm8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTE6c3RhdGljIGt0aW1lX3QgdGFwcmlvX2dldF90aW1lKGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTY6c3RhdGljIHZvaWQgdGFwcmlvX2ZyZWVfc2NoZWRfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk3LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA5OnN0YXRpYyB2b2lkIHN3aXRjaF9zY2hlZHVsZXMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKiphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIzLS8qIEdldCBob3cgbXVjaCB0aW1lIGhhcyBiZWVuIGFscmVhZHkgZWxhcHNlZCBpbiB0aGUgY3VycmVudCBjeWNsZS4gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyNDpzdGF0aWMgczMyIGdldF9jeWNsZV90aW1lX2VsYXBzZWQoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgdGltZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyNS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTpzdGF0aWMga3RpbWVfdCBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU3OnN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjk6c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yODEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyODI6c3RhdGljIGludCBkdXJhdGlvbl90b19sZW5ndGgoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgdTY0IGR1cmF0aW9uKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjgzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkwLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjkxOnN0YXRpYyB2b2lkIHRhcHJpb191cGRhdGVfcXVldWVfbWF4X3NkdShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0zNDM9c3RhdGljIHN0cnVjdCBzY2hlZF9lbnRyeSAqZmluZF9lbnRyeV90b190cmFuc21pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MjA6c3RhdGljIGJvb2wgaXNfdmFsaWRfaW50ZXJ2YWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MjEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MzgtLyogVGhpcyByZXR1cm5zIHRoZSB0c3RhbXAgdmFsdWUgc2V0IGJ5IFRDUCBpbiB0ZXJtcyBvZiB0aGUgc2V0IGNsb2NrLiAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDM5OnN0YXRpYyBrdGltZV90IGdldF90Y3BfdHN0YW1wKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00ODctICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0ODg6c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00ODkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NTktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTYwOnN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTgxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjAyOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9Njc2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX3BlZWsoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY4MjpzdGF0aWMgdm9pZCB0YXByaW9fc2V0X2J1ZGdldHMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwMi0vKiBXaGVuIGFuIHNrYiBpcyBzZW50LCBpdCBjb25zdW1lcyBmcm9tIHRoZSBidWRnZXQgb2YgYWxsIHRyYWZmaWMgY2xhc3NlcyAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzAzOnN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDQtXFx0XFx0XFx0XFx0IGludCB0Y19jb25zdW1lZCwgaW50IG51bV90YylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzI2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg1Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04OTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4OTI6c3RhdGljIGJvb2wgc2hvdWxkX3Jlc3RhcnRfY3ljbGUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg5My1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTAzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTA0OnN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTA1LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDMtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5NDQ6c3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDUtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk4MzpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEwNi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMDc6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMDgtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMzgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTM5OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqbixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNDAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU4OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1OS1cXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk4OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTktXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNDk6c3RhdGljIGludCB0YXByaW9fcGFyc2VfbXFwcmlvX29wdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1MC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKnFvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyNzYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjc3OnN0YXRpYyBpbnQgdGFwcmlvX2dldF9zdGFydF90aW1lKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3OC1cXHRcXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzExOnN0YXRpYyB2b2lkIHNldHVwX2ZpcnN0X2VuZF90aW1lKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzEyLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzQwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM0MTpzdGF0aWMgdm9pZCB0YXByaW9fc3RhcnRfc2NoZWQoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzQyLVxcdFxcdFxcdCAgICAgICBrdGltZV90IHN0YXJ0LCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpuZXcpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzYzOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfcGljb3NfcGVyX2J5dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjQtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM5Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzOTc6c3RhdGljIGludCB0YXByaW9fZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk4LVxcdFxcdFxcdCAgICAgICB2b2lkICpwdHIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM0OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgYmFzZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ3MT1FWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzM6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0ODU9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZnJlZSk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0OTgtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDk5OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDk6c3RhdGljIHUzMiB0Y19tYXBfdG9fcXVldWVfbWFzayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgdGNfbWFzaylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTI3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUyODpzdGF0aWMgdm9pZCB0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUyOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTU3OnN0YXRpYyB2b2lkIHRhcHJpb19kZXRlY3RfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTc0OnN0YXRpYyB2b2lkIHRhcHJpb19jbGVhbnVwX2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTg0LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4NTpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4Ni1cXHRcXHRcXHRcXHQgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTE6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5MS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2OTI6c3RhdGljIGludCB0YXByaW9fcGFyc2VfY2xvY2tpZChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5My1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3NjktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzcwOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3MS1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODE2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgxNzpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV90Y19lbnRyaWVzKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTgxOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODY3OnN0YXRpYyBpbnQgdGFwcmlvX21xcHJpb19jbXAoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKm1xcHJpbylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4ODc6c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwODEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDgyOnN0YXRpYyB2b2lkIHRhcHJpb19yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwODMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA5NzpzdGF0aWMgdm9pZCB0YXByaW9fZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwOTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjEzNjpzdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM3LVxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMDAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjAxOnN0YXRpYyB2b2lkIHRhcHJpb19hdHRhY2goc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjAyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjIzNz1zdGF0aWMgc3RydWN0IG5ldGRldl9xdWV1ZSAqdGFwcmlvX3F1ZXVlX2dldChzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjI0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyNDk6c3RhdGljIGludCB0YXByaW9fZ3JhZnQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjUwLVxcdFxcdFxcdHN0cnVjdCBRZGlzYyAqbmV3LCBzdHJ1Y3QgUWRpc2MgKipvbGQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyOTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjkyOnN0YXRpYyBpbnQgZHVtcF9lbnRyeShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjI5My1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5KVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzIxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjMyMjpzdGF0aWMgaW50IGR1bXBfc2NoZWR1bGUoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzMjMtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnJvb3QpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzU4OnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfdGNfZW50cmllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjM1OS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzOTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzkxOnN0YXRpYyBpbnQgdGFwcmlvX3B1dF9zdGF0KHN0cnVjdCBza19idWZmICpza2IsIHU2NCB2YWwsIHUxNiBhdHRydHlwZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzk5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjQwMDpzdGF0aWMgaW50IHRhcHJpb19kdW1wX3hzdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0MDEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NDctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNDQ4OnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDQ5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ1Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI0NTc6c3RhdGljIGludCB0YXByaW9fZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTI3PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnRhcHJpb19sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTM4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjUzOTpzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXByaW9fZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDg6c3RhdGljIGludCB0YXByaW9fZHVtcF9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNtc2cgKnRjbSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU1OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NjA6c3RhdGljIGludCB0YXByaW9fZHVtcF9jbGFzc19zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NjEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGduZXRfZHVtcCAqZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1ODA6c3RhdGljIHZvaWQgdGFwcmlvX3dhbGsoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBxZGlzY193YWxrZXIgKmFyZylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1ODEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjI5PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdGFwcmlvX2RldmljZV9ub3RpZmllciA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzMi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MzM6c3RhdGljIGludCBfX2luaXQgdGFwcmlvX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjM0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2NDM6c3RhdGljIHZvaWQgX19leGl0IHRhcHJpb19tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjMwLjY4NDkxNDgzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0MzgwNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgVGFwcmlvJ3MgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgdGFwcmlvX29mZmxvYWRfZnJlZWAuIFRoYXQncyBub24tc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGltcG9ydGFudCBmb3IgaGFuZGxpbmcgb2ZmbG9hZHMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHdoZXJlIGFyZSB0aGUgUWRpc2Mgb3BlcmF0aW9ucyBkZWZpbmVkPyBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhleSdyZSBsaWtlbHkgcmVnaXN0ZXJlZCB3aXRoaW4gYHRhcHJpb19tb2R1bGVfaW5pdGAuIFllcywgbGV0J3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBzbyBJIGNhbiBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB0byB0aG9zZSBvZmZsb2FkZWQgcmVzb3VyY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM0LjE3OTI5NzY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NDM4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTItXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM0LjI4MzI0NjA0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDAzMjc4MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGluaXRpYWwgdGhvdWdodHMsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZW06XG5cbioqSW5pdGlhbCBEaXZlIGludG8gVEFQUklPIFFkaXNjIGFuZCBDbGFzcyBPcGVyYXRpb25zKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgYmVhcmluZ3Mgb24gdGhlc2UgVEFQUklPIGNvbXBvbmVudHMuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBzY2hlZHVsaW5nIGFuZCBjbGFzc2lmaWNhdGlvbiBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AgYW5kIGB0YXByaW9fY2xhc3Nfb3BzYC4gSSBrbm93IHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgUWRpc2MgKHF1ZXVlaW5nIGRpc2NpcGxpbmUpIG1hbmFnZW1lbnQgYW5kIGNsYXNzLWJhc2VkIHRyYWZmaWMgaGFuZGxpbmcsIHJlc3BlY3RpdmVseS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGludGVyZmFjZSB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2ssIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aGUgc3BlY2lmaWMgbnVhbmNlcyBvZiB0aGUgVEFQUklPIGFsZ29yaXRobS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MzkuNjg2NTI2ODEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MDA6XFx0XFxuMjYwMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyB0YXByaW9fY2xhc3Nfb3BzID0ge1xcbjI2MDI6XFx0XFx0LmdyYWZ0XFx0XFx0PSB0YXByaW9fZ3JhZnQsXFxuMjYwMzpcXHRcXHQubGVhZlxcdFxcdD0gdGFwcmlvX2xlYWYsXFxuMjYwNDpcXHRcXHQuZmluZFxcdFxcdD0gdGFwcmlvX2ZpbmQsXFxuMjYwNTpcXHRcXHQud2Fsa1xcdFxcdD0gdGFwcmlvX3dhbGssXFxuMjYwNjpcXHRcXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXFxuMjYwNzpcXHRcXHQuZHVtcF9zdGF0c1xcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXFxuMjYwODpcXHRcXHQuc2VsZWN0X3F1ZXVlXFx0PSB0YXByaW9fc2VsZWN0X3F1ZXVlLFxcbjI2MDk6XFx0fTtcXG4yNjEwOlxcdFxcbjI2MTE6XFx0c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbjI2MTI6XFx0XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuMjYxMzpcXHRcXHQuaWRcXHRcXHQ9IFxcXCJ0YXByaW9cXFwiLFxcbjI2MTQ6XFx0XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxcbjI2MTU6XFx0XFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbjI2MTY6XFx0XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG4yNjE3OlxcdFxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG4yNjE4OlxcdFxcdC5yZXNldFxcdFxcdD0gdGFwcmlvX3Jlc2V0LFxcbjI2MTk6XFx0XFx0LmF0dGFjaFxcdFxcdD0gdGFwcmlvX2F0dGFjaCxcXG4yNjIwOlxcdFxcdC5wZWVrXFx0XFx0PSB0YXByaW9fcGVlayxcXG4yNjIxOlxcdFxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG4yNjIyOlxcdFxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG4yNjIzOlxcdFxcdC5kdW1wXFx0XFx0PSB0YXByaW9fZHVtcCxcXG4yNjI0OlxcdFxcdC5kdW1wX3N0YXRzXFx0PSB0YXByaW9fZHVtcF9zdGF0cyxcXG4yNjI1OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuMjYyNjpcXHR9O1xcbjI2Mjc6XFx0TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcInRhcHJpb1xcXCIpO1xcbjI2Mjg6XFx0XFxuMjYyOTpcXHRzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHRhcHJpb19kZXZpY2Vfbm90aWZpZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM5LjY4NjY2Mjk3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDc1NzE3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gdGhlIGB0YXByaW9gIFNjaGVkdWxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyBhIGNyaXRpY2FsIGhydGltZXIgY2FsbGJhY2sg4oCTIHRoYXQncyBhIGhpZ2gtcHJpb3JpdHkgYXJlYSB0byB1bmRlcnN0YW5kLiBJdCdzIGFsc28gbW9kaWZ5aW5nIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIGFuZCB0aG9zZSBhcmUgY2FsbGVkIGZyb20gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgLiBSaWdodCwgc28gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZm9jdXNlZCBhbmFseXNpcy5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBUaGUgY29tcGlsZXIgd2lsbCBpbmxpbmUgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIHNvIHRoZXkgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXTigKYgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSByZWdpc3RlcmVkIGluIGB0YXByaW9fcWRpc2Nfb3BzYC4gVGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSdyZSAqbm90KiBpbmxpbmVkLiBUaGV5IGhhdmUgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuXG5cblN0aWxsLCBpZiB3ZSB3YW50IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFzIGEgcHJlZmVyZW5jZSwgd2UgbWlnaHQgYmUgb3V0IG9mIGx1Y2sgd2l0aGluIGBzY2hfdGFwcmlvLmNgIGV4Y2VwdCBmb3IgYHRhcHJpb19vZmZsb2FkX2ZyZWVgIGFuZCBgdGFwcmlvX29mZmxvYWRfZ2V0YC5cblxuSG9sZCBvbi4gTGV0J3MgcmVjYXAgYWJvdXQgYHRhcHJpb19jaGFuZ2VgLiBJdCdzIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzICppcyogdGFrZW4sIHNvIHRoZSBjb21waWxlciBjYW4ndCBpbmxpbmUgaXQuIEl0IGlzIG5vdCBwcml2YXRlIHRvIHRoZSBmaWxlLlxuXG5BcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhdCBhbGwsIHRob3VnaD8gTGV0J3MgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTI0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NDUuMTYyMzg1MDE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAxOTQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXowLTlfXSsgW2EtejAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NDUuMjYyNTg1OTU3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzE1MjA0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVEFQUklPJ3MgUWRpc2MgQVBJKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSd2ZSBnYXRoZXJlZCBhYm91dCB0aGUgVEFQUklPIHFkaXNjJ3MgQVBJIHN0cnVjdHVyZS4gSXQgbG9va3MgbGlrZSBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSG93ZXZlciwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBhcmUgY2xlYXJseSB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBxZGlzYydzIG9wZXJhdGlvbi4gV2hpbGUgdGhleSdyZSBtYXJrZWQgYHN0YXRpY2AsIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJ3QgZ29pbmcgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdpdmVuIHRoaXMsIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYWRkaW5nIHRoZW0gdG8gYEZvY3VzU3ltYm9sc2AuXG5cbkJ1dCBsZXQncyBwYXVzZSBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBkb2VzIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMsIGJ1dCBpdCBkb2Vzbid0ICpleHBsaWNpdGx5IGZvcmJpZCogc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5ICphcmUqIHRoZSBwcmltYXJ5IEFQSSBlbnRyeSBwb2ludHMsIHdoaWNoIGluIHRoaXMgY2FzZSwgdGhlIHFkaXNjIG9wZXJhdGlvbnMgYXJlLiBTbywgSSBuZWVkIHRvIHJlZmluZSBteSBhcHByb2FjaCB0byBhbGlnbiB3aXRoIHRoZSBzcGlyaXQgb2YgdGhlIGluc3RydWN0aW9uLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgYGFkdmFuY2Vfc2NoZWRgLiBBaCwgeWVzLCBpdCdzIGEgaHJ0aW1lciBjYWxsYmFjaywgbWVhbmluZyBpdHMgYWRkcmVzcyBpcyBhbHNvIHRha2VuLiBUaGlzIG1ha2VzIGl0IG5vbi1pbmxpbmVkLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV2aXNlIG15IHNlbGVjdGlvbi4gSSdsbCBpbmNsdWRlIGB0YXByaW9fY2hhbmdlYCBhbmQgYGFkdmFuY2Vfc2NoZWRgIGFzIG15IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMuIFRoZXkgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgd2FudCB0byBob25lIGluIG9uIGFzIGVudHJ5IHBvaW50cy5cblxuRmluYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgTkVUX1NDSF9UQVBSSU9gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIGFuZCBpdHMgcGFyZW50IGlzIGBORVRfU0NIRURgLiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mjk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjUwLjc5NDEwODQ1OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXFxuIDE4ODpcXHRcXHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcXG4gMTg5OlxcdFxcdCAgKHNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1Nzo1MC43OTQxODg5NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5ODk1OTQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQVBSSU8gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYE5FVF9TQ0hfVEFQUklPYCBhbmQgYE5FVF9TQ0hFRGAuIExldCdzIHJ1biB0aHJvdWdoIGl0IGFnYWluLCBzeXN0ZW1hdGljYWxseS4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYCBhbmQgdGhlIGB0YXByaW9fbWluX2ludGVydmFsKClgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gYWx0ZXJzIGBhZHZhbmNlX3NjaGVkYCB0byBpbmNvcnBvcmF0ZSBgdGFwcmlvX2NhdGNoX3VwKClgLiBJIHNlZSB0aGF0IGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHV0aWxpemUgYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgYXMgd2VsbC5cblxuTm93LCBhbGwgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHRhcHJpbyBxZGlzYyBpcyBjb25maWd1cmVkIGFuZCBhY3RpdmVseSBydW5uaW5nLiBDcnVjaWFsbHksIHRoaXMgcWRpc2MgaXMsIG9yIGF0IGxlYXN0ICpjYW4gYmUqLCBlbnRpcmVseSBzb2Z0d2FyZS1lbXVsYXRlZC4gVGhpcyBtZWFucyBpdCdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgcmVsZXZhbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBpbXBvcnRhbnQgZnJvbSBhIGRlcGxveW1lbnQgcGVyc3BlY3RpdmUuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBiZWluZyBhZGRyZXNzZWQgaXMgYSBDUFUgc3Rvcm0gcHJvYmxlbSB0aGF0IG9jY3VycyB3aGVuIHRoZSBzb2Z0d2FyZSBpbnRlcnZhbCBpcyBzZXQgdG8gc29tZXRoaW5nIHRvbyBzbWFsbC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIG1lYW5pbmcgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBzZXJpb3VzIGZ1enppbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIGtleSBzeW1ib2xzOiBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGFuZCBgYWR2YW5jZV9zY2hlZGAuIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlIGlmIGBORVRfU0NIX1RBUFJJT2AgaGluZ2VzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBsaWJyYXJpZXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzI0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NTUuOTkzMTUxMTQyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQwMTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXFxubmV0L3NjaGVkL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctMzUwLVxcdHNlbGVjdCBORVRfWEdSRVNTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNDA3LVxcdGJvb2wgXFxcIkJQRi1iYXNlZCBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxubmV0L3NjaGVkL0tjb25maWctNDA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctNDk3LVxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cXHRib29sIFxcXCJQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTI5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXFxubmV0L3NjaGVkL0tjb25maWctNTM0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBtYXJrcyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTM2LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXFxubmV0L3NjaGVkL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gQ0dST1VQU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXFx0aW50IFxcXCJTdGFjayBzaXplXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXFxubmV0L3NjaGVkL0tjb25maWctNjE2LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiTXVsdGkgYnl0ZSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cXHR0cmlzdGF0ZSBcXFwiVTMyIGtleVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjM4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXFxubmV0L3NjaGVkL0tjb25maWctNjQ2LVxcdHRyaXN0YXRlIFxcXCJNZXRhZGF0YVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXFxubmV0L3NjaGVkL0tjb25maWctNjU3LVxcdHRyaXN0YXRlIFxcXCJUZXh0c2VhcmNoXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXFx0c2VsZWN0IFRFWFRTRUFSQ0hcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cXHR0cmlzdGF0ZSBcXFwiQ0FOIElkZW50aWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjcyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXFxubmV0L3NjaGVkL0tjb25maWctNjczLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cXHR0cmlzdGF0ZSBcXFwiSVBzZXRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjgyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiBJUF9TRVRcXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cXHR0cmlzdGF0ZSBcXFwiSVB0YWJsZXMgTWF0Y2hlc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxubmV0L3NjaGVkL0tjb25maWctNzE2LVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzI3LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0JcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXFx0Ym9vbCBcXFwiUHJvYmFiaWxpdHkgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXFxubmV0L3NjaGVkL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFNhbXBsaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzU1LVxcdHNlbGVjdCBQU0FNUExFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzY3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzc2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBFeGFtcGxlIChEZWJ1ZylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzg1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXFx0dHJpc3RhdGUgXFxcIlNLQiBFZGl0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODAwLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXFxubmV0L3NjaGVkL0tjb25maWctODA5LVxcdHRyaXN0YXRlIFxcXCJDaGVja3N1bSBVcGRhdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctODExLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cXHR0cmlzdGF0ZSBcXFwiTVBMUyBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODIxOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXFx0dHJpc3RhdGUgXFxcIlZsYW4gbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXFx0dHJpc3RhdGUgXFxcIkJQRiBiYXNlZCBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODQzOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODU0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXFxubmV0L3NjaGVkL0tjb25maWctODgzLVxcdHRyaXN0YXRlIFxcXCJza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODg1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXFx0dHJpc3RhdGUgXFxcIkludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cXHRzZWxlY3QgTkVUX0lGRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXFx0dHJpc3RhdGUgXFxcIklQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTA4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxubmV0L3NjaGVkL0tjb25maWctOTIwLVxcdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXFxubmV0L3NjaGVkL0tjb25maWctOTQzLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTQ0OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXFxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTUzLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXFx0Ym9vbCBcXFwiVEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTU3LVxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1Nzo1Ni4wNzU1NTU5OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NTg3MTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVEFQUklPIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgaXQgaW5pdGlhbGx5IHNlZW1lZCBsaWtlIGBORVRfU0NIX1RBUFJJT2Agd2FzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIG9ubHkgZGVwZW5kaW5nIG9uIGBORVRfU0NIRURgIHdoaWNoIGlzIHRoZSBiYXNlIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbi4gQnV0IGhvbGQgb24sIEkgc2VlIHRoYXQgYE5FVF9TQ0hfVEFQUklPYCAqYWxzbyogc2VsZWN0cyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB0aGF0IGlmIEkgd2FudCB0byBlbmFibGUgVEFQUklPIHNjaGVkdWxpbmcsIGFsbCBJICpyZWFsbHkqIG5lZWQgYXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIHRoZW1zZWx2ZXMuIE5vIG5lZWQgdG8gZ28gaHVudGluZyBmb3IgYW55dGhpbmcgZWxzZSBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS5cblxuQWxyaWdodCwgcHV0dGluZyBpdCBhbGwgdG9nZXRoZXIsIGhlcmUncyB3aGF0IEkndmUgZ290OlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIFRoaXMgaXMgYSBjaGFuZ2UgdG8gY29yZSBzY2hlZHVsaW5nIGZ1bmN0aW9uYWxpdHksIHNvIHllcywgd29ydGggZnV6emluZy5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGBhZHZhbmNlX3NjaGVkYCAtIFRoZXNlIGZ1bmN0aW9ucyBhcmUga2V5LCB0aGV5IGNsZWFybHkgcmVsYXRlIHRvIHRoZSBtb2RpZmllZCBUQVBSSU8gYmVoYXZpb3IuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBORVRfU0NIRURgLCBgTkVUX1NDSF9UQVBSSU9gIC0gVGhvc2UgYXJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb25zIG5lZWRlZC5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyB0byBpbnRyb2R1Y2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsLCBhbmQgYWRkcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBpbXBvcnRhbnRseSwgaXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoYXQuIFRpbWUgdG8gZmVlZCB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlIHN5c3RlbSB1c2luZyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDEzOSwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTg6MDEuNTcxNDMwNDY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3OTE1OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIixcbiAgICBcImFkdmFuY2Vfc2NoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEFQUklPIHFkaXNjIHNjaGVkdWxpbmcgbG9naWMgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgc2NoZWR1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiLFxuICAgIFwiYWR2YW5jZV9zY2hlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU4OjAxLjcwOTM1NjA3M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTEzOTY2MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1ODowMS43MTAzNDI1OTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA0OTA0MDQxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbiBcdHJldHVybiBkaXZfdTY0KGxlbiAqIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xuIH1cbiBcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbisgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4rICogYWxyZWFkeSBpbiB0aGUgcGFzdCBhbmQgc3Rvcm0gdGhlIENQVS4gMTAwdXMgbGVhdmVzIG1hcmdpbiBhYm92ZSB0aGVcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuKyAqL1xuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU1x0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXG4rXG4rc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4re1xuK1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4rXG4rXHQvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovXG4rXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4rXHRcdG1pbl9pbnRlcnZhbCA9IG1heF90KHM2NCwgbWluX2ludGVydmFsLFxuK1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbitcbitcdHJldHVybiBtaW5faW50ZXJ2YWw7XG4rfVxuK1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuKy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuKyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXBcbisgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbisgKi9cbitzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbitcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbitcdFx0XHQgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KVxuK3tcbitcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyArIDE7XG4rXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4rXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4rXHRrdGltZV90IGVuZCA9ICplbmRfdGltZTtcbitcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuK1xuK1x0aWYgKG9wZXItXHUwMDNlY3ljbGVfdGltZSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYmVoaW5kIFx1MDAzZT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4rXHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbitcbitcdFx0c3RhcnQgPSBrdGltZV9hZGRfbnMoc3RhcnQsIGp1bXApO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbitcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbitcdH1cbitcbitcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuK1x0XHRpZiAobGlzdF9pc19sYXN0KFx1MDAyNmVudHJ5LVx1MDAzZWxpc3QsIFx1MDAyNm9wZXItXHUwMDNlZW50cmllcykgfHxcbitcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4rXHRcdH1cbitcbitcdFx0c3RhcnQgPSBlbmQ7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbitcdFx0ZW5kID0gbWluX3Qoa3RpbWVfdCwgZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdH1cbitcbitcdCpuZXh0ID0gZW50cnk7XG4rXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuK1x0KmVuZF90aW1lID0gZW5kO1xuK31cbitcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZW5kX3RpbWUsIG5leHRfc3RhcnQsIG5vdztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTYwLDE0ICsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4rXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiBcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuIFxuK1x0bm93ID0gaHJ0aW1lcl9jYl9nZXRfdGltZSh0aW1lcik7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1ODowMS43MTAzNDcyODNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0OTAzNTk4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdGFwcmlvIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQncyBkZWFsaW5nIHdpdGggc29mdHdhcmUgc2NoZWR1bGluZywgc3BlY2lmaWNhbGx5IGFpbWluZyB0byBwcmV2ZW50IENQVSBzdG9ybXMgZnJvbSBoYXBwZW5pbmcgYmVjYXVzZSBvZiBocnRpbWVycyBnZXR0aW5nIG91dCBvZiBzeW5jLiBJdCBpbnRyb2R1Y2VzIHR3byBuZXcgZnVuY3Rpb25zLCBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCBhbmQgYHRhcHJpb19jYXRjaF91cCgpYC5cblxuYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGNhbGN1bGF0aW5nIGEgbWluaW11bSB0aW1lIGludGVydmFsIGJhc2VkIG9uIHBhY2tldCBzaXplIChgbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKWApIGFuZCBhIGhhcmRjb2RlZCBtaW5pbXVtIChgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU2AsIHdoaWNoIGxvb2tzIHRvIGJlIDEwMHVzKS4gVGhpcyBpcyBsaWtlbHkgYSBndWFyZHJhaWwgdG8gcHJldmVudCB0aGluZ3MgZnJvbSBmaXJpbmcgdG9vIHJhcGlkbHksIHBvdGVudGlhbGx5IHN3YW1waW5nIHRoZSBDUFUgd2l0aCB0aW1lciBpbnRlcnJ1cHRzLlxuXG5gdGFwcmlvX2NhdGNoX3VwKClgIGlzIHRoZSBtb3JlIGludGVyZXN0aW5nIG9uZS4gSXQga2lja3MgaW4gd2hlbiB0aGUgc2NoZWR1bGUgaXMgYmVoaW5kIHJlYWwtdGltZS4gSXQncyBza2lwcGluZyBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgaWYgdGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGhhcyBmYWxsZW4gYmVoaW5kIGR1ZSB0byBkZWxheWVkIHRpbWVycyBvciBjbG9jayBzdGVwcywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuIEl0J3MgdXBkYXRpbmcgYG5leHRgLCBgbmV4dF9zdGFydGAsIGFuZCBgZW5kX3RpbWVgIHRvIGdldCB0aGluZ3MgYmFjayBvbiB0cmFjay5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgdGhlIGNoYW5nZXMgYXJlIGFsbCBsb2dpYy1iYXNlZC4gSXQncyB0aW1lciBjYWxjdWxhdGlvbnMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlJ3Mgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgbm8gY2hhbmdlcyB0aGF0IEkgY2FuIHNlZSB0aGF0IHdvdWxkIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXQncyBhIGh1Z2UgcmVsaWVmLlxuXG5UaGUgcm9vdCBjYXVzZSB0aGlzIHBhdGNoIGlzIGZpeGluZyBpcyBsaWtlbHkgYSBDUFUgc3RhbGwgb3Igc3Rvcm0uIFRoZSBocnRpbWVyIGlzIGVpdGhlciBmaXJpbmcgdG9vIGZyZXF1ZW50bHksIG9yIHRoZSBzY2hlZHVsZXIgaGFzIGZhbGxlbiBiZWhpbmQgYW5kIGlzIHRyeWluZyB0byByZXBsYXkgYSBodWdlIGJhY2tsb2cgb2YgZXZlbnRzLlxuXG5HaXZlbiBhbGwgdGhpcywgSSBhbSBjb25maWRlbnQgdGhhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzICpub3QqIG5lY2Vzc2FyeSBoZXJlLiBUaGUgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBLQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIGFyZSBtb3JlIHRoYW4gc3VmZmljaWVudCB0byBjYXRjaCBtZW1vcnkgY29ycnVwdGlvbiBvciBsb2NraW5nIGlzc3Vlcy5cblxuSSd2ZSB0YWtlbiBhIGNsb3NlciBsb29rIGF0IGB0YXByaW9fY2F0Y2hfdXAoKWAgYWdhaW4ganVzdCB0byBiZSBzdXJlLiBJIGNhbiB2ZXJpZnkgdGhhdCBhbGwgdGhlIGtleSBkYXRhLCBgb3BlcmAsIGBuZXh0YCwgYG5leHRfc3RhcnRgLCBhbmQgYGVuZF90aW1lYCwgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgdGhlcmUncyBubyB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gY291bGQgcG9zc2libHkgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg2LCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU4OjEyLjIwMDcxMTMyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6lt9k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 06:39:45 +0000 UTC FinishedAt: 2026-08-20 06:58:14 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "564973a259ec76f2dad0853420e7034cc43994c4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED", "NET_SCH_TAPRIO" ], "series_id": "64cdeaeb-dcaa-4675-b5fe-6743fcd15246" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "taprio_change", "taprio_init", "advance_sched" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7LAogICAgJiMzNDtORVRfU0NIX1RBUFJJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RhcHJpb19jaGFuZ2UmIzM0OywKICAgICYjMzQ7dGFwcmlvX2luaXQmIzM0OywKICAgICYjMzQ7YWR2YW5jZV9zY2hlZCYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEFQUklPIHFkaXNjIHNjaGVkdWxpbmcgbG9naWMgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgc2NoZWR1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGYyM2ZmMmIwZjZlNDYzZDIzYTE0MDRhZDNhMDZiZTk4MTU2OGU0OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDIwIDA2OjU3OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICYjNDM7MjU5LDI2IEBAIHN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXG4gXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFx1MDAyNnEtXHUwMDNlcGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTtcbiB9XG4gXG4mIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFsc1xuJiM0MzsgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4mIzQzOyAqIGFscmVhZHkgaW4gdGhlIHBhc3QgYW5kIHN0b3JtIHRoZSBDUFUuIDEwMHVzIGxlYXZlcyBtYXJnaW4gYWJvdmUgdGhlXG4mIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNcdCgxMDAgKiBOU0VDX1BFUl9VU0VDKVxuJiM0MztcbiYjNDM7c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4mIzQzO3tcbiYjNDM7XHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbiYjNDM7XG4mIzQzO1x0LyogT25seSBwdXJlIHNvZnR3YXJlIHNjaGVkdWxlcyBhcm0gdGhlIHBlci1lbnRyeSBocnRpbWVyLiAqL1xuJiM0MztcdGlmICghRlVMTF9PRkZMT0FEX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4mIzQzO1x0XHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcbiYjNDM7XHRcdFx0XHQgICAgIFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gbWluX2ludGVydmFsO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxuIFx0cmV0dXJuIGZhbHNlO1xuIH1cbiBcbiYjNDM7LyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXG4mIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuJiM0MzsgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXG4mIzQzOyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxuJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxuJiM0MztcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbiYjNDM7XHRcdFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcbiYjNDM7e1xuJiM0MztcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyAmIzQzOyAxO1xuJiM0MztcdHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkgPSAqbmV4dDtcbiYjNDM7XHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4mIzQzO1x0a3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7XG4mIzQzO1x0czY0IGJlaGluZCA9IGt0aW1lX3N1Yihub3csIGVuZCk7XG4mIzQzO1xuJiM0MztcdGlmIChvcGVyLVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNlIDAgXHUwMDI2XHUwMDI2IGJlaGluZCBcdTAwM2U9IG9wZXItXHUwMDNlY3ljbGVfdGltZSkge1xuJiM0MztcdFx0czY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLVx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cdTAwM2VjeWNsZV90aW1lO1xuJiM0MztcbiYjNDM7XHRcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcbiYjNDM7XHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGp1bXApO1xuJiM0MztcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuJiM0MztcdFx0aWYgKGxpc3RfaXNfbGFzdChcdTAwMjZlbnRyeS1cdTAwM2VsaXN0LCBcdTAwMjZvcGVyLVx1MDAzZWVudHJpZXMpIHx8XG4mIzQzO1x0XHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpID09IDApIHtcbiYjNDM7XHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbiYjNDM7XHRcdFx0XHRcdFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XG4mIzQzO1x0XHRcdG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMob3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRzdGFydCA9IGVuZDtcbiYjNDM7XHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbiYjNDM7XHRcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQqbmV4dCA9IGVudHJ5O1xuJiM0MztcdCpuZXh0X3N0YXJ0ID0gc3RhcnQ7XG4mIzQzO1x0KmVuZF90aW1lID0gZW5kO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiB7XG4gXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxuQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbiYjNDM7XHRrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7XG4gXHRpbnQgdGM7XG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cS1cdTAwM2VjdXJyZW50X2VudHJ5X2xvY2spO1xuQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0XHRuZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcbiBcdH1cbiBcbi1cdGVuZF90aW1lID0ga3RpbWVfYWRkX25zKGVudHJ5LVx1MDAzZWVuZF90aW1lLCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiYjNDM7XHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4mIzQzO1x0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4gXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbiBcbiYjNDM7XHRub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTtcbiYjNDM7XHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbiYjNDM7XHRcdHRhcHJpb19jYXRjaF91cChvcGVyLCBcdTAwMjZuZXh0LCBcdTAwMjZuZXh0X3N0YXJ0LCBcdTAwMjZlbmRfdGltZSwgbm93KTtcbiYjNDM7XG4gXHRmb3IgKHRjID0gMDsgdGMgXHUwMDNjIG51bV90YzsgdGMmIzQzOyYjNDM7KSB7XG4gXHRcdGlmIChuZXh0LVx1MDAzZWdhdGVfZHVyYXRpb25bdGNdID09IG9wZXItXHUwMDNlY3ljbGVfdGltZSlcbiBcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBLVElNRV9NQVg7XG4gXHRcdGVsc2Vcbi1cdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMoZW50cnktXHUwMDNlZW5kX3RpbWUsXG4mIzQzO1x0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxuIFx0XHRcdFx0XHRcdFx0XHQgbmV4dC1cdTAwM2VnYXRlX2R1cmF0aW9uW3RjXSk7XG4gXHR9XG4gXG5AQCAtMTAzOCw3ICYjNDM7MTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbiYjNDM7XHRzNjQgbWluX2R1cmF0aW9uID0gdGFwcmlvX21pbl9pbnRlcnZhbChxKTtcbiBcdHUzMiBpbnRlcnZhbCA9IDA7XG4gXG4gXHRpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKVxuQEAgLTExNjYsNyAmIzQzOzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdG5ldy1cdTAwM2VjeWNsZV90aW1lID0gY3ljbGU7XG4gXHR9XG4gXG4tXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIG5ldy1cdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcbiYjNDM7XHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbFwmIzM0Oyk7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbmluZGV4IGNkMTlkMDU5MjVlNDAuLjNmZTY2ODM5ZjhhZWQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb25cbkBAIC0xNTQsNiAmIzQzOzE1NCwyOCBAQFxuICAgICAgICAgICAgIFwmIzM0O2VjaG8gXFxcJiMzNDsxXFxcJiMzNDsgXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXCYjMzQ7XG4gICAgICAgICBdXG4gICAgIH0sXG4mIzQzOyAgICB7XG4mIzQzOyAgICAgICAgXCYjMzQ7aWRcJiMzNDs6IFwmIzM0O2Y0YjJcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHNvZnR3YXJlIGludGVydmFsIGJlbG93IHRoZSBtaW5pbXVtXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2NhdGVnb3J5XCYjMzQ7OiBbXG4mIzQzOyAgICAgICAgICAgIFwmIzM0O3FkaXNjXCYjMzQ7LFxuJiM0MzsgICAgICAgICAgICBcJiMzNDt0YXByaW9cJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O3BsdWdpbnNcJiMzNDs6IHtcbiYjNDM7ICAgICAgICAgICAgXCYjMzQ7cmVxdWlyZXNcJiMzNDs6IFwmIzM0O25zUGx1Z2luXCYjMzQ7XG4mIzQzOyAgICAgICAgfSxcbiYjNDM7ICAgICAgICBcJiMzNDtzZXR1cFwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtlY2hvIFxcXCYjMzQ7MSAxIDhcXFwmIzM0OyBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2VcJiMzNDtcbiYjNDM7ICAgICAgICBdLFxuJiM0MzsgICAgICAgIFwmIzM0O2NtZFVuZGVyVGVzdFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O2V4cEV4aXRDb2RlXCYjMzQ7OiBcJiMzNDsyXCYjMzQ7LFxuJiM0MzsgICAgICAgIFwmIzM0O3ZlcmlmeUNtZFwmIzM0OzogXCYjMzQ7JFRDIHFkaXNjIHNob3cgZGV2ICRFVEhcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hQYXR0ZXJuXCYjMzQ7OiBcJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnRcJiMzNDssXG4mIzQzOyAgICAgICAgXCYjMzQ7bWF0Y2hDb3VudFwmIzM0OzogXCYjMzQ7MFwmIzM0OyxcbiYjNDM7ICAgICAgICBcJiMzNDt0ZWFyZG93blwmIzM0OzogW1xuJiM0MzsgICAgICAgICAgICBcJiMzNDtlY2hvIFxcXCYjMzQ7MVxcXCYjMzQ7IFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwmIzM0O1xuJiM0MzsgICAgICAgIF1cbiYjNDM7ICAgIH0sXG4gICAgIHtcbiAgICAgICAgIFwmIzM0O2lkXCYjMzQ7OiBcJiMzNDs4MzFmXCYjMzQ7LFxuICAgICAgICAgXCYjMzQ7bmFtZVwmIzM0OzogXCYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCYjMzQ7LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDssCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIGxvZ2ljIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTsKJiM0MzsJaWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpCiYjNDM7CQl0YXByaW9fY2F0Y2hfdXAob3BlciwgJmFtcDtuZXh0LCAmYW1wO25leHRfc3RhcnQsICZhbXA7ZW5kX3RpbWUsIG5vdyk7CiYjNDM7CiAJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKIAkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpCiAJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYOwogCQllbHNlCi0JCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LSZndDtlbmRfdGltZSwKJiM0MzsJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsCiAJCQkJCQkJCSBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiAJfQogCkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJCSAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LAogCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQlpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKJiM0MzsJczY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7CiAJdTMyIGludGVydmFsID0gMDsKIAogCWlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pCkBAIC0xMTY2LDcgJiM0MzsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQluZXctJmd0O2N5Y2xlX3RpbWUgPSBjeWNsZTsKIAl9CiAKLQlpZiAobmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHsKJiM0MzsJaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IChzNjQpbmV3LSZndDtudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgppbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgpAQCAtMTU0LDYgJiM0MzsxNTQsMjggQEAKICAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwogICAgICAgICBdCiAgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2Y0YjImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7dGFwcmlvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzEgMSA4XCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAogICAgIHsKICAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzgzMWYmIzM0OywKICAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxODkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVEFQUklPIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGZvciB0aGUgVEFQUklPIHFkaXNjLCBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcywgeWVzLCB0aGlzIGlzIGFic29sdXRlbHkgd29ydGggdGFraW5nIGEgZGVlcGVyIGxvb2sgYXQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgaXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgc3BlY2lmaWNhbGx5IGluIHRoZSBUQVBSSU8gcWRpc2MuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgIGFuZCBgdGFwcmlvX2NhdGNoX3VwYCB0byBhZGRyZXNzIHBvdGVudGlhbCBDUFUgc3Rvcm1zIGFuZCBzY2hlZHVsaW5nIGJhY2tsb2dzIGFyZSBjcml0aWNhbCBmdW5jdGlvbmFsIGltcHJvdmVtZW50cy4KClNpbmNlIHRoaXMgYWZmZWN0cyB0aGUgY29yZSBzY2hlZHVsaW5nIGFuZCBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKGkuZS4sIGB0YyBxZGlzYyBhZGQgLi4uIHRhcHJpb2ApLCB0aGlzIGlzIGRlZmluaXRlbHkgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgaXQgaW50ZXJhY3RzIHdpdGggdXNlcnNwYWNlIHZpYSBhIHdlbGwtZGVmaW5lZCBpbnRlcmZhY2UgaXMgYSBiaWcgYWR2YW50YWdlIGZvciBmdXp6aW5nIGVmZmVjdGl2ZW5lc3MuIEFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIGhlcmUgY291bGQgaGF2ZSBzZXJpb3VzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4KCk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hpY2ggQ09ORklHIG9wdGlvbnMgZW5hYmxlIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGNvbmZpZ3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCBhcHByb3ByaWF0ZWx5LiBJdCYjMzk7cyBpbiBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AsIHNvIEkmIzM5O2xsIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdG8gZmluZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5zdXJlIHRoZSBjb2RlIGlzIGFjdHVhbGx5IGNvbXBpbGVkIGludG8gdGhlIGZ1enppbmcgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjaF90YXByaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnPTE3Mj1jb25maWcgTkVUX1NDSF9UQVBSSU9cbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzk6XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxubmV0L3NjaGVkL0tjb25maWctMTgwLVxubmV0L3NjaGVkL0tjb25maWctMTgxLVx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG5uZXQvc2NoZWQvS2NvbmZpZzoxODI6XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxubmV0L3NjaGVkL0tjb25maWctMTgzLVxuLS1cbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXHQmIzQzOz0gc2NoX2V0Zi5vXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX05FVF9TQ0hfVEFQUklPKVx0JiM0Mzs9IHNjaF90YXByaW8ub1xubmV0L3NjaGVkL01ha2VmaWxlLTY1LW9iai0kKENPTkZJR19ORVRfU0NIX0JQRilcdCYjNDM7PSBicGZfcWRpc2Mub1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MzovKiBuZXQvc2NoZWQvc2NoX3RhcHJpby5jXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNC0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYE5FVF9TQ0hfVEFQUklPYCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBORVRfU0NIX1RBUFJJT2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCB0aGF0JiMzOTtzIHRoZSBjb25maWcgdG8gbG9vayBhdC4mIzM0OyBUaW1lIHRvIGRpdmUgaW4gYW5kIGdldCBhIGdyaXAgb24gdGhlIGRlcGVuZGVuY2llcy4gR290dGEgc2VlIHdoYXQgb3RoZXIga25vYnMgYW5kIGxldmVycyB0aGlzIG1vZHVsZSBpcyB0aWVkIHRvLCB3aGF0IGFzc3VtcHRpb25zIGl0IG1ha2VzIGFib3V0IHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIG9yIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgaW50ZXJwbGF5IHdpdGhpbiB0aGUgbGFyZ2VyIG5ldHdvcmtpbmcgc3RhY2suIExldCYjMzk7cyBzZWUgd2hhdCBvdGhlciBjb25maWdzIGFyZSBnb2luZyB0byBpbmZsdWVuY2UgYE5FVF9TQ0hfVEFQUklPYCYjMzk7cyBiZWhhdmlvci4gVGltZSB0byB0cmFjZSB0aGUgcmFiYml0IGhvbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9TQ0hfVEFQUklPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzEtXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzMtXHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyB0aGUgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYGNvbmZpZyBORVRfU0NIX1RBUFJJT2AuIEkga25vdyB0aGlzIG1lYW5zIEkgbmVlZCB0byBsb29rIGF0IGBuZXQvc2NoZWQvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBzY2hlZHVsaW5nIGFyZSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIGBLY29uZmlnYCBmaWxlIHRvIGhvbGQgdGhlIGRldGFpbHMgLSB0aGUgZGVwZW5kZW5jaWVzLCB0aGUgaGVscCB0ZXh0LCB0aGUgZGVmYXVsdCB2YWx1ZXMsIGFuZCBldmVyeXRoaW5nIGVsc2UgbmVlZGVkIGZvciBjb25maWd1cmluZyBUQVBSSU8uIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBzdHJ1Y3R1cmVkIGluIHJlbGF0aW9uIHRvIG90aGVyIHNjaGVkdWxpbmcgZGlzY2lwbGluZXM7IGlzIGl0IGEgc3RhbmRhbG9uZSBmZWF0dXJlIG9yIGJ1aWx0IHVwb24gc29tZXRoaW5nIGVsc2U/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25mbGljdGluZyBvcHRpb25zPyBJJiMzOTtsbCBiZSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiB3aGV0aGVyIGl0IHJlbGF0ZXMgdG8gdGhlIFRTTiBmcmFtZXdvcmsgb3Igc3BlY2lmaWMgTklDIGRyaXZlcnMuIFRoaXMgaXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gSSYjMzk7bSBleHBlY3RpbmcgaXQgdG8gYmUgZ3VhcmRlZCBieSBjZXJ0YWluIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvciBvdGhlciBrZXJuZWwgZmVhdHVyZSBjb25maWd1cmF0aW9ucy4gS25vd2luZyB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdC4gSSYjMzk7bSBnb2luZyBpbiB3aXRoIGEgY3JpdGljYWwgZXllLCByZWFkeSB0byBhc3Nlc3MgaG93IHRoaXMgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JrIHNjaGVkdWxlciYjMzk7cyBhcmNoaXRlY3R1cmUuIEkgZXhwZWN0IEkmIzM5O2xsIHVuY292ZXIgc29tZSBpbnRlcmVzdGluZyBpbnNpZ2h0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNzA6XHRcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXG4gMTcxOlx0XG4gMTcyOlx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXG4gMTczOlx0XHR0cmlzdGF0ZSBcJiMzNDtUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclwmIzM0O1xuIDE3NDpcdFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxuIDE3NTpcdFx0aGVscFxuIDE3NjpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcbiAxNzc6XHRcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXG4gMTc4Olx0XG4gMTc5Olx0XHQgIFNlZSB0aGUgdG9wIG9mIFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1x1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxuIDE4MDpcdFxuIDE4MTpcdFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTgyOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxuIDE4MzpcdFxuIDE4NDpcdGNvbmZpZyBORVRfU0NIX0dSRURcbiAxODU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvbiAoR1JFRClcJiMzNDtcbiAxODY6XHRcdGhlbHBcbiAxODc6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxuIDE4ODpcdFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXG4gMTg5Olx0XHQgIChzZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcdTAwM2UgZm9yIGRldGFpbHMgYW5kXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTk4NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIE5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBORVRfU0NIX1RBUFJJT2AgaGVyZS4gSXQgc2VlbXMgdGhhdCBlbmFibGluZyB0aGlzIHNwZWNpZmljIHNjaGVkdWxlciBhdXRvbWF0aWNhbGx5IHB1bGxzIGluIGBORVRfU0NIX01RUFJJT19MSUJgLiBUaGF0IG1ha2VzIHNlbnNlLiBOb3csIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBwYXJlbnQgY29uZmlncyBmb3IgYE5FVF9TQ0hfVEFQUklPYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIEhtbSwgYE5FVF9TQ0hFRGAgc2VlbXMgbGlrZSBhIGxpa2VseSBjYW5kaWRhdGUuIExldCBtZSBxdWlja2x5IGp1bXAgb3ZlciB0byBgbmV0L3NjaGVkL0tjb25maWdgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgdG9wLWxldmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORVRfU0NIRUQgYW5kIE5FVF9TQ0hfVEFQUklPIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIOKAkyB0aGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBOb3csIHRoZSBrZXkgaXMgdG8gcGlucG9pbnQgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG91Y2hlZCBieSB0aGUgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgdGhlIHZhcmlhYmxlcy4KCkkgc2VlIG1vZGlmaWNhdGlvbnMgdG8gYGFkdmFuY2Vfc2NoZWRgLCBgZmlsbF9zY2hlZF9lbnRyeWAsIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYC4gT2theSwgYW5kIHRoZW4gdGhlcmUgYXJlIHRoZSBuZXcgaW50cm9kdWN0aW9uczogYHRhcHJpb19jYXRjaF91cGAg4oCTIHdoaWNoIGlzICpzdGF0aWMqIC0gYW5kIGB0YXByaW9fbWluX2ludGVydmFsYCwgYWxzbyAqc3RhdGljKi4gSG1tLCBgYWR2YW5jZV9zY2hlZGAgaXMgYSBgaHJ0aW1lcmAgY2FsbGJhY2suIEludGVyZXN0aW5nLiBOb3csIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGNhbGxlZCBkdXJpbmcgdGhlIHFkaXNjIGNvbmZpZ3VyYXRpb24gcGhhc2UuCgpHaXZlbiB0aGF0IHRoZXNlIGxhc3QgdHdvIGFyZSBjYWxsZWQgZHVyaW5nIGNvbmZpZywgbGV0JiMzOTtzIGRpZyBpbnRvIHRob3NlIG1vcmUgZGVlcGx5IOKAkyBhcmUgdGhleSBzdGF0aWMgZnVuY3Rpb25zPyBUaGF0JiMzOTtzIHRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gdGhhdCBJIG5lZWQgdG8gcmVzb2x2ZS4gSSYjMzk7bGwgY2hlY2sgdGhlIGRlY2xhcmF0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGgsIHRvIGNvbmZpcm0gdGhlIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwYXJzZV90YXByaW9fc2NoZWR1bGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTE1OD1zdGF0aWMgaW50IHBhcnNlX3NjaGVkX2xpc3Qoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqbGlzdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTg6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTk5LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE4ODc9c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTgxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTgyOlx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5ODMtXHRpZiAoZXJyIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjAzCgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBUQVBSSU8gU2NoZWR1bGVyIENvZGUqKgoKQWxyaWdodCwgc28gYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYW5kIGB0YXByaW9fY2hhbmdlYCBhcmUgYm90aCBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IHVzdWFsbHkgbWVhbnMgdGhleSYjMzk7cmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgbm90IGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzY2hlZHVsZXIgKmFjdHVhbGx5KiB3b3Jrcywgc28gbm93IEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGUgc2NoZWR1bGVyLiBUaW1lIHRvIGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgYWltIGlzIHRvIGdldCBhIHNlbnNlIG9mIHRoZSBkeW5hbWljIGludGVycGxheTsgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5IHJlc3BvbmQgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzY2hlZHVsaW5nIGNoYW5nZXMsIGFuZCB0cmFmZmljIGRhdGEuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHRlbGwgbWUgYWJvdXQgdGhlIHNjaGVkdWxlciYjMzk7cyBiZWhhdmlvci4gSSBhbnRpY2lwYXRlIHRoZXNlIGFyZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IFRBUFJJTyBzY2hlZHVsZXMgdHJhZmZpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihbYS16MC05X10mIzQzOyApJiM0MztbYS16MC05X10mIzQzO1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMTQ9c3RydWN0IF9fdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCB7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTpzdGF0aWMgdm9pZCB0YXByaW9fY2FsY3VsYXRlX2dhdGVfZHVyYXRpb25zKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyMC1cdFx0XHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjQ6c3RhdGljIGJvb2wgdGFwcmlvX2VudHJ5X2FsbG93c190eChrdGltZV90IHNrYl9lbmRfdGltZSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1LVx0XHRcdFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgaW50IHRjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzA6c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzEte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzg6c3RhdGljIGt0aW1lX3QgdGFwcmlvX21vbm9fdG9fYW55KGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGt0aW1lX3QgbW9ubylcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE5MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTkxOnN0YXRpYyBrdGltZV90IHRhcHJpb19nZXRfdGltZShjb25zdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTIte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk1LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTY6c3RhdGljIHZvaWQgdGFwcmlvX2ZyZWVfc2NoZWRfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTcte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDk6c3RhdGljIHZvaWQgc3dpdGNoX3NjaGVkdWxlcyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICoqYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjMtLyogR2V0IGhvdyBtdWNoIHRpbWUgaGFzIGJlZW4gYWxyZWFkeSBlbGFwc2VkIGluIHRoZSBjdXJyZW50IGN5Y2xlLiAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjQ6c3RhdGljIHMzMiBnZXRfY3ljbGVfdGltZV9lbGFwc2VkKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IHRpbWUpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyNS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzQtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTpzdGF0aWMga3RpbWVfdCBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNi1cdFx0XHRcdCAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NzpzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjk6c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI3MC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yODEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI4MjpzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI4My17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yOTAtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI5MTpzdGF0aWMgdm9pZCB0YXByaW9fdXBkYXRlX3F1ZXVlX21heF9zZHUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkyLVx0XHRcdFx0XHRzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTM0Mz1zdGF0aWMgc3RydWN0IHNjaGVkX2VudHJ5ICpmaW5kX2VudHJ5X3RvX3RyYW5zbWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTktXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQyMDpzdGF0aWMgYm9vbCBpc192YWxpZF9pbnRlcnZhbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDIxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQzOC0vKiBUaGlzIHJldHVybnMgdGhlIHRzdGFtcCB2YWx1ZSBzZXQgYnkgVENQIGluIHRlcm1zIG9mIHRoZSBzZXQgY2xvY2suICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjQzOTpzdGF0aWMga3RpbWVfdCBnZXRfdGNwX3RzdGFtcChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNDg3LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0ODg6c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQ4OS17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NTktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1NjA6c3RhdGljIGJvb2wgdGFwcmlvX3NrYl9leGNlZWRzX3F1ZXVlX21heF9zZHUoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU2MS1cdFx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo1ODE6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZV9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTU4Mi1cdFx0XHQgICAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLCBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02MDEtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjYwMjpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlX3NlZ21lbnRlZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVx0XHRcdFx0ICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY0NzpzdGF0aWMgaW50IHRhcHJpb19lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDgtXHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqKnRvX2ZyZWUpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz02NzY9c3RhdGljIHN0cnVjdCBza19idWZmICp0YXByaW9fcGVlayhzdHJ1Y3QgUWRpc2MgKnNjaClcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4MS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjgyOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfYnVkZ2V0cyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02ODMtXHRcdFx0ICAgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzAyLS8qIFdoZW4gYW4gc2tiIGlzIHNlbnQsIGl0IGNvbnN1bWVzIGZyb20gdGhlIGJ1ZGdldCBvZiBhbGwgdHJhZmZpYyBjbGFzc2VzICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjcwMzpzdGF0aWMgaW50IHRhcHJpb191cGRhdGVfYnVkZ2V0cyhzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBzaXplX3QgbGVuLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDQtXHRcdFx0XHQgaW50IHRjX2NvbnN1bWVkLCBpbnQgbnVtX3RjKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzI2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03ODItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNzg0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg1Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4OTI6c3RhdGljIGJvb2wgc2hvdWxkX3Jlc3RhcnRfY3ljbGUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtODkzLVx0XHRcdFx0IGNvbnN0IHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnkpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05MDMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjkwNDpzdGF0aWMgYm9vbCBzaG91bGRfY2hhbmdlX3NjaGVkdWxlcyhjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTA1LVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDMtICovXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk0NDpzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3Blcixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTQ1LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKipuZXh0LCBrdGltZV90ICpuZXh0X3N0YXJ0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTgyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5ODM6c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgdGFwcmlvX3BvbGljeVtUQ0FfVEFQUklPX0FUVFJfTUFYICYjNDM7IDFdID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEwNi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTEwNzpzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTA4LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTEzOTpzdGF0aWMgaW50IHBhcnNlX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKm4sXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNDAtXHRcdFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTU3LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU4OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTU5LVx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExOTg6c3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTk5LVx0XHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyNDgtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNDk6c3RhdGljIGludCB0YXByaW9fcGFyc2VfbXFwcmlvX29wdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMjUwLVx0XHRcdFx0ICAgc3RydWN0IHRjX21xcHJpb19xb3B0ICpxb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3Ni1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTI3NzpzdGF0aWMgaW50IHRhcHJpb19nZXRfc3RhcnRfdGltZShzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3OC1cdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMTAtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzMTE6c3RhdGljIHZvaWQgc2V0dXBfZmlyc3RfZW5kX3RpbWUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTMxMi1cdFx0XHRcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM0MC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM0MTpzdGF0aWMgdm9pZCB0YXByaW9fc3RhcnRfc2NoZWQoc3RydWN0IFFkaXNjICpzY2gsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNDItXHRcdFx0ICAgICAgIGt0aW1lX3Qgc3RhcnQsIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldylcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzNjM6c3RhdGljIHZvaWQgdGFwcmlvX3NldF9waWNvc19wZXJfYnl0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzY0LVx0XHRcdFx0ICAgICAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzOTc6c3RhdGljIGludCB0YXByaW9fZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzOTgtXHRcdFx0ICAgICAgIHZvaWQgKnB0cilcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzMtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0MzQ6c3RhdGljIHZvaWQgc2V0dXBfdHh0aW1lKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzUtXHRcdFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLCBrdGltZV90IGJhc2UpXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0NzItXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzM6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0ODU9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZnJlZSk7XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDk4LSAqL1xubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDk5OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUwOTpzdGF0aWMgdTMyIHRjX21hcF90b19xdWV1ZV9tYXNrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiB0Y19tYXNrKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTEwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MjctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1Mjg6c3RhdGljIHZvaWQgdGFwcmlvX3NjaGVkX3RvX29mZmxvYWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUyOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1NTc6c3RhdGljIHZvaWQgdGFwcmlvX2RldGVjdF9icm9rZW5fbXFwcmlvKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTgte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU3My1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU3NDpzdGF0aWMgdm9pZCB0YXByaW9fY2xlYW51cF9icm9rZW5fbXFwcmlvKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzUte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4NC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4NTpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTg2LVx0XHRcdFx0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNjUxOnN0YXRpYyBpbnQgdGFwcmlvX2Rpc2FibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUyLVx0XHRcdFx0ICBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5MS0gKi9cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY5MjpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV9jbG9ja2lkKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE2OTMtXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzY5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzcwOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzcxLVx0XHRcdFx0IHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4MTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4MTc6c3RhdGljIGludCB0YXByaW9fcGFyc2VfdGNfZW50cmllcyhzdHJ1Y3QgUWRpc2MgKnNjaCxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTgxOC1cdFx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4Njc6c3RhdGljIGludCB0YXByaW9fbXFwcmlvX2NtcChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODY4LVx0XHRcdCAgICAgY29uc3Qgc3RydWN0IHRjX21xcHJpb19xb3B0ICptcXByaW8pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODg3OnN0YXRpYyBpbnQgdGFwcmlvX2NoYW5nZShzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVx0XHRcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDgxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDgyOnN0YXRpYyB2b2lkIHRhcHJpb19yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4My17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk2LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDk3OnN0YXRpYyB2b2lkIHRhcHJpb19kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMzUtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIxMzY6c3RhdGljIGludCB0YXByaW9faW5pdChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqb3B0LFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM3LVx0XHQgICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIwMC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjIwMTpzdGF0aWMgdm9pZCB0YXByaW9fYXR0YWNoKHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjAyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTIyMzc9c3RhdGljIHN0cnVjdCBuZXRkZXZfcXVldWUgKnRhcHJpb19xdWV1ZV9nZXQoc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjQ4LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjQ5OnN0YXRpYyBpbnQgdGFwcmlvX2dyYWZ0KHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjUwLVx0XHRcdHN0cnVjdCBRZGlzYyAqbmV3LCBzdHJ1Y3QgUWRpc2MgKipvbGQsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjkxLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjkyOnN0YXRpYyBpbnQgZHVtcF9lbnRyeShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjkzLVx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5KVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjMyMS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjMyMjpzdGF0aWMgaW50IGR1bXBfc2NoZWR1bGUoc3RydWN0IHNrX2J1ZmYgKm1zZyxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjMyMy1cdFx0XHQgY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqcm9vdClcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTctXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTg6c3RhdGljIGludCB0YXByaW9fZHVtcF90Y19lbnRyaWVzKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTktXHRcdFx0XHQgIGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzkwLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzkxOnN0YXRpYyBpbnQgdGFwcmlvX3B1dF9zdGF0KHN0cnVjdCBza19idWZmICpza2IsIHU2NCB2YWwsIHUxNiBhdHRydHlwZSlcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjM5Mi17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzk5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNDAwOnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfeHN0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDAxLVx0XHRcdCAgICAgIHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkLFxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjQ0ODpzdGF0aWMgaW50IHRhcHJpb19kdW1wX3N0YXRzKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDQ5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NTYtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI0NTc6c3RhdGljIGludCB0YXByaW9fZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ1OC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTI3PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnRhcHJpb19sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjUzOC1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjUzOTpzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXByaW9fZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDAte1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU0ODpzdGF0aWMgaW50IHRhcHJpb19kdW1wX2NsYXNzKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsLFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQ5LVx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHRjbXNnICp0Y20pXG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTU5LVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNTYwOnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NjEtXHRcdFx0XHQgICBzdHJ1Y3QgZ25ldF9kdW1wICpkKVxuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU4MDpzdGF0aWMgdm9pZCB0YXByaW9fd2FsayhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHFkaXNjX3dhbGtlciAqYXJnKVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2Mjk9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB0YXByaW9fZGV2aWNlX25vdGlmaWVyID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzMi1cbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjYzMzpzdGF0aWMgaW50IF9faW5pdCB0YXByaW9fbW9kdWxlX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzNC17XG4tLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjQyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjQzOnN0YXRpYyB2b2lkIF9fZXhpdCB0YXByaW9fbW9kdWxlX2V4aXQodm9pZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNDIxCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFRhcHJpbyYjMzk7cyBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHRhcHJpb19vZmZsb2FkX2ZyZWVgLiBUaGF0JiMzOTtzIG5vbi1zdGF0aWMsIHNvIGl0JiMzOTtzIHByb2JhYmx5IGltcG9ydGFudCBmb3IgaGFuZGxpbmcgb2ZmbG9hZHMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHdoZXJlIGFyZSB0aGUgUWRpc2Mgb3BlcmF0aW9ucyBkZWZpbmVkPyBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhleSYjMzk7cmUgbGlrZWx5IHJlZ2lzdGVyZWQgd2l0aGluIGB0YXByaW9fbW9kdWxlX2luaXRgLiBZZXMsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYnkgZGlnZ2luZyBpbnRvIGB0YXByaW9fcWRpc2Nfb3BzYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBzbyBJIGNhbiBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgdG8gdGhvc2Ugb2ZmbG9hZGVkIHJlc291cmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF90YXByaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTI2MDE9c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MTE6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjEyLVx0LmNsX29wc1x0XHQ9IFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzg4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IGluaXRpYWwgdGhvdWdodHMsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZW06CgoqKkluaXRpYWwgRGl2ZSBpbnRvIFRBUFJJTyBRZGlzYyBhbmQgQ2xhc3MgT3BlcmF0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBiZWFyaW5ncyBvbiB0aGVzZSBUQVBSSU8gY29tcG9uZW50cy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHNjaGVkdWxpbmcgYW5kIGNsYXNzaWZpY2F0aW9uIGFyZSBzdHJ1Y3R1cmVkIHdpdGhpbiB0aGlzIG1vZHVsZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AgYW5kIGB0YXByaW9fY2xhc3Nfb3BzYC4gSSBrbm93IHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgUWRpc2MgKHF1ZXVlaW5nIGRpc2NpcGxpbmUpIG1hbmFnZW1lbnQgYW5kIGNsYXNzLWJhc2VkIHRyYWZmaWMgaGFuZGxpbmcsIHJlc3BlY3RpdmVseS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhleSBpbnRlcmZhY2Ugd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JraW5nIHN0YWNrLCBhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBoYW5kbGUgdGhlIHNwZWNpZmljIG51YW5jZXMgb2YgdGhlIFRBUFJJTyBhbGdvcml0aG0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjYwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyNjAwOlx0XG4yNjAxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBRZGlzY19jbGFzc19vcHMgdGFwcmlvX2NsYXNzX29wcyA9IHtcbjI2MDI6XHRcdC5ncmFmdFx0XHQ9IHRhcHJpb19ncmFmdCxcbjI2MDM6XHRcdC5sZWFmXHRcdD0gdGFwcmlvX2xlYWYsXG4yNjA0Olx0XHQuZmluZFx0XHQ9IHRhcHJpb19maW5kLFxuMjYwNTpcdFx0LndhbGtcdFx0PSB0YXByaW9fd2FsayxcbjI2MDY6XHRcdC5kdW1wXHRcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXG4yNjA3Olx0XHQuZHVtcF9zdGF0c1x0PSB0YXByaW9fZHVtcF9jbGFzc19zdGF0cyxcbjI2MDg6XHRcdC5zZWxlY3RfcXVldWVcdD0gdGFwcmlvX3NlbGVjdF9xdWV1ZSxcbjI2MDk6XHR9O1xuMjYxMDpcdFxuMjYxMTpcdHN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcbjI2MTI6XHRcdC5jbF9vcHNcdFx0PSBcdTAwMjZ0YXByaW9fY2xhc3Nfb3BzLFxuMjYxMzpcdFx0LmlkXHRcdD0gXCYjMzQ7dGFwcmlvXCYjMzQ7LFxuMjYxNDpcdFx0LnByaXZfc2l6ZVx0PSBzaXplb2Yoc3RydWN0IHRhcHJpb19zY2hlZCksXG4yNjE1Olx0XHQuaW5pdFx0XHQ9IHRhcHJpb19pbml0LFxuMjYxNjpcdFx0LmNoYW5nZVx0XHQ9IHRhcHJpb19jaGFuZ2UsXG4yNjE3Olx0XHQuZGVzdHJveVx0PSB0YXByaW9fZGVzdHJveSxcbjI2MTg6XHRcdC5yZXNldFx0XHQ9IHRhcHJpb19yZXNldCxcbjI2MTk6XHRcdC5hdHRhY2hcdFx0PSB0YXByaW9fYXR0YWNoLFxuMjYyMDpcdFx0LnBlZWtcdFx0PSB0YXByaW9fcGVlayxcbjI2MjE6XHRcdC5kZXF1ZXVlXHQ9IHRhcHJpb19kZXF1ZXVlLFxuMjYyMjpcdFx0LmVucXVldWVcdD0gdGFwcmlvX2VucXVldWUsXG4yNjIzOlx0XHQuZHVtcFx0XHQ9IHRhcHJpb19kdW1wLFxuMjYyNDpcdFx0LmR1bXBfc3RhdHNcdD0gdGFwcmlvX2R1bXBfc3RhdHMsXG4yNjI1Olx0XHQub3duZXJcdFx0PSBUSElTX01PRFVMRSxcbjI2MjY6XHR9O1xuMjYyNzpcdE1PRFVMRV9BTElBU19ORVRfU0NIKFwmIzM0O3RhcHJpb1wmIzM0Oyk7XG4yNjI4Olx0XG4yNjI5Olx0c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB0YXByaW9fZGV2aWNlX25vdGlmaWVyID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUyNAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCBvbiB0aGUgYHRhcHJpb2AgU2NoZWR1bGVyKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyBhIGNyaXRpY2FsIGhydGltZXIgY2FsbGJhY2sg4oCTIHRoYXQmIzM5O3MgYSBoaWdoLXByaW9yaXR5IGFyZWEgdG8gdW5kZXJzdGFuZC4gSXQmIzM5O3MgYWxzbyBtb2RpZnlpbmcgYGZpbGxfc2NoZWRfZW50cnlgIGFuZCBgcGFyc2VfdGFwcmlvX3NjaGVkdWxlYCwgYW5kIHRob3NlIGFyZSBjYWxsZWQgZnJvbSBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAuIFJpZ2h0LCBzbyBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciBmb2N1c2VkIGFuYWx5c2lzLgoKSG1tLCB3YWl0IGEgc2Vjb25kLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHN0YXRpYy4gVGhhdCYjMzk7cyBhIGJpdCBvZiBhIHdyaW5rbGUuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gVGhlIGNvbXBpbGVyIHdpbGwgaW5saW5lIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLCBzbyB0aGV5IGRvbiYjMzk7dCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEJ1dOKApiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHJlZ2lzdGVyZWQgaW4gYHRhcHJpb19xZGlzY19vcHNgLiBUaGVpciBhZGRyZXNzZXMgYXJlIGJlaW5nIHRha2VuLCB3aGljaCBtZWFucyB0aGV5JiMzOTtyZSAqbm90KiBpbmxpbmVkLiBUaGV5IGhhdmUgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuCgpTdGlsbCwgaWYgd2Ugd2FudCBub24tc3RhdGljIGZ1bmN0aW9ucyBhcyBhIHByZWZlcmVuY2UsIHdlIG1pZ2h0IGJlIG91dCBvZiBsdWNrIHdpdGhpbiBgc2NoX3RhcHJpby5jYCBleGNlcHQgZm9yIGB0YXByaW9fb2ZmbG9hZF9mcmVlYCBhbmQgYHRhcHJpb19vZmZsb2FkX2dldGAuCgpIb2xkIG9uLiBMZXQmIzM5O3MgcmVjYXAgYWJvdXQgYHRhcHJpb19jaGFuZ2VgLiBJdCYjMzk7cyBzdGF0aWMsIGJ1dCBpdHMgYWRkcmVzcyAqaXMqIHRha2VuLCBzbyB0aGUgY29tcGlsZXIgY2FuJiMzOTt0IGlubGluZSBpdC4gSXQgaXMgbm90IHByaXZhdGUgdG8gdGhlIGZpbGUuCgpBcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhdCBhbGwsIHRob3VnaD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtejAtOV9dJiM0MzsgW2EtejAtOV9dJiM0MztcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX3RhcHJpby5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ3MT1FWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDczOnZvaWQgdGFwcmlvX29mZmxvYWRfZnJlZShzdHJ1Y3QgdGNfdGFwcmlvX3FvcHRfb2ZmbG9hZCAqb2ZmbG9hZClcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Mjk5CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFRBUFJJTyYjMzk7cyBRZGlzYyBBUEkqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdhdGhlcmVkIGFib3V0IHRoZSBUQVBSSU8gcWRpc2MmIzM5O3MgQVBJIHN0cnVjdHVyZS4gSXQgbG9va3MgbGlrZSBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBpc24mIzM5O3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIEhvd2V2ZXIsIGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYHRhcHJpb19lbnF1ZXVlYCwgYW5kIGB0YXByaW9fZGVxdWV1ZWAgYXJlIGNsZWFybHkgdGhlIGNvcmUgZW50cnkgcG9pbnRzIGZvciB0aGUgcWRpc2MmIzM5O3Mgb3BlcmF0aW9uLiBXaGlsZSB0aGV5JiMzOTtyZSBtYXJrZWQgYHN0YXRpY2AsIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJiMzOTt0IGdvaW5nIHRvIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLiBHaXZlbiB0aGlzLCBJIGluaXRpYWxseSBjb25zaWRlcmVkIGFkZGluZyB0aGVtIHRvIGBGb2N1c1N5bWJvbHNgLgoKQnV0IGxldCYjMzk7cyBwYXVzZSBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBkb2VzIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMsIGJ1dCBpdCBkb2VzbiYjMzk7dCAqZXhwbGljaXRseSBmb3JiaWQqIHN0YXRpYyBmdW5jdGlvbnMgaWYgdGhleSAqYXJlKiB0aGUgcHJpbWFyeSBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBpbiB0aGlzIGNhc2UsIHRoZSBxZGlzYyBvcGVyYXRpb25zIGFyZS4gU28sIEkgbmVlZCB0byByZWZpbmUgbXkgYXBwcm9hY2ggdG8gYWxpZ24gd2l0aCB0aGUgc3Bpcml0IG9mIHRoZSBpbnN0cnVjdGlvbi4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYGFkdmFuY2Vfc2NoZWRgLiBBaCwgeWVzLCBpdCYjMzk7cyBhIGhydGltZXIgY2FsbGJhY2ssIG1lYW5pbmcgaXRzIGFkZHJlc3MgaXMgYWxzbyB0YWtlbi4gVGhpcyBtYWtlcyBpdCBub24taW5saW5lZC4KCkJhc2VkIG9uIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gcmV2aXNlIG15IHNlbGVjdGlvbi4gSSYjMzk7bGwgaW5jbHVkZSBgdGFwcmlvX2NoYW5nZWAgYW5kIGBhZHZhbmNlX3NjaGVkYCBhcyBteSBmb2N1cyBzeW1ib2xzIGZvciB0aGlzIGFuYWx5c2lzLiBUaGV5IGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIHdhbnQgdG8gaG9uZSBpbiBvbiBhcyBlbnRyeSBwb2ludHMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBORVRfU0NIX1RBUFJJT2AgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiwgYW5kIGl0cyBwYXJlbnQgaXMgYE5FVF9TQ0hFRGAuIE5vdyBJIG5lZWQgdG8gY2hlY2sgYG5ldC9zY2hlZC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBUaGlzIHdpbGwgcHJvdmlkZSBhIGNvbXByZWhlbnNpdmUgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2NoZWQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTcwOlx0XHQgIENvbW1vbiBsaWJyYXJ5IGZvciBtYW5pcHVsYXRpbmcgbXFwcmlvIHF1ZXVlIGNvbmZpZ3VyYXRpb25zLlxuIDE3MTpcdFxuIDE3MjpcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xuIDE3MzpcdFx0dHJpc3RhdGUgXCYjMzQ7VGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcJiMzNDtcbiAxNzQ6XHRcdHNlbGVjdCBORVRfU0NIX01RUFJJT19MSUJcbiAxNzU6XHRcdGhlbHBcbiAxNzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIFRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgcGFja2V0XG4gMTc3Olx0XHQgIHNjaGVkdWxpbmcgYWxnb3JpdGhtLlxuIDE3ODpcdFxuIDE3OTpcdFx0ICBTZWUgdGhlIHRvcCBvZiBcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cbiAxODA6XHRcbiAxODE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE4MjpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgc2NoX3RhcHJpby5cbiAxODM6XHRcbiAxODQ6XHRjb25maWcgTkVUX1NDSF9HUkVEXG4gMTg1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXCYjMzQ7XG4gMTg2Olx0XHRoZWxwXG4gMTg3Olx0XHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb25cbiAxODg6XHRcdCAgKEdSRUQpIHBhY2tldCBzY2hlZHVsaW5nIGFsZ29yaXRobSBmb3Igc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlc1xuIDE4OTpcdFx0ICAoc2VlIHRoZSB0b3Agb2YgXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjMyNAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQVBSSU8gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggcmVsYXRlZCB0byBgTkVUX1NDSF9UQVBSSU9gIGFuZCBgTkVUX1NDSEVEYC4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIGl0IGFnYWluLCBzeXN0ZW1hdGljYWxseS4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYCBhbmQgdGhlIGB0YXByaW9fbWluX2ludGVydmFsKClgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gYWx0ZXJzIGBhZHZhbmNlX3NjaGVkYCB0byBpbmNvcnBvcmF0ZSBgdGFwcmlvX2NhdGNoX3VwKClgLiBJIHNlZSB0aGF0IGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHV0aWxpemUgYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgYXMgd2VsbC4KCk5vdywgYWxsIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMgYXJlIHRyaWdnZXJlZCB3aGVuIHRoZSB0YXByaW8gcWRpc2MgaXMgY29uZmlndXJlZCBhbmQgYWN0aXZlbHkgcnVubmluZy4gQ3J1Y2lhbGx5LCB0aGlzIHFkaXNjIGlzLCBvciBhdCBsZWFzdCAqY2FuIGJlKiwgZW50aXJlbHkgc29mdHdhcmUtZW11bGF0ZWQuIFRoaXMgbWVhbnMgaXQmIzM5O3MgZGVmaW5pdGVseSBnb2luZyB0byBiZSByZWxldmFudCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHdoaWNoIGlzIGltcG9ydGFudCBmcm9tIGEgZGVwbG95bWVudCBwZXJzcGVjdGl2ZS4KClRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBiZWluZyBhZGRyZXNzZWQgaXMgYSBDUFUgc3Rvcm0gcHJvYmxlbSB0aGF0IG9jY3VycyB3aGVuIHRoZSBzb2Z0d2FyZSBpbnRlcnZhbCBpcyBzZXQgdG8gc29tZXRoaW5nIHRvbyBzbWFsbC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBtZWFuaW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgc2VyaW91cyBmdXp6aW5nLgoKTXkgZm9jdXMgc2hvdWxkIGJlIG9uIHRoZSBmb2xsb3dpbmcga2V5IHN5bWJvbHM6IGB0YXByaW9fY2hhbmdlYCwgYHRhcHJpb19pbml0YCwgYW5kIGBhZHZhbmNlX3NjaGVkYC4gSSBzaG91bGQgYWxzbyBkb3VibGUgY2hlY2sgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIGlmIGBORVRfU0NIX1RBUFJJT2AgaGluZ2VzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBsaWJyYXJpZXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWc9MzM0PWNvbmZpZyBORVRfU0NIX0ZRX1BJRVxubmV0L3NjaGVkL0tjb25maWc6MzM1Olx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxubmV0L3NjaGVkL0tjb25maWctMzM2LVx0dHJpc3RhdGUgXCYjMzQ7RmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVwmIzM0O1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXG5uZXQvc2NoZWQvS2NvbmZpZy0zNDgtXHR0cmlzdGF0ZSBcJiMzNDtJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzozNDk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy0zNTAtXHRzZWxlY3QgTkVUX1hHUkVTU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQwNj1jb25maWcgTkVUX1NDSF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTQwNy1cdGJvb2wgXCYjMzQ7QlBGLWJhc2VkIFFkaXNjXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMIFx1MDAyNlx1MDAyNiBCUEZfSklUIFx1MDAyNlx1MDAyNiBERUJVR19JTkZPX0JURlxubmV0L3NjaGVkL0tjb25maWctNDA5LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcbm5ldC9zY2hlZC9LY29uZmlnLTQ5NS1cdHRyaXN0YXRlIFwmIzM0O1JvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NDk2Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy00OTctXHRzZWxlY3QgSVBfUk9VVEVfQ0xBU1NJRFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTUyNj1jb25maWcgQ0xTX1UzMl9QRVJGXG5uZXQvc2NoZWQvS2NvbmZpZy01MjctXHRib29sIFwmIzM0O1BlcmZvcm1hbmNlIGNvdW50ZXJzIHN1cHBvcnRcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcdGRlcGVuZHMgb24gTkVUX0NMU19VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTUyOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz01MzM9Y29uZmlnIENMU19VMzJfTUFSS1xubmV0L3NjaGVkL0tjb25maWctNTM0LVx0Ym9vbCBcJiMzNDtOZXRmaWx0ZXIgbWFya3Mgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NTM1Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX1UzMlxubmV0L3NjaGVkL0tjb25maWctNTM2LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZy01NTMtXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXG5uZXQvc2NoZWQvS2NvbmZpZzo1NTQ6XHRkZXBlbmRzIG9uIENHUk9VUFNcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcbm5ldC9zY2hlZC9LY29uZmlnLTYwNi1cdGludCBcJiMzNDtTdGFjayBzaXplXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2MDc6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcbm5ldC9zY2hlZC9LY29uZmlnLTYwOC1cdGRlZmF1bHQgXCYjMzQ7MzJcJiMzNDtcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXG5uZXQvc2NoZWQvS2NvbmZpZy02MTYtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjE3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02MTgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjI1PWNvbmZpZyBORVRfRU1BVENIX05CWVRFXG5uZXQvc2NoZWQvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZSBcJiMzNDtNdWx0aSBieXRlIGNvbXBhcmlzb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjI4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTYzNT1jb25maWcgTkVUX0VNQVRDSF9VMzJcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cdHRyaXN0YXRlIFwmIzM0O1UzMiBrZXlcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjYzNzpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjM4LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXG5uZXQvc2NoZWQvS2NvbmZpZy02NDYtXHR0cmlzdGF0ZSBcJiMzNDtNZXRhZGF0YVwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NjQ3Olx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXG5uZXQvc2NoZWQvS2NvbmZpZy02NDgtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NjU2PWNvbmZpZyBORVRfRU1BVENIX1RFWFRcbm5ldC9zY2hlZC9LY29uZmlnLTY1Ny1cdHRyaXN0YXRlIFwmIzM0O1RleHRzZWFyY2hcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSFxubmV0L3NjaGVkL0tjb25maWctNjU5LVx0c2VsZWN0IFRFWFRTRUFSQ0hcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02NzA9Y29uZmlnIE5FVF9FTUFUQ0hfQ0FOSURcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cdHRyaXN0YXRlIFwmIzM0O0NBTiBJZGVudGlmaWVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2NzI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IChDQU49eSB8fCBDQU49bSlcbm5ldC9zY2hlZC9LY29uZmlnLTY3My1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz02ODA9Y29uZmlnIE5FVF9FTUFUQ0hfSVBTRVRcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cdHRyaXN0YXRlIFwmIzM0O0lQc2V0XCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo2ODI6XHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0ggXHUwMDI2XHUwMDI2IElQX1NFVFxubmV0L3NjaGVkL0tjb25maWctNjgzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTY5MD1jb25maWcgTkVUX0VNQVRDSF9JUFRcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cdHRyaXN0YXRlIFwmIzM0O0lQdGFibGVzIE1hdGNoZXNcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjY5MjpcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcdTAwMjZcdTAwMjYgTkVURklMVEVSIFx1MDAyNlx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xubmV0L3NjaGVkL0tjb25maWctNjkzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTcxNT1jb25maWcgTkVUX0FDVF9QT0xJQ0Vcbm5ldC9zY2hlZC9LY29uZmlnLTcxNi1cdHRyaXN0YXRlIFwmIzM0O1RyYWZmaWMgUG9saWNpbmdcJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTcxOC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03MjY9Y29uZmlnIE5FVF9BQ1RfR0FDVFxubmV0L3NjaGVkL0tjb25maWctNzI3LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBhY3Rpb25zXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3Mjg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0Jcbm5ldC9zY2hlZC9LY29uZmlnLTczNy1cdGJvb2wgXCYjMzQ7UHJvYmFiaWxpdHkgc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzM4Olx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTczOS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NDI9Y29uZmlnIE5FVF9BQ1RfTUlSUkVEXG5uZXQvc2NoZWQvS2NvbmZpZy03NDMtXHR0cmlzdGF0ZSBcJiMzNDtSZWRpcmVjdGluZyBhbmQgTWlycm9yaW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NDUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9NzUyPWNvbmZpZyBORVRfQUNUX1NBTVBMRVxubmV0L3NjaGVkL0tjb25maWctNzUzLVx0dHJpc3RhdGUgXCYjMzQ7VHJhZmZpYyBTYW1wbGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6NzU0Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzU1LVx0c2VsZWN0IFBTQU1QTEVcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjUtXHR0cmlzdGF0ZSBcJiMzNDtTdGF0ZWxlc3MgTkFUXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3NjY6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03NjctXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzc0PWNvbmZpZyBORVRfQUNUX1BFRElUXG5uZXQvc2NoZWQvS2NvbmZpZy03NzUtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRWRpdGluZ1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6Nzc2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctNzc3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTc4Mz1jb25maWcgTkVUX0FDVF9TSU1QXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXHR0cmlzdGF0ZSBcJiMzNDtTaW1wbGUgRXhhbXBsZSAoRGVidWcpXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3ODU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcbm5ldC9zY2hlZC9LY29uZmlnLTc5OC1cdHRyaXN0YXRlIFwmIzM0O1NLQiBFZGl0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo3OTk6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04MDAtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODA4PWNvbmZpZyBORVRfQUNUX0NTVU1cbm5ldC9zY2hlZC9LY29uZmlnLTgwOS1cdHRyaXN0YXRlIFwmIzM0O0NoZWNrc3VtIFVwZGF0aW5nXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBJTkVUXG5uZXQvc2NoZWQvS2NvbmZpZy04MTEtXHRzZWxlY3QgTkVUX0NSQzMyQ1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgxOT1jb25maWcgTkVUX0FDVF9NUExTXG5uZXQvc2NoZWQvS2NvbmZpZy04MjAtXHR0cmlzdGF0ZSBcJiMzNDtNUExTIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODIxOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODIyLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTgzMD1jb25maWcgTkVUX0FDVF9WTEFOXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXHR0cmlzdGF0ZSBcJiMzNDtWbGFuIG1hbmlwdWxhdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODMyOlx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctODMzLVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcbm5ldC9zY2hlZC9LY29uZmlnLTg0Mi1cdHRyaXN0YXRlIFwmIzM0O0JQRiBiYXNlZCBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjg0MzpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTg0NC1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04NTM9Y29uZmlnIE5FVF9BQ1RfQ09OTk1BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg1NC1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgUmV0cmlldmVyXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFx1MDAyNlx1MDAyNiBORVRGSUxURVJcbm5ldC9zY2hlZC9LY29uZmlnOjg1NjpcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xubmV0L3NjaGVkL0tjb25maWctODU3LVx0aGVscFxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTg2NT1jb25maWcgTkVUX0FDVF9DVElORk9cbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cdHRyaXN0YXRlIFwmIzM0O05ldGZpbHRlciBDb25uZWN0aW9uIE1hcmsgQWN0aW9uc1wmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6ODY3Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkVURklMVEVSXG5uZXQvc2NoZWQvS2NvbmZpZzo4Njg6XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXG5uZXQvc2NoZWQvS2NvbmZpZy04ODMtXHR0cmlzdGF0ZSBcJiMzNDtza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4ODQ6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04ODUtXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9ODkzPWNvbmZpZyBORVRfQUNUX0lGRVxubmV0L3NjaGVkL0tjb25maWctODk0LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXItRkUgYWN0aW9uIGJhc2VkIG9uIElFVEYgRm9yQ0VTIEludGVyRkUgTEZCXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy04OTYtXHRzZWxlY3QgTkVUX0lGRVxuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkwNj1jb25maWcgTkVUX0FDVF9UVU5ORUxfS0VZXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXHR0cmlzdGF0ZSBcJiMzNDtJUCB0dW5uZWwgbWV0YWRhdGEgbWFuaXB1bGF0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5MDg6XHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXHRoZWxwXG4tLVxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXG5uZXQvc2NoZWQvS2NvbmZpZy05MTgtXHR0cmlzdGF0ZSBcJiMzNDtjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTE5Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcdTAwMjZcdTAwMjYgTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiAoIU5GX05BVCB8fCBORl9OQVQpIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG5uZXQvc2NoZWQvS2NvbmZpZy05MjAtXHRzZWxlY3QgTkZfQ09OTlRSQUNLX09WU1xuLS1cbm5ldC9zY2hlZC9LY29uZmlnPTkzMD1jb25maWcgTkVUX0FDVF9HQVRFXG5uZXQvc2NoZWQvS2NvbmZpZy05MzEtXHR0cmlzdGF0ZSBcJiMzNDtGcmFtZSBnYXRlIGVudHJ5IGxpc3QgY29udHJvbCB0YyBhY3Rpb25cJiMzNDtcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1Rcbm5ldC9zY2hlZC9LY29uZmlnLTkzMy1cdGhlbHBcbi0tXG5uZXQvc2NoZWQvS2NvbmZpZz05NDI9Y29uZmlnIE5FVF9JRkVfU0tCTUFSS1xubmV0L3NjaGVkL0tjb25maWctOTQzLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgbWFyayBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NDQ6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXG5uZXQvc2NoZWQvS2NvbmZpZz05NDY9Y29uZmlnIE5FVF9JRkVfU0tCUFJJT1xubmV0L3NjaGVkL0tjb25maWctOTQ3LVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgcHJpbyBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NDktXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxubmV0L3NjaGVkL0tjb25maWctOTUxLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXCYjMzQ7XG5uZXQvc2NoZWQvS2NvbmZpZzo5NTI6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXG5uZXQvc2NoZWQvS2NvbmZpZy05NTMtXG5uZXQvc2NoZWQvS2NvbmZpZz05NTQ9Y29uZmlnIE5FVF9UQ19TS0JfRVhUXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXHRib29sIFwmIzM0O1RDIHJlY2lyY3VsYXRpb24gc3VwcG9ydFwmIzM0O1xubmV0L3NjaGVkL0tjb25maWc6OTU2Olx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxubmV0L3NjaGVkL0tjb25maWctOTU3LVx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTM5CgkJCQkJCQlvdXRwdXQ6IDExMAoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVEFQUklPIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gRnJvbSBsb29raW5nIGF0IHRoZSBkZXBlbmRlbmNpZXMsIGl0IGluaXRpYWxseSBzZWVtZWQgbGlrZSBgTkVUX1NDSF9UQVBSSU9gIHdhcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBvbmx5IGRlcGVuZGluZyBvbiBgTkVUX1NDSEVEYCB3aGljaCBpcyB0aGUgYmFzZSBzY2hlZHVsaW5nIGNvbmZpZ3VyYXRpb24uIEJ1dCBob2xkIG9uLCBJIHNlZSB0aGF0IGBORVRfU0NIX1RBUFJJT2AgKmFsc28qIHNlbGVjdHMgYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFRoaXMgbWVhbnMgdGhhdCBpZiBJIHdhbnQgdG8gZW5hYmxlIFRBUFJJTyBzY2hlZHVsaW5nLCBhbGwgSSAqcmVhbGx5KiBuZWVkIGFyZSBgTkVUX1NDSEVEYCBhbmQgYE5FVF9TQ0hfVEFQUklPYCB0aGVtc2VsdmVzLiBObyBuZWVkIHRvIGdvIGh1bnRpbmcgZm9yIGFueXRoaW5nIGVsc2UgaW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2UuCgpBbHJpZ2h0LCBwdXR0aW5nIGl0IGFsbCB0b2dldGhlciwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O3ZlIGdvdDoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlIC0gVGhpcyBpcyBhIGNoYW5nZSB0byBjb3JlIHNjaGVkdWxpbmcgZnVuY3Rpb25hbGl0eSwgc28geWVzLCB3b3J0aCBmdXp6aW5nLgoqICAgKipGb2N1c1N5bWJvbHM6KiogYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgYWR2YW5jZV9zY2hlZGAgLSBUaGVzZSBmdW5jdGlvbnMgYXJlIGtleSwgdGhleSBjbGVhcmx5IHJlbGF0ZSB0byB0aGUgbW9kaWZpZWQgVEFQUklPIGJlaGF2aW9yLgoqICAgKipFbmFibGVDb25maWdzOioqIGBORVRfU0NIRURgLCBgTkVUX1NDSF9UQVBSSU9gIC0gVGhvc2UgYXJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb25zIG5lZWRlZC4KKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCBpcyBtb2RpZnlpbmcgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIHRvIGludHJvZHVjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwsIGFuZCBhZGRzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYywgYW5kIGltcG9ydGFudGx5LCBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC4KCk9rYXksIEkgdGhpbmsgSSYjMzk7dmUgZ290IGEgZ29vZCBoYW5kbGUgb24gdGhhdC4gVGltZSB0byBmZWVkIHRoaXMgaW5mb3JtYXRpb24gaW50byB0aGUgc3lzdGVtIHVzaW5nIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OywKICAgICYjMzQ7TkVUX1NDSF9UQVBSSU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0YXByaW9fY2hhbmdlJiMzNDssCiAgICAmIzM0O3RhcHJpb19pbml0JiMzNDssCiAgICAmIzM0O2FkdmFuY2Vfc2NoZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFRBUFJJTyBxZGlzYyBzY2hlZHVsaW5nIGxvZ2ljIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIHNjaGVkdWxlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIGNvcmUgbmV0d29ya2luZyBzY2hlZHVsaW5nIGxvZ2ljIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDssCiAgICAmIzM0O05FVF9TQ0hfVEFQUklPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGFwcmlvX2NoYW5nZSYjMzQ7LAogICAgJiMzNDt0YXByaW9faW5pdCYjMzQ7LAogICAgJiMzNDthZHZhbmNlX3NjaGVkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDA2OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMDY6NTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jCmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjaGVkL3NjaF90YXByaW8uYwpAQCAtMjU5LDYgJiM0MzsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbikKIAlyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpLCBQU0VDX1BFUl9OU0VDKTsKIH0KIAomIzQzOy8qIFNvZnR3YXJlIHNjaGVkdWxlcyBzZXJ2aWNlIG9uZSBocnRpbWVyIGV4cGlyeSBwZXIgZW50cnk7IGludGVydmFscwomIzQzOyAqIHNob3J0ZXIgdGhhbiB0aGUgZXhwaXJ5IHNlcnZpY2UgY29zdCByZWFybSB0aGUgdGltZXIgd2l0aCBhbiBleHBpcnkKJiM0MzsgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZQomIzQzOyAqIG1lYXN1cmVkIGNvc3Qgb24gZGVidWcgY29uZmlndXJhdGlvbnMuCiYjNDM7ICovCiYjNDM7I2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TCSgxMDAgKiBOU0VDX1BFUl9VU0VDKQomIzQzOwomIzQzO3N0YXRpYyBzNjQgdGFwcmlvX21pbl9pbnRlcnZhbChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKQomIzQzO3sKJiM0MzsJczY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7CiYjNDM7CiYjNDM7CS8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi8KJiM0MzsJaWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLSZndDtmbGFncykgJmFtcDsmYW1wOwomIzQzOwkgICAgIVRYVElNRV9BU1NJU1RfSVNfRU5BQkxFRChxLSZndDtmbGFncykpCiYjNDM7CQltaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCwKJiM0MzsJCQkJICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTsKJiM0MzsKJiM0MzsJcmV0dXJuIG1pbl9pbnRlcnZhbDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGR1cmF0aW9uX3RvX2xlbmd0aChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCB1NjQgZHVyYXRpb24pCiB7CiAJcmV0dXJuIGRpdl91NjQoZHVyYXRpb24gKiBQU0VDX1BFUl9OU0VDLCBhdG9taWM2NF9yZWFkKCZhbXA7cS0mZ3Q7cGljb3NfcGVyX2J5dGUpKTsKQEAgLTkxNSw2ICYjNDM7OTM1LDUxIEBAIHN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLAogCXJldHVybiBmYWxzZTsKIH0KIAomIzQzOy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZAomIzQzOyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lcgomIzQzOyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXAKJiM0MzsgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb24KJiM0MzsgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlciwKJiM0MzsJCQkgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCwKJiM0MzsJCQkgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KQomIzQzO3sKJiM0MzsJaW50IGJ1ZGdldCA9IDIgKiBvcGVyLSZndDtudW1fZW50cmllcyAmIzQzOyAxOwomIzQzOwlzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7CiYjNDM7CWt0aW1lX3Qgc3RhcnQgPSAqbmV4dF9zdGFydDsKJiM0MzsJa3RpbWVfdCBlbmQgPSAqZW5kX3RpbWU7CiYjNDM7CXM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpOwomIzQzOwomIzQzOwlpZiAob3Blci0mZ3Q7Y3ljbGVfdGltZSAmZ3Q7IDAgJmFtcDsmYW1wOyBiZWhpbmQgJmd0Oz0gb3Blci0mZ3Q7Y3ljbGVfdGltZSkgewomIzQzOwkJczY0IGp1bXAgPSBkaXY2NF9zNjQoYmVoaW5kLCBvcGVyLSZndDtjeWNsZV90aW1lKSAqIG9wZXItJmd0O2N5Y2xlX3RpbWU7CiYjNDM7CiYjNDM7CQlzdGFydCA9IGt0aW1lX2FkZF9ucyhzdGFydCwganVtcCk7CiYjNDM7CQllbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTsKJiM0MzsJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLCBqdW1wKTsKJiM0MzsJfQomIzQzOwomIzQzOwl3aGlsZSAoa3RpbWVfYmVmb3JlKGVuZCwgbm93KSAmYW1wOyZhbXA7IC0tYnVkZ2V0KSB7CiYjNDM7CQlpZiAobGlzdF9pc19sYXN0KCZhbXA7ZW50cnktJmd0O2xpc3QsICZhbXA7b3Blci0mZ3Q7ZW50cmllcykgfHwKJiM0MzsJCSAgICBrdGltZV9jb21wYXJlKGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpID09IDApIHsKJiM0MzsJCQllbnRyeSA9IGxpc3RfZmlyc3RfZW50cnkoJmFtcDtvcGVyLSZndDtlbnRyaWVzLAomIzQzOwkJCQkJCSBzdHJ1Y3Qgc2NoZWRfZW50cnksIGxpc3QpOwomIzQzOwkJCW9wZXItJmd0O2N5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lLAomIzQzOwkJCQkJCQkgICAgb3Blci0mZ3Q7Y3ljbGVfdGltZSk7CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXN0YXJ0ID0gZW5kOwomIzQzOwkJZW5kID0ga3RpbWVfYWRkX25zKGVuZCwgZW50cnktJmd0O2ludGVydmFsKTsKJiM0MzsJCWVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci0mZ3Q7Y3ljbGVfZW5kX3RpbWUpOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpuZXh0ID0gZW50cnk7CiYjNDM7CSpuZXh0X3N0YXJ0ID0gc3RhcnQ7CiYjNDM7CSplbmRfdGltZSA9IGVuZDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpCiB7CiAJc3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCwKQEAgLTkyNCw3ICYjNDM7OTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCWludCBudW1fdGMgPSBuZXRkZXZfZ2V0X251bV90YyhkZXYpOwogCXN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksICpuZXh0OwogCXN0cnVjdCBRZGlzYyAqc2NoID0gcS0mZ3Q7cm9vdDsKLQlrdGltZV90IGVuZF90aW1lOwomIzQzOwlrdGltZV90IGVuZF90aW1lLCBuZXh0X3N0YXJ0LCBub3c7CiAJaW50IHRjOwogCiAJc3Bpbl9sb2NrKCZhbXA7cS0mZ3Q7Y3VycmVudF9lbnRyeV9sb2NrKTsKQEAgLTk2MCwxNCAmIzQzOzEwMjUsMTkgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKQogCQluZXh0ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTsKIAl9CiAKLQllbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS0mZ3Q7ZW5kX3RpbWUsIG5leHQtJmd0O2ludGVydmFsKTsKJiM0MzsJbmV4dF9zdGFydCA9IGVudHJ5LSZndDtlbmRfdGltZTsKJiM0MzsJZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC0mZ3Q7aW50ZXJ2YWwpOwogCWVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItJmd0O2N5Y2xlX2VuZF90aW1lKTsKIAomIzQzOwlub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTsKJiM0MzsJaWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpCiYjNDM7CQl0YXByaW9fY2F0Y2hfdXAob3BlciwgJmFtcDtuZXh0LCAmYW1wO25leHRfc3RhcnQsICZhbXA7ZW5kX3RpbWUsIG5vdyk7CiYjNDM7CiAJZm9yICh0YyA9IDA7IHRjICZsdDsgbnVtX3RjOyB0YyYjNDM7JiM0MzspIHsKIAkJaWYgKG5leHQtJmd0O2dhdGVfZHVyYXRpb25bdGNdID09IG9wZXItJmd0O2N5Y2xlX3RpbWUpCiAJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0gS1RJTUVfTUFYOwogCQllbHNlCi0JCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LSZndDtlbmRfdGltZSwKJiM0MzsJCQluZXh0LSZndDtnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKG5leHRfc3RhcnQsCiAJCQkJCQkJCSBuZXh0LSZndDtnYXRlX2R1cmF0aW9uW3RjXSk7CiAJfQogCkBAIC0xMDM4LDcgJiM0MzsxMTA4LDcgQEAgc3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YiwKIAkJCSAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LAogCQkJICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykKIHsKLQlpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTsKJiM0MzsJczY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7CiAJdTMyIGludGVydmFsID0gMDsKIAogCWlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pCkBAIC0xMTY2LDcgJiM0MzsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLAogCQluZXctJmd0O2N5Y2xlX3RpbWUgPSBjeWNsZTsKIAl9CiAKLQlpZiAobmV3LSZndDtjeWNsZV90aW1lICZsdDsgbmV3LSZndDtudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHsKJiM0MzsJaWYgKG5ldy0mZ3Q7Y3ljbGVfdGltZSAmbHQ7IChzNjQpbmV3LSZndDtudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHsKIAkJTkxfU0VUX0VSUl9NU0coZXh0YWNrLCAmIzM0OyYjMzk7Y3ljbGVfdGltZSYjMzk7IGlzIHRvbyBzbWFsbCYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgppbmRleCBjZDE5ZDA1OTI1ZTQwLi4zZmU2NjgzOWY4YWVkIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbgpAQCAtMTU0LDYgJiM0MzsxNTQsMjggQEAKICAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwogICAgICAgICBdCiAgICAgfSwKJiM0MzsgICAgewomIzQzOyAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0O2Y0YjImIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bmFtZSYjMzQ7OiAmIzM0O0FkZCB0YXByaW8gUWRpc2Mgd2l0aCBzb2Z0d2FyZSBpbnRlcnZhbCBiZWxvdyB0aGUgbWluaW11bSYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDtjYXRlZ29yeSYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtxZGlzYyYjMzQ7LAomIzQzOyAgICAgICAgICAgICYjMzQ7dGFwcmlvJiMzNDsKJiM0MzsgICAgICAgIF0sCiYjNDM7ICAgICAgICAmIzM0O3BsdWdpbnMmIzM0OzogewomIzQzOyAgICAgICAgICAgICYjMzQ7cmVxdWlyZXMmIzM0OzogJiMzNDtuc1BsdWdpbiYjMzQ7CiYjNDM7ICAgICAgICB9LAomIzQzOyAgICAgICAgJiMzNDtzZXR1cCYjMzQ7OiBbCiYjNDM7ICAgICAgICAgICAgJiMzNDtlY2hvIFwmIzM0OzEgMSA4XCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL25ld19kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXSwKJiM0MzsgICAgICAgICYjMzQ7Y21kVW5kZXJUZXN0JiMzNDs6ICYjMzQ7JFRDIHFkaXNjIGFkZCBkZXYgJEVUSCByb290IGhhbmRsZSAxOiB0YXByaW8gbnVtX3RjIDIgcXVldWVzIDFAMCAxQDEgc2NoZWQtZW50cnkgUyAwMSA1MDAwMCBzY2hlZC1lbnRyeSBTIDAyIDUwMDAwIGNsb2NraWQgQ0xPQ0tfVEFJJiMzNDssCiYjNDM7ICAgICAgICAmIzM0O2V4cEV4aXRDb2RlJiMzNDs6ICYjMzQ7MiYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDt2ZXJpZnlDbWQmIzM0OzogJiMzNDskVEMgcWRpc2Mgc2hvdyBkZXYgJEVUSCYjMzQ7LAomIzQzOyAgICAgICAgJiMzNDttYXRjaFBhdHRlcm4mIzM0OzogJiMzNDtxZGlzYyB0YXByaW8gMTogcm9vdCByZWZjbnQmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7bWF0Y2hDb3VudCYjMzQ7OiAmIzM0OzAmIzM0OywKJiM0MzsgICAgICAgICYjMzQ7dGVhcmRvd24mIzM0OzogWwomIzQzOyAgICAgICAgICAgICYjMzQ7ZWNobyBcJiMzNDsxXCYjMzQ7ICZndDsgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2UmIzM0OwomIzQzOyAgICAgICAgXQomIzQzOyAgICB9LAogICAgIHsKICAgICAgICAgJiMzNDtpZCYjMzQ7OiAmIzM0OzgzMWYmIzM0OywKICAgICAgICAgJiMzNDtuYW1lJiMzNDs6ICYjMzQ7QWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lJiMzNDssCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTg2CgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDcwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSB0YXByaW8gUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgbmV0L3NjaGVkL3NjaF90YXByaW8uY2AgaW4gdGhlIGtlcm5lbC4gTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBzb2Z0d2FyZSBzY2hlZHVsaW5nLCBzcGVjaWZpY2FsbHkgYWltaW5nIHRvIHByZXZlbnQgQ1BVIHN0b3JtcyBmcm9tIGhhcHBlbmluZyBiZWNhdXNlIG9mIGhydGltZXJzIGdldHRpbmcgb3V0IG9mIHN5bmMuIEl0IGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB0YXByaW9fbWluX2ludGVydmFsKClgIGFuZCBgdGFwcmlvX2NhdGNoX3VwKClgLgoKYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCYjMzk7cyBjYWxjdWxhdGluZyBhIG1pbmltdW0gdGltZSBpbnRlcnZhbCBiYXNlZCBvbiBwYWNrZXQgc2l6ZSAoYGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTilgKSBhbmQgYSBoYXJkY29kZWQgbWluaW11bSAoYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgLCB3aGljaCBsb29rcyB0byBiZSAxMDB1cykuIFRoaXMgaXMgbGlrZWx5IGEgZ3VhcmRyYWlsIHRvIHByZXZlbnQgdGhpbmdzIGZyb20gZmlyaW5nIHRvbyByYXBpZGx5LCBwb3RlbnRpYWxseSBzd2FtcGluZyB0aGUgQ1BVIHdpdGggdGltZXIgaW50ZXJydXB0cy4KCmB0YXByaW9fY2F0Y2hfdXAoKWAgaXMgdGhlIG1vcmUgaW50ZXJlc3Rpbmcgb25lLiBJdCBraWNrcyBpbiB3aGVuIHRoZSBzY2hlZHVsZSBpcyBiZWhpbmQgcmVhbC10aW1lLiBJdCYjMzk7cyBza2lwcGluZyBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgaWYgdGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGhhcyBmYWxsZW4gYmVoaW5kIGR1ZSB0byBkZWxheWVkIHRpbWVycyBvciBjbG9jayBzdGVwcywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuIEl0JiMzOTtzIHVwZGF0aW5nIGBuZXh0YCwgYG5leHRfc3RhcnRgLCBhbmQgYGVuZF90aW1lYCB0byBnZXQgdGhpbmdzIGJhY2sgb24gdHJhY2suCgpMb29raW5nIGF0IHRoZSBjb2RlLCB0aGUgY2hhbmdlcyBhcmUgYWxsIGxvZ2ljLWJhc2VkLiBJdCYjMzk7cyB0aW1lciBjYWxjdWxhdGlvbnMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlJiMzOTtzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZSBhbGxvY2F0aW9ucywgYW5kIG1vc3QgaW1wb3J0YW50bHksIG5vIGNoYW5nZXMgdGhhdCBJIGNhbiBzZWUgdGhhdCB3b3VsZCBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgaHVnZSByZWxpZWYuCgpUaGUgcm9vdCBjYXVzZSB0aGlzIHBhdGNoIGlzIGZpeGluZyBpcyBsaWtlbHkgYSBDUFUgc3RhbGwgb3Igc3Rvcm0uIFRoZSBocnRpbWVyIGlzIGVpdGhlciBmaXJpbmcgdG9vIGZyZXF1ZW50bHksIG9yIHRoZSBzY2hlZHVsZXIgaGFzIGZhbGxlbiBiZWhpbmQgYW5kIGlzIHRyeWluZyB0byByZXBsYXkgYSBodWdlIGJhY2tsb2cgb2YgZXZlbnRzLgoKR2l2ZW4gYWxsIHRoaXMsIEkgYW0gY29uZmlkZW50IHRoYXQgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSBpcyAqbm90KiBuZWNlc3NhcnkgaGVyZS4gVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEtBU0FOLCBMT0NLREVQLCBhbmQgdGhlIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMgYXJlIG1vcmUgdGhhbiBzdWZmaWNpZW50IHRvIGNhdGNoIG1lbW9yeSBjb3JydXB0aW9uIG9yIGxvY2tpbmcgaXNzdWVzLgoKSSYjMzk7dmUgdGFrZW4gYSBjbG9zZXIgbG9vayBhdCBgdGFwcmlvX2NhdGNoX3VwKClgIGFnYWluIGp1c3QgdG8gYmUgc3VyZS4gSSBjYW4gdmVyaWZ5IHRoYXQgYWxsIHRoZSBrZXkgZGF0YSwgYG9wZXJgLCBgbmV4dGAsIGBuZXh0X3N0YXJ0YCwgYW5kIGBlbmRfdGltZWAsIGFyZSBwcm9wZXJseSBpbml0aWFsaXplZCwgYW5kIHRoZXJlJiMzOTtzIG5vIHdheSB0aGF0IHRoZSBmdW5jdGlvbiBjb3VsZCBwb3NzaWJseSBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuCgpUaGVyZWZvcmUsIG15IGZpbmFsIGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAwNjo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdGFwcmlvIHNjaGVkdWxlciB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBocnRpbWVycyB0byBwcmV2ZW50IENQVSBzdG9ybXMuIFRoZXNlIGNoYW5nZXMgaW52b2x2ZSBhcml0aG1ldGljIGNhbGN1bGF0aW9ucyBvbiBrdGltZV90IHZhcmlhYmxlcywgbG9vcCBjb25kaXRpb25zLCBhbmQgaW50ZXJ2YWwgYm91bmRzIGNoZWNrcy4gVGhlcmUgYXJlIG5vIG5ldyBkYXRhIHN0cnVjdHVyZXMgYWxsb2NhdGVkLCBubyBjaGFuZ2VzIHRvIGhvdyBkYXRhIGlzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgcmVsYXRlZCB0byBsb2dpYyBlcnJvcnMsIGluZmluaXRlIGxvb3BzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBrZXJuZWwgZGVidWdnaW5nIHRvb2xzLiBBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzowMy41NjYzOTMxMDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODYzNDM3MzIwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIixcbiAgICBcImFkdmFuY2Vfc2NoZWRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjAzLjU2NjM5ODEzN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2NzE4OTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGYyM2ZmMmIwZjZlNDYzZDIzYTE0MDRhZDNhMDZiZTk4MTU2OGU0OVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX3RhcHJpby5jIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbmluZGV4IDI5OTIzNGE1ZjBmZTYuLjkxYTdmN2YxNzQ2MmIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xcbisrKyBiL25ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXG5AQCAtMjU5LDYgKzI1OSwyNiBAQCBzdGF0aWMgaW50IGxlbmd0aF90b19kdXJhdGlvbihzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBpbnQgbGVuKVxcbiBcXHRyZXR1cm4gZGl2X3U2NChsZW4gKiBhdG9taWM2NF9yZWFkKFxcdTAwMjZxLVxcdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xcbiB9XFxuIFxcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcXG4rICogc2hvcnRlciB0aGFuIHRoZSBleHBpcnkgc2VydmljZSBjb3N0IHJlYXJtIHRoZSB0aW1lciB3aXRoIGFuIGV4cGlyeVxcbisgKiBhbHJlYWR5IGluIHRoZSBwYXN0IGFuZCBzdG9ybSB0aGUgQ1BVLiAxMDB1cyBsZWF2ZXMgbWFyZ2luIGFib3ZlIHRoZVxcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxcbisgKi9cXG4rI2RlZmluZSBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TXFx0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXFxuK1xcbitzdGF0aWMgczY0IHRhcHJpb19taW5faW50ZXJ2YWwoc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG4re1xcbitcXHRzNjQgbWluX2ludGVydmFsID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFxuK1xcdC8qIE9ubHkgcHVyZSBzb2Z0d2FyZSBzY2hlZHVsZXMgYXJtIHRoZSBwZXItZW50cnkgaHJ0aW1lci4gKi9cXG4rXFx0aWYgKCFGVUxMX09GRkxPQURfSVNfRU5BQkxFRChxLVxcdTAwM2VmbGFncykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cXHUwMDNlZmxhZ3MpKVxcbitcXHRcXHRtaW5faW50ZXJ2YWwgPSBtYXhfdChzNjQsIG1pbl9pbnRlcnZhbCxcXG4rXFx0XFx0XFx0XFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcXG4rXFxuK1xcdHJldHVybiBtaW5faW50ZXJ2YWw7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcXG4ge1xcbiBcXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXFx1MDAyNnEtXFx1MDAzZXBpY29zX3Blcl9ieXRlKSk7XFxuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXFxuIFxcdHJldHVybiBmYWxzZTtcXG4gfVxcbiBcXG4rLyogVGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGZlbGwgYmVoaW5kLCBlLmcuIGJlY2F1c2UgdGhlIHRpbWVyIHdhcyBkZWxheWVkXFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxcbisgKiBleHBpcnkgd291bGQgcmVwbGF5IHRoZSB3aG9sZSBiYWNrbG9nIGZyb20gaHJ0aW1lciBjb250ZXh0LCBzbyBza2lwXFxuKyAqIGNvbXBsZXRlIGN5Y2xlcyBhcml0aG1ldGljYWxseSBhbmQgd2FsayB0aGUgcmVtYWluaW5nIGVudHJpZXMgdG8gbGFuZCBvblxcbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHRhcHJpb19jYXRjaF91cChzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbitcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcXG4rXFx0XFx0XFx0ICAgIGt0aW1lX3QgKmVuZF90aW1lLCBrdGltZV90IG5vdylcXG4re1xcbitcXHRpbnQgYnVkZ2V0ID0gMiAqIG9wZXItXFx1MDAzZW51bV9lbnRyaWVzICsgMTtcXG4rXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSA9ICpuZXh0O1xcbitcXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XFxuK1xcdGt0aW1lX3QgZW5kID0gKmVuZF90aW1lO1xcbitcXHRzNjQgYmVoaW5kID0ga3RpbWVfc3ViKG5vdywgZW5kKTtcXG4rXFxuK1xcdGlmIChvcGVyLVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2UgMCBcXHUwMDI2XFx1MDAyNiBiZWhpbmQgXFx1MDAzZT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSkge1xcbitcXHRcXHRzNjQganVtcCA9IGRpdjY0X3M2NChiZWhpbmQsIG9wZXItXFx1MDAzZWN5Y2xlX3RpbWUpICogb3Blci1cXHUwMDNlY3ljbGVfdGltZTtcXG4rXFxuK1xcdFxcdHN0YXJ0ID0ga3RpbWVfYWRkX25zKHN0YXJ0LCBqdW1wKTtcXG4rXFx0XFx0ZW5kID0ga3RpbWVfYWRkX25zKGVuZCwganVtcCk7XFxuK1xcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcXG4rXFx0fVxcbitcXG4rXFx0d2hpbGUgKGt0aW1lX2JlZm9yZShlbmQsIG5vdykgXFx1MDAyNlxcdTAwMjYgLS1idWRnZXQpIHtcXG4rXFx0XFx0aWYgKGxpc3RfaXNfbGFzdChcXHUwMDI2ZW50cnktXFx1MDAzZWxpc3QsIFxcdTAwMjZvcGVyLVxcdTAwM2VlbnRyaWVzKSB8fFxcbitcXHRcXHQgICAga3RpbWVfY29tcGFyZShlbmQsIG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9maXJzdF9lbnRyeShcXHUwMDI2b3Blci1cXHUwMDNlZW50cmllcyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9lbnRyeSwgbGlzdCk7XFxuK1xcdFxcdFxcdG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXFx1MDAzZWN5Y2xlX2VuZF90aW1lLFxcbitcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgb3Blci1cXHUwMDNlY3ljbGVfdGltZSk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGVudHJ5ID0gbGlzdF9uZXh0X2VudHJ5KGVudHJ5LCBsaXN0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0c3RhcnQgPSBlbmQ7XFxuK1xcdFxcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVxcdTAwM2VpbnRlcnZhbCk7XFxuK1xcdFxcdGVuZCA9IG1pbl90KGt0aW1lX3QsIGVuZCwgb3Blci1cXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xcbitcXHR9XFxuK1xcbitcXHQqbmV4dCA9IGVudHJ5O1xcbitcXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xcbitcXHQqZW5kX3RpbWUgPSBlbmQ7XFxuK31cXG4rXFxuIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcXG4ge1xcbiBcXHRzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxID0gY29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgdGFwcmlvX3NjaGVkLFxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbiBcXHRpbnQgbnVtX3RjID0gbmV0ZGV2X2dldF9udW1fdGMoZGV2KTtcXG4gXFx0c3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgKm5leHQ7XFxuIFxcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cXHUwMDNlcm9vdDtcXG4tXFx0a3RpbWVfdCBlbmRfdGltZTtcXG4rXFx0a3RpbWVfdCBlbmRfdGltZSwgbmV4dF9zdGFydCwgbm93O1xcbiBcXHRpbnQgdGM7XFxuIFxcbiBcXHRzcGluX2xvY2soXFx1MDAyNnEtXFx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XFxuQEAgLTk2MCwxNCArMTAyNSwxOSBAQCBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuIFxcdFxcdG5leHQgPSBsaXN0X25leHRfZW50cnkoZW50cnksIGxpc3QpO1xcbiBcXHR9XFxuIFxcbi1cXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cXHUwMDNlZW5kX3RpbWUsIG5leHQtXFx1MDAzZWludGVydmFsKTtcXG4rXFx0bmV4dF9zdGFydCA9IGVudHJ5LVxcdTAwM2VlbmRfdGltZTtcXG4rXFx0ZW5kX3RpbWUgPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCwgbmV4dC1cXHUwMDNlaW50ZXJ2YWwpO1xcbiBcXHRlbmRfdGltZSA9IG1pbl90KGt0aW1lX3QsIGVuZF90aW1lLCBvcGVyLVxcdTAwM2VjeWNsZV9lbmRfdGltZSk7XFxuIFxcbitcXHRub3cgPSBocnRpbWVyX2NiX2dldF90aW1lKHRpbWVyKTtcXG4rXFx0aWYgKHVubGlrZWx5KGt0aW1lX2JlZm9yZShlbmRfdGltZSwgbm93KSkpXFxuK1xcdFxcdHRhcHJpb19jYXRjaF91cChvcGVyLCBcXHUwMDI2bmV4dCwgXFx1MDAyNm5leHRfc3RhcnQsIFxcdTAwMjZlbmRfdGltZSwgbm93KTtcXG4rXFxuIFxcdGZvciAodGMgPSAwOyB0YyBcXHUwMDNjIG51bV90YzsgdGMrKykge1xcbiBcXHRcXHRpZiAobmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cXHUwMDNlY3ljbGVfdGltZSlcXG4gXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcXG4gXFx0XFx0ZWxzZVxcbi1cXHRcXHRcXHRuZXh0LVxcdTAwM2VnYXRlX2Nsb3NlX3RpbWVbdGNdID0ga3RpbWVfYWRkX25zKGVudHJ5LVxcdTAwM2VlbmRfdGltZSxcXG4rXFx0XFx0XFx0bmV4dC1cXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgbmV4dC1cXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xcbiBcXHR9XFxuIFxcbkBAIC0xMDM4LDcgKzExMDgsNyBAQCBzdGF0aWMgaW50IGZpbGxfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSxcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbi1cXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcXG4rXFx0czY0IG1pbl9kdXJhdGlvbiA9IHRhcHJpb19taW5faW50ZXJ2YWwocSk7XFxuIFxcdHUzMiBpbnRlcnZhbCA9IDA7XFxuIFxcbiBcXHRpZiAodGJbVENBX1RBUFJJT19TQ0hFRF9FTlRSWV9DTURdKVxcbkBAIC0xMTY2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3RhcHJpb19zY2hlZHVsZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXFxuIFxcdFxcdG5ldy1cXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAobmV3LVxcdTAwM2VjeWNsZV90aW1lIFxcdTAwM2MgbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTikpIHtcXG4rXFx0aWYgKG5ldy1cXHUwMDNlY3ljbGVfdGltZSBcXHUwMDNjIChzNjQpbmV3LVxcdTAwM2VudW1fZW50cmllcyAqIHRhcHJpb19taW5faW50ZXJ2YWwocSkpIHtcXG4gXFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcXFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvbiBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXFxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcXG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXFxuQEAgLTE1NCw2ICsxNTQsMjggQEBcXG4gICAgICAgICAgICAgXFxcImVjaG8gXFxcXFxcXCIxXFxcXFxcXCIgXFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVxcXCJcXG4gICAgICAgICBdXFxuICAgICB9LFxcbisgICAge1xcbisgICAgICAgIFxcXCJpZFxcXCI6IFxcXCJmNGIyXFxcIixcXG4rICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cXFwiLFxcbisgICAgICAgIFxcXCJjYXRlZ29yeVxcXCI6IFtcXG4rICAgICAgICAgICAgXFxcInFkaXNjXFxcIixcXG4rICAgICAgICAgICAgXFxcInRhcHJpb1xcXCJcXG4rICAgICAgICBdLFxcbisgICAgICAgIFxcXCJwbHVnaW5zXFxcIjoge1xcbisgICAgICAgICAgICBcXFwicmVxdWlyZXNcXFwiOiBcXFwibnNQbHVnaW5cXFwiXFxuKyAgICAgICAgfSxcXG4rICAgICAgICBcXFwic2V0dXBcXFwiOiBbXFxuKyAgICAgICAgICAgIFxcXCJlY2hvIFxcXFxcXFwiMSAxIDhcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9uZXdfZGV2aWNlXFxcIlxcbisgICAgICAgIF0sXFxuKyAgICAgICAgXFxcImNtZFVuZGVyVGVzdFxcXCI6IFxcXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcXFwiLFxcbisgICAgICAgIFxcXCJleHBFeGl0Q29kZVxcXCI6IFxcXCIyXFxcIixcXG4rICAgICAgICBcXFwidmVyaWZ5Q21kXFxcIjogXFxcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXFxcIixcXG4rICAgICAgICBcXFwibWF0Y2hQYXR0ZXJuXFxcIjogXFxcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFxcXCIsXFxuKyAgICAgICAgXFxcIm1hdGNoQ291bnRcXFwiOiBcXFwiMFxcXCIsXFxuKyAgICAgICAgXFxcInRlYXJkb3duXFxcIjogW1xcbisgICAgICAgICAgICBcXFwiZWNobyBcXFxcXFxcIjFcXFxcXFxcIiBcXHUwMDNlIC9zeXMvYnVzL25ldGRldnNpbS9kZWxfZGV2aWNlXFxcIlxcbisgICAgICAgIF1cXG4rICAgIH0sXFxuICAgICB7XFxuICAgICAgICAgXFxcImlkXFxcIjogXFxcIjgzMWZcXFwiLFxcbiAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIkFkZCB0YXByaW8gUWRpc2Mgd2l0aCB0b28gc2hvcnQgY3ljbGUtdGltZVxcXCIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjA0LjA3Mzc3NDU4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjU3NjM1NTc2MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiLFxuICAgIFwiYWR2YW5jZV9zY2hlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbiBcdHJldHVybiBkaXZfdTY0KGxlbiAqIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xuIH1cbiBcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbisgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4rICogYWxyZWFkeSBpbiB0aGUgcGFzdCBhbmQgc3Rvcm0gdGhlIENQVS4gMTAwdXMgbGVhdmVzIG1hcmdpbiBhYm92ZSB0aGVcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuKyAqL1xuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU1x0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXG4rXG4rc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4re1xuK1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4rXG4rXHQvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovXG4rXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4rXHRcdG1pbl9pbnRlcnZhbCA9IG1heF90KHM2NCwgbWluX2ludGVydmFsLFxuK1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbitcbitcdHJldHVybiBtaW5faW50ZXJ2YWw7XG4rfVxuK1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuKy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuKyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXBcbisgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbisgKi9cbitzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbitcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbitcdFx0XHQgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KVxuK3tcbitcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyArIDE7XG4rXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4rXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4rXHRrdGltZV90IGVuZCA9ICplbmRfdGltZTtcbitcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuK1xuK1x0aWYgKG9wZXItXHUwMDNlY3ljbGVfdGltZSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYmVoaW5kIFx1MDAzZT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4rXHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbitcbitcdFx0c3RhcnQgPSBrdGltZV9hZGRfbnMoc3RhcnQsIGp1bXApO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbitcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbitcdH1cbitcbitcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuK1x0XHRpZiAobGlzdF9pc19sYXN0KFx1MDAyNmVudHJ5LVx1MDAzZWxpc3QsIFx1MDAyNm9wZXItXHUwMDNlZW50cmllcykgfHxcbitcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4rXHRcdH1cbitcbitcdFx0c3RhcnQgPSBlbmQ7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbitcdFx0ZW5kID0gbWluX3Qoa3RpbWVfdCwgZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdH1cbitcbitcdCpuZXh0ID0gZW50cnk7XG4rXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuK1x0KmVuZF90aW1lID0gZW5kO1xuK31cbitcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZW5kX3RpbWUsIG5leHRfc3RhcnQsIG5vdztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTYwLDE0ICsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4rXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiBcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuIFxuK1x0bm93ID0gaHJ0aW1lcl9jYl9nZXRfdGltZSh0aW1lcik7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzowNC4wNzM3NzU5NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTk4Mjc4NTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFRBUFJJTyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggZm9yIHRoZSBUQVBSSU8gcWRpc2MsIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzLCB5ZXMsIHRoaXMgaXMgYWJzb2x1dGVseSB3b3J0aCB0YWtpbmcgYSBkZWVwZXIgbG9vayBhdC4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IGl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgc3BlY2lmaWNhbGx5IGluIHRoZSBUQVBSSU8gcWRpc2MuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYFRBUFJJT19NSU5fU1dfSU5URVJWQUxfTlNgIGFuZCBgdGFwcmlvX2NhdGNoX3VwYCB0byBhZGRyZXNzIHBvdGVudGlhbCBDUFUgc3Rvcm1zIGFuZCBzY2hlZHVsaW5nIGJhY2tsb2dzIGFyZSBjcml0aWNhbCBmdW5jdGlvbmFsIGltcHJvdmVtZW50cy5cblxuU2luY2UgdGhpcyBhZmZlY3RzIHRoZSBjb3JlIHNjaGVkdWxpbmcgYW5kIGl0J3MgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIChpLmUuLCBgdGMgcWRpc2MgYWRkIC4uLiB0YXByaW9gKSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGl0IGludGVyYWN0cyB3aXRoIHVzZXJzcGFjZSB2aWEgYSB3ZWxsLWRlZmluZWQgaW50ZXJmYWNlIGlzIGEgYmlnIGFkdmFudGFnZSBmb3IgZnV6emluZyBlZmZlY3RpdmVuZXNzLiBBbnkgdW5leHBlY3RlZCBiZWhhdmlvciBoZXJlIGNvdWxkIGhhdmUgc2VyaW91cyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuXG5cbk5vdywgbGV0IG1lIGp1c3QgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGljaCBDT05GSUcgb3B0aW9ucyBlbmFibGUgdGhpcyBjb2RlIHBhdGggc28gSSBjYW4gY29uZmlndXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50IGFwcHJvcHJpYXRlbHkuIEl0J3MgaW4gYG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNgLCBzbyBJJ2xsIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2Agb3IgYG5ldC9zY2hlZC9NYWtlZmlsZWAgdG8gZmluZCB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLiBJJ2xsIG5lZWQgdGhpcyBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIGNvZGUgaXMgYWN0dWFsbHkgY29tcGlsZWQgaW50byB0aGUgZnV6emluZyB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxODksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoxMS4yNzIwNTcxNzdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxNTQ1MTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjaF90YXByaW9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvS2NvbmZpZz0xNzI9Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZy0xNzgtXFxubmV0L3NjaGVkL0tjb25maWc6MTc5OlxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG5uZXQvc2NoZWQvS2NvbmZpZy0xODAtXFxubmV0L3NjaGVkL0tjb25maWctMTgxLVxcdCAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbm5ldC9zY2hlZC9LY29uZmlnOjE4MjpcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbm5ldC9zY2hlZC9LY29uZmlnLTE4My1cXG4tLVxcbm5ldC9zY2hlZC9NYWtlZmlsZT02Mz1vYmotJChDT05GSUdfTkVUX1NDSF9FVEYpXFx0Kz0gc2NoX2V0Zi5vXFxubmV0L3NjaGVkL01ha2VmaWxlOjY0Om9iai0kKENPTkZJR19ORVRfU0NIX1RBUFJJTylcXHQrPSBzY2hfdGFwcmlvLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX05FVF9TQ0hfQlBGKVxcdCs9IGJwZl9xZGlzYy5vXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzozOi8qIG5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcXHQgVGltZSBBd2FyZSBQcmlvcml0eSBTY2hlZHVsZXJcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTQtICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTEuNzUzNjA3MTU4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2MjM5NjM2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBORVRfU0NIX1RBUFJJT2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgYE5FVF9TQ0hfVEFQUklPYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiUmlnaHQsIHRoYXQncyB0aGUgY29uZmlnIHRvIGxvb2sgYXQuXCIgVGltZSB0byBkaXZlIGluIGFuZCBnZXQgYSBncmlwIG9uIHRoZSBkZXBlbmRlbmNpZXMuIEdvdHRhIHNlZSB3aGF0IG90aGVyIGtub2JzIGFuZCBsZXZlcnMgdGhpcyBtb2R1bGUgaXMgdGllZCB0bywgd2hhdCBhc3N1bXB0aW9ucyBpdCBtYWtlcyBhYm91dCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBvciBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgaXRzIGludGVycGxheSB3aXRoaW4gdGhlIGxhcmdlciBuZXR3b3JraW5nIHN0YWNrLiBMZXQncyBzZWUgd2hhdCBvdGhlciBjb25maWdzIGFyZSBnb2luZyB0byBpbmZsdWVuY2UgYE5FVF9TQ0hfVEFQUklPYCdzIGJlaGF2aW9yLiBUaW1lIHRvIHRyYWNlIHRoZSByYWJiaXQgaG9sZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAyNSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjE1LjAxNjAwNzI0OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDM0MTM5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1NDSF9UQVBSSU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWc9MTY3PWNvbmZpZyBORVRfU0NIX01RUFJJT19MSUJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTE3MS1cXG5uZXQvc2NoZWQvS2NvbmZpZzoxNzI6Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxubmV0L3NjaGVkL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIFNjaGVkdWxlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTUuMDgwMzUyNjAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MDA2ODIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcHJvY2Vzc2luZyB0aGlzIGluZm9ybWF0aW9uOlxuXG4qKkFuYWx5emluZyB0aGUgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBUaGUgdGFzayBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGBjb25maWcgTkVUX1NDSF9UQVBSSU9gLiBJIGtub3cgdGhpcyBtZWFucyBJIG5lZWQgdG8gbG9vayBhdCBgbmV0L3NjaGVkL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbmV0d29yayBzY2hlZHVsaW5nIGFyZSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRoaXMgYEtjb25maWdgIGZpbGUgdG8gaG9sZCB0aGUgZGV0YWlscyAtIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBoZWxwIHRleHQsIHRoZSBkZWZhdWx0IHZhbHVlcywgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBuZWVkZWQgZm9yIGNvbmZpZ3VyaW5nIFRBUFJJTy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBzdHJ1Y3R1cmVkIGluIHJlbGF0aW9uIHRvIG90aGVyIHNjaGVkdWxpbmcgZGlzY2lwbGluZXM7IGlzIGl0IGEgc3RhbmRhbG9uZSBmZWF0dXJlIG9yIGJ1aWx0IHVwb24gc29tZXRoaW5nIGVsc2U/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBjb25mbGljdGluZyBvcHRpb25zPyBJJ2xsIGJlIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgaXQgcmVsYXRlcyB0byB0aGUgVFNOIGZyYW1ld29yayBvciBzcGVjaWZpYyBOSUMgZHJpdmVycy4gVGhpcyBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzbyBJJ20gZXhwZWN0aW5nIGl0IHRvIGJlIGd1YXJkZWQgYnkgY2VydGFpbiBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgb3Igb3RoZXIga2VybmVsIGZlYXR1cmUgY29uZmlndXJhdGlvbnMuIEtub3dpbmcgdGhlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgaXQuIEknbSBnb2luZyBpbiB3aXRoIGEgY3JpdGljYWwgZXllLCByZWFkeSB0byBhc3Nlc3MgaG93IHRoaXMgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBwaWN0dXJlIG9mIHRoZSBuZXR3b3JrIHNjaGVkdWxlcidzIGFyY2hpdGVjdHVyZS4gSSBleHBlY3QgSSdsbCB1bmNvdmVyIHNvbWUgaW50ZXJlc3RpbmcgaW5zaWdodHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoxOC45NzA0MjM0MThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDMyNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTcwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTcwOlxcdFxcdCAgQ29tbW9uIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBtcXByaW8gcXVldWUgY29uZmlndXJhdGlvbnMuXFxuIDE3MTpcXHRcXG4gMTcyOlxcdGNvbmZpZyBORVRfU0NIX1RBUFJJT1xcbiAxNzM6XFx0XFx0dHJpc3RhdGUgXFxcIlRpbWUgQXdhcmUgUHJpb3JpdHkgKHRhcHJpbykgU2NoZWR1bGVyXFxcIlxcbiAxNzQ6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfTVFQUklPX0xJQlxcbiAxNzU6XFx0XFx0aGVscFxcbiAxNzY6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBwYWNrZXRcXG4gMTc3OlxcdFxcdCAgc2NoZWR1bGluZyBhbGdvcml0aG0uXFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdCAgU2VlIHRoZSB0b3Agb2YgXFx1MDAzY2ZpbGU6bmV0L3NjaGVkL3NjaF90YXByaW8uY1xcdTAwM2UgZm9yIG1vcmUgZGV0YWlscy5cXG4gMTgwOlxcdFxcbiAxODE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgY29kZSBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXFxuIDE4MjpcXHRcXHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzY2hfdGFwcmlvLlxcbiAxODM6XFx0XFxuIDE4NDpcXHRjb25maWcgTkVUX1NDSF9HUkVEXFxuIDE4NTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uIChHUkVEKVxcXCJcXG4gMTg2OlxcdFxcdGhlbHBcXG4gMTg3OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdlbmVyaWMgUmFuZG9tIEVhcmx5IERldGVjdGlvblxcbiAxODg6XFx0XFx0ICAoR1JFRCkgcGFja2V0IHNjaGVkdWxpbmcgYWxnb3JpdGhtIGZvciBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzXFxuIDE4OTpcXHRcXHQgIChzZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3JlZC5jXFx1MDAzZSBmb3IgZGV0YWlscyBhbmRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MTguOTcwNTI5MDc4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIxMTU5NzEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBOZXR3b3JrIFNjaGVkdWxlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVF9TQ0hfVEFQUklPYCBoZXJlLiBJdCBzZWVtcyB0aGF0IGVuYWJsaW5nIHRoaXMgc3BlY2lmaWMgc2NoZWR1bGVyIGF1dG9tYXRpY2FsbHkgcHVsbHMgaW4gYE5FVF9TQ0hfTVFQUklPX0xJQmAuIFRoYXQgbWFrZXMgc2Vuc2UuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHBhcmVudCBjb25maWdzIGZvciBgTkVUX1NDSF9UQVBSSU9gIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gSG1tLCBgTkVUX1NDSEVEYCBzZWVtcyBsaWtlIGEgbGlrZWx5IGNhbmRpZGF0ZS4gTGV0IG1lIHF1aWNrbHkganVtcCBvdmVyIHRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSB0b3AtbGV2ZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTk4NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MjIuMTgyMTI4MzYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFRyYWZmaWMgY29udHJvbCBjb25maWd1cmF0aW9uLlxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIE5FVF9TQ0hFRFxcbiAgIDc6XFx0XFx0Ym9vbCBcXFwiUW9TIGFuZC9vciBmYWlyIHF1ZXVlaW5nXFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xcbiAgMTE6XFx0XFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXFxuICAxMjpcXHRcXHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXFxuICAxMzpcXHRcXHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xcbiAgMTQ6XFx0XFx0ICBcXFwiZmFpcmx5XFxcIiBoYXZlIGJlZW4gcHJvcG9zZWQuXFxuICAxNTpcXHRcXG4gIDE2OlxcdFxcdCAgSWYgeW91IHNheSBOIGhlcmUsIHlvdSB3aWxsIGdldCB0aGUgc3RhbmRhcmQgcGFja2V0IHNjaGVkdWxlciwgd2hpY2hcXG4gIDE3OlxcdFxcdCAgaXMgYSBGSUZPIChmaXJzdCBjb21lLCBmaXJzdCBzZXJ2ZWQpLiBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmVcXG4gIDE4OlxcdFxcdCAgYWJsZSB0byBjaG9vc2UgZnJvbSBhbW9uZyBzZXZlcmFsIGFsdGVybmF0aXZlIGFsZ29yaXRobXMgd2hpY2ggY2FuXFxuICAxOTpcXHRcXHQgIHRoZW4gYmUgYXR0YWNoZWQgdG8gZGlmZmVyZW50IG5ldHdvcmsgZGV2aWNlcy4gVGhpcyBpcyB1c2VmdWwgZm9yXFxuICAyMDpcXHRcXHQgIGV4YW1wbGUgaWYgc29tZSBvZiB5b3VyIG5ldHdvcmsgZGV2aWNlcyBhcmUgcmVhbCB0aW1lIGRldmljZXMgdGhhdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoyMi4xODIyMTMxMzJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMzNDQ4NTg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5FVF9TQ0hFRCBhbmQgTkVUX1NDSF9UQVBSSU8gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIOKAkyB0aGVzZSBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB3ZSdyZSBkZWFsaW5nIHdpdGguIE5vdywgdGhlIGtleSBpcyB0byBwaW5wb2ludCB0aGUgc3BlY2lmaWMgc3ltYm9scyB0b3VjaGVkIGJ5IHRoZSBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIGNhbGxzLCB0aGUgdmFyaWFibGVzLlxuXG5JIHNlZSBtb2RpZmljYXRpb25zIHRvIGBhZHZhbmNlX3NjaGVkYCwgYGZpbGxfc2NoZWRfZW50cnlgLCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAuIE9rYXksIGFuZCB0aGVuIHRoZXJlIGFyZSB0aGUgbmV3IGludHJvZHVjdGlvbnM6IGB0YXByaW9fY2F0Y2hfdXBgIOKAkyB3aGljaCBpcyAqc3RhdGljKiAtIGFuZCBgdGFwcmlvX21pbl9pbnRlcnZhbGAsIGFsc28gKnN0YXRpYyouIEhtbSwgYGFkdmFuY2Vfc2NoZWRgIGlzIGEgYGhydGltZXJgIGNhbGxiYWNrLiBJbnRlcmVzdGluZy4gTm93LCBgZmlsbF9zY2hlZF9lbnRyeWAgYW5kIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFyZSBjYWxsZWQgZHVyaW5nIHRoZSBxZGlzYyBjb25maWd1cmF0aW9uIHBoYXNlLlxuXG5HaXZlbiB0aGF0IHRoZXNlIGxhc3QgdHdvIGFyZSBjYWxsZWQgZHVyaW5nIGNvbmZpZywgbGV0J3MgZGlnIGludG8gdGhvc2UgbW9yZSBkZWVwbHkg4oCTIGFyZSB0aGV5IHN0YXRpYyBmdW5jdGlvbnM/IFRoYXQncyB0aGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgSSBuZWVkIHRvIHJlc29sdmUuIEknbGwgY2hlY2sgdGhlIGRlY2xhcmF0aW9ucyBhbmQgdXNhZ2VzIG9mIGJvdGgsIHRvIGNvbmZpcm0gdGhlIHNjb3BlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTE3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MjYuNTE2NzAxOTY1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDk1MjI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwYXJzZV90YXByaW9fc2NoZWR1bGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jPTExNTg9c3RhdGljIGludCBwYXJzZV9zY2hlZF9saXN0KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKmxpc3QsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk4OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTktXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTg4Nz1zdGF0aWMgaW50IHRhcHJpb19jaGFuZ2Uoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE5ODI6XFx0ZXJyID0gcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHEsIHRiLCBuZXdfYWRtaW4sIGV4dGFjayk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTgzLVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzoyNi41ODc2NTgzNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwNDYxOTc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFRBUFJJTyBTY2hlZHVsZXIgQ29kZSoqXG5cbkFscmlnaHQsIHNvIGBwYXJzZV90YXByaW9fc2NoZWR1bGVgIGFuZCBgdGFwcmlvX2NoYW5nZWAgYXJlIGJvdGggc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhhdCB1c3VhbGx5IG1lYW5zIHRoZXkncmUgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSwgbm90IGRpcmVjdGx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzY2hlZHVsZXIgKmFjdHVhbGx5KiB3b3Jrcywgc28gbm93IEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGR5bmFtaWMgYXNwZWN0cyBvZiB0aGUgc2NoZWR1bGVyLiBUaW1lIHRvIGxvb2sgYXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYC4gTXkgYWltIGlzIHRvIGdldCBhIHNlbnNlIG9mIHRoZSBkeW5hbWljIGludGVycGxheTsgd2hpY2ggZnVuY3Rpb25zIGFjdHVhbGx5IHJlc3BvbmQgdG8gZXh0ZXJuYWwgZXZlbnRzLCBzY2hlZHVsaW5nIGNoYW5nZXMsIGFuZCB0cmFmZmljIGRhdGEuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZW50cnkgcG9pbnRzIGFuZCB0aGUgY3J1Y2lhbCBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50LiBMZXQncyBzZWUgd2hhdCB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgdGVsbCBtZSBhYm91dCB0aGUgc2NoZWR1bGVyJ3MgYmVoYXZpb3IuIEkgYW50aWNpcGF0ZSB0aGVzZSBhcmUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBUQVBSSU8gc2NoZWR1bGVzIHRyYWZmaWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMDMsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1NzozMC41OTIyODAzODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyNjMwNTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oW2EtejAtOV9dKyApK1thLXowLTlfXStcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTE0PXN0cnVjdCBfX3RjX3RhcHJpb19xb3B0X29mZmxvYWQge1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMTgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk6c3RhdGljIHZvaWQgdGFwcmlvX2NhbGN1bGF0ZV9nYXRlX2R1cmF0aW9ucyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTIwLVxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTYzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTY0OnN0YXRpYyBib29sIHRhcHJpb19lbnRyeV9hbGxvd3NfdHgoa3RpbWVfdCBza2JfZW5kX3RpbWUsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUtXFx0XFx0XFx0XFx0ICAgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSwgaW50IHRjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzA6c3RhdGljIGt0aW1lX3Qgc2NoZWRfYmFzZV90aW1lKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTcxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTc4OnN0YXRpYyBrdGltZV90IHRhcHJpb19tb25vX3RvX2FueShjb25zdCBzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBrdGltZV90IG1vbm8pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNzkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTE6c3RhdGljIGt0aW1lX3QgdGFwcmlvX2dldF90aW1lKGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xOTUtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxOTY6c3RhdGljIHZvaWQgdGFwcmlvX2ZyZWVfc2NoZWRfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTk3LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjA4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA5OnN0YXRpYyB2b2lkIHN3aXRjaF9zY2hlZHVsZXMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIxMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKiphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjIzLS8qIEdldCBob3cgbXVjaCB0aW1lIGhhcyBiZWVuIGFscmVhZHkgZWxhcHNlZCBpbiB0aGUgY3VycmVudCBjeWNsZS4gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyNDpzdGF0aWMgczMyIGdldF9jeWNsZV90aW1lX2VsYXBzZWQoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgdGltZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyNS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIzNTpzdGF0aWMga3RpbWVfdCBnZXRfaW50ZXJ2YWxfZW5kX3RpbWUoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICphZG1pbixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjU3OnN0YXRpYyBpbnQgbGVuZ3RoX3RvX2R1cmF0aW9uKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIGludCBsZW4pXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjk6c3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNzAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yODEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyODI6c3RhdGljIGludCBkdXJhdGlvbl90b19sZW5ndGgoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgdTY0IGR1cmF0aW9uKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjgzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkwLSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjkxOnN0YXRpYyB2b2lkIHRhcHJpb191cGRhdGVfcXVldWVfbWF4X3NkdShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjkyLVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnNjaGVkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0zNDM9c3RhdGljIHN0cnVjdCBzY2hlZF9lbnRyeSAqZmluZF9lbnRyeV90b190cmFuc21pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MTktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0MjA6c3RhdGljIGJvb2wgaXNfdmFsaWRfaW50ZXJ2YWwoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MjEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00MzgtLyogVGhpcyByZXR1cm5zIHRoZSB0c3RhbXAgdmFsdWUgc2V0IGJ5IFRDUCBpbiB0ZXJtcyBvZiB0aGUgc2V0IGNsb2NrLiAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NDM5OnN0YXRpYyBrdGltZV90IGdldF90Y3BfdHN0YW1wKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00NDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00ODctICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo0ODg6c3RhdGljIGxvbmcgZ2V0X3BhY2tldF90eHRpbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy00ODkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy01NTktLyogRGV2aWNlcyB3aXRoIGZ1bGwgb2ZmbG9hZCBhcmUgZXhwZWN0ZWQgdG8gaG9ub3IgdGhpcyBpbiBoYXJkd2FyZSAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTYwOnN0YXRpYyBib29sIHRhcHJpb19za2JfZXhjZWVkc19xdWV1ZV9tYXhfc2R1KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NTgxOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNTgyLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBRZGlzYyAqY2hpbGQsIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NjAyOnN0YXRpYyBpbnQgdGFwcmlvX2VucXVldWVfc2VnbWVudGVkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtNjAzLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgUWRpc2MgKmNoaWxkLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy02NDYtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo2NDc6c3RhdGljIGludCB0YXByaW9fZW5xdWV1ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnNjaCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY0OC1cXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICoqdG9fZnJlZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9Njc2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX3BlZWsoc3RydWN0IFFkaXNjICpzY2gpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4MS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjY4MjpzdGF0aWMgdm9pZCB0YXByaW9fc2V0X2J1ZGdldHMoc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTY4My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTcwMi0vKiBXaGVuIGFuIHNrYiBpcyBzZW50LCBpdCBjb25zdW1lcyBmcm9tIHRoZSBidWRnZXQgb2YgYWxsIHRyYWZmaWMgY2xhc3NlcyAqL1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6NzAzOnN0YXRpYyBpbnQgdGFwcmlvX3VwZGF0ZV9idWRnZXRzKHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksIHNpemVfdCBsZW4sXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy03MDQtXFx0XFx0XFx0XFx0IGludCB0Y19jb25zdW1lZCwgaW50IG51bV90YylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9NzI2PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdGFwcmlvX2RlcXVldWVfZnJvbV90eHEoc3RydWN0IFFkaXNjICpzY2gsIGludCB0eHEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjc4MzpzdGF0aWMgdm9pZCB0YXByaW9fbmV4dF90Y190eHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IHRjLCBpbnQgKnR4cSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTc4NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTg1Mj1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnRhcHJpb19kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqc2NoKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy04OTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo4OTI6c3RhdGljIGJvb2wgc2hvdWxkX3Jlc3RhcnRfY3ljbGUoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTg5My1cXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IHNjaGVkX2VudHJ5ICplbnRyeSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTAzLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6OTA0OnN0YXRpYyBib29sIHNob3VsZF9jaGFuZ2Vfc2NoZWR1bGVzKGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKmFkbWluLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtOTA1LVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpvcGVyLFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDMtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzo5NDQ6c3RhdGljIHZvaWQgdGFwcmlvX2NhdGNoX3VwKHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm9wZXIsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05NDUtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqKm5leHQsIGt0aW1lX3QgKm5leHRfc3RhcnQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTk4Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjk4MzpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy05ODQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0xMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSB0YXByaW9fcG9saWN5W1RDQV9UQVBSSU9fQVRUUl9NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTEwNi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjExMDc6c3RhdGljIGludCBmaWxsX3NjaGVkX2VudHJ5KHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMDgtXFx0XFx0XFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExMzgtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTM5OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfZW50cnkoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqbixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNDAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCBpbnQgaW5kZXgsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExNTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTU4OnN0YXRpYyBpbnQgcGFyc2Vfc2NoZWRfbGlzdChzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICpsaXN0LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTE1OS1cXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMTk4OnN0YXRpYyBpbnQgcGFyc2VfdGFwcmlvX3NjaGVkdWxlKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHN0cnVjdCBubGF0dHIgKip0YixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTExOTktXFx0XFx0XFx0XFx0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKm5ldyxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEyNDk6c3RhdGljIGludCB0YXByaW9fcGFyc2VfbXFwcmlvX29wdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI1MC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKnFvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEyNzYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMjc3OnN0YXRpYyBpbnQgdGFwcmlvX2dldF9zdGFydF90aW1lKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTI3OC1cXHRcXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzMTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzExOnN0YXRpYyB2b2lkIHNldHVwX2ZpcnN0X2VuZF90aW1lKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzEyLVxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpzY2hlZCwga3RpbWVfdCBiYXNlKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzQwLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTM0MTpzdGF0aWMgdm9pZCB0YXByaW9fc3RhcnRfc2NoZWQoc3RydWN0IFFkaXNjICpzY2gsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzQyLVxcdFxcdFxcdCAgICAgICBrdGltZV90IHN0YXJ0LCBzdHJ1Y3Qgc2NoZWRfZ2F0ZV9saXN0ICpuZXcpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjItXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxMzYzOnN0YXRpYyB2b2lkIHRhcHJpb19zZXRfcGljb3NfcGVyX2J5dGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTEzNjQtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTM5Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjEzOTc6c3RhdGljIGludCB0YXByaW9fZGV2X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xMzk4LVxcdFxcdFxcdCAgICAgICB2b2lkICpwdHIpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0MzMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDM0OnN0YXRpYyB2b2lkIHNldHVwX3R4dGltZShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQzNS1cXHRcXHRcXHQgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsIGt0aW1lX3QgYmFzZSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MTQ3MT1FWFBPUlRfU1lNQk9MX0dQTCh0YXByaW9fb2ZmbG9hZF9nZXQpO1xcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE0NzM6dm9pZCB0YXByaW9fb2ZmbG9hZF9mcmVlKHN0cnVjdCB0Y190YXByaW9fcW9wdF9vZmZsb2FkICpvZmZsb2FkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTQ3NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jPTE0ODU9RVhQT1JUX1NZTUJPTF9HUEwodGFwcmlvX29mZmxvYWRfZnJlZSk7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE0OTgtICovXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNDk5OnN0YXRpYyB2b2lkIHRhcHJpb19vZmZsb2FkX2NvbmZpZ19jaGFuZ2VkKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTAwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUwOC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE1MDk6c3RhdGljIHUzMiB0Y19tYXBfdG9fcXVldWVfbWFzayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgdGNfbWFzaylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1MTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTI3LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTUyODpzdGF0aWMgdm9pZCB0YXByaW9fc2NoZWRfdG9fb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTUyOS1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqc2NoZWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NTYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTU3OnN0YXRpYyB2b2lkIHRhcHJpb19kZXRlY3RfYnJva2VuX21xcHJpbyhzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU1OC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzMtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNTc0OnN0YXRpYyB2b2lkIHRhcHJpb19jbGVhbnVwX2Jyb2tlbl9tcXByaW8oc3RydWN0IHRhcHJpb19zY2hlZCAqcSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE1NzUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNTg0LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTU4NTpzdGF0aWMgaW50IHRhcHJpb19lbmFibGVfb2ZmbG9hZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTU4Ni1cXHRcXHRcXHRcXHQgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY1MC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2NTE6c3RhdGljIGludCB0YXByaW9fZGlzYWJsZV9vZmZsb2FkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNjUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IHRhcHJpb19zY2hlZCAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5MS0gKi9cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE2OTI6c3RhdGljIGludCB0YXByaW9fcGFyc2VfY2xvY2tpZChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqKnRiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTY5My1cXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE3NjktXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxNzcwOnN0YXRpYyBpbnQgdGFwcmlvX3BhcnNlX3RjX2VudHJ5KHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTc3MS1cXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqb3B0LFxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODE2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTgxNzpzdGF0aWMgaW50IHRhcHJpb19wYXJzZV90Y19lbnRyaWVzKHN0cnVjdCBRZGlzYyAqc2NoLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTgxOC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjYtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoxODY3OnN0YXRpYyBpbnQgdGFwcmlvX21xcHJpb19jbXAoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTE4NjgtXFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgdGNfbXFwcmlvX3FvcHQgKm1xcHJpbylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMTg4Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjE4ODc6c3RhdGljIGludCB0YXByaW9fY2hhbmdlKHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xODg4LVxcdFxcdFxcdCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwODEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMDgyOnN0YXRpYyB2b2lkIHRhcHJpb19yZXNldChzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwODMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMDk2LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjA5NzpzdGF0aWMgdm9pZCB0YXByaW9fZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnNjaClcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIwOTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM1LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjEzNjpzdGF0aWMgaW50IHRhcHJpb19pbml0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICpvcHQsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMTM3LVxcdFxcdCAgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyMDAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjAxOnN0YXRpYyB2b2lkIHRhcHJpb19hdHRhY2goc3RydWN0IFFkaXNjICpzY2gpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjAyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM9MjIzNz1zdGF0aWMgc3RydWN0IG5ldGRldl9xdWV1ZSAqdGFwcmlvX3F1ZXVlX2dldChzdHJ1Y3QgUWRpc2MgKnNjaCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjI0OC1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjIyNDk6c3RhdGljIGludCB0YXByaW9fZ3JhZnQoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGxvbmcgY2wsXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMjUwLVxcdFxcdFxcdHN0cnVjdCBRZGlzYyAqbmV3LCBzdHJ1Y3QgUWRpc2MgKipvbGQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIyOTEtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMjkyOnN0YXRpYyBpbnQgZHVtcF9lbnRyeShzdHJ1Y3Qgc2tfYnVmZiAqbXNnLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjI5My1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5KVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzIxLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjMyMjpzdGF0aWMgaW50IGR1bXBfc2NoZWR1bGUoc3RydWN0IHNrX2J1ZmYgKm1zZyxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzMjMtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzY2hlZF9nYXRlX2xpc3QgKnJvb3QpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzNTctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzU4OnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfdGNfZW50cmllcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjM1OS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzOTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyMzkxOnN0YXRpYyBpbnQgdGFwcmlvX3B1dF9zdGF0KHN0cnVjdCBza19idWZmICpza2IsIHU2NCB2YWwsIHUxNiBhdHRydHlwZSlcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTIzOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yMzk5LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjQwMDpzdGF0aWMgaW50IHRhcHJpb19kdW1wX3hzdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IGduZXRfZHVtcCAqZCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0MDEtXFx0XFx0XFx0ICAgICAgc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NDctXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNDQ4OnN0YXRpYyBpbnQgdGFwcmlvX2R1bXBfc3RhdHMoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBnbmV0X2R1bXAgKmQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNDQ5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjQ1Ni1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI0NTc6c3RhdGljIGludCB0YXByaW9fZHVtcChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI0NTgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNTI3PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnRhcHJpb19sZWFmKHN0cnVjdCBRZGlzYyAqc2NoLCB1bnNpZ25lZCBsb25nIGNsKVxcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTM4LVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MjUzOTpzdGF0aWMgdW5zaWduZWQgbG9uZyB0YXByaW9fZmluZChzdHJ1Y3QgUWRpc2MgKnNjaCwgdTMyIGNsYXNzaWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNTQwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU0Ny1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NDg6c3RhdGljIGludCB0YXByaW9fZHVtcF9jbGFzcyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NDktXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgdGNtc2cgKnRjbSlcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU1OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1NjA6c3RhdGljIGludCB0YXByaW9fZHVtcF9jbGFzc19zdGF0cyhzdHJ1Y3QgUWRpc2MgKnNjaCwgdW5zaWduZWQgbG9uZyBjbCxcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1NjEtXFx0XFx0XFx0XFx0ICAgc3RydWN0IGduZXRfZHVtcCAqZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjU3OS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI1ODA6c3RhdGljIHZvaWQgdGFwcmlvX3dhbGsoc3RydWN0IFFkaXNjICpzY2gsIHN0cnVjdCBxZGlzY193YWxrZXIgKmFyZylcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI1ODEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjI5PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgdGFwcmlvX2RldmljZV9ub3RpZmllciA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjYzMi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2MzM6c3RhdGljIGludCBfX2luaXQgdGFwcmlvX21vZHVsZV9pbml0KHZvaWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0yNjM0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0Mi1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jOjI2NDM6c3RhdGljIHZvaWQgX19leGl0IHRhcHJpb19tb2R1bGVfZXhpdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmMtMjY0NC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjMwLjY4NDkxNDgzM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0MzgwNTQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgVGFwcmlvJ3MgRnVuY3Rpb25hbGl0eSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgdGFwcmlvX29mZmxvYWRfZnJlZWAuIFRoYXQncyBub24tc3RhdGljLCBzbyBpdCdzIHByb2JhYmx5IGltcG9ydGFudCBmb3IgaGFuZGxpbmcgb2ZmbG9hZHMuIEJ1dCB3YWl0IGEgbWludXRlLi4uIHdoZXJlIGFyZSB0aGUgUWRpc2Mgb3BlcmF0aW9ucyBkZWZpbmVkPyBNeSBndXQgZmVlbGluZyBpcyB0ZWxsaW5nIG1lIHRoYXQgdGhleSdyZSBsaWtlbHkgcmVnaXN0ZXJlZCB3aXRoaW4gYHRhcHJpb19tb2R1bGVfaW5pdGAuIFllcywgbGV0J3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gZm9sbG93aW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIHVucmVnaXN0cmF0aW9uLCBzbyBJIGNhbiBzZWUgd2hhdCdzIGFjdHVhbGx5IGhhcHBlbmluZyB0byB0aG9zZSBvZmZsb2FkZWQgcmVzb3VyY2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQyMSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM0LjE3OTI5NzY5WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NDM4MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0IFFkaXNjX29wcyB0YXByaW9fcWRpc2Nfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0yNjAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgUWRpc2NfY2xhc3Nfb3BzIHRhcHJpb19jbGFzc19vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTAtXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYzoyNjExOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzIHRhcHJpb19xZGlzY19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5uZXQvc2NoZWQvc2NoX3RhcHJpby5jLTI2MTItXFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM0LjI4MzI0NjA0OVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDAzMjc4MDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGluaXRpYWwgdGhvdWdodHMsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIHRoZW06XG5cbioqSW5pdGlhbCBEaXZlIGludG8gVEFQUklPIFFkaXNjIGFuZCBDbGFzcyBPcGVyYXRpb25zKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgYmVhcmluZ3Mgb24gdGhlc2UgVEFQUklPIGNvbXBvbmVudHMuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBzY2hlZHVsaW5nIGFuZCBjbGFzc2lmaWNhdGlvbiBhcmUgc3RydWN0dXJlZCB3aXRoaW4gdGhpcyBtb2R1bGUuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgdGFwcmlvX3FkaXNjX29wc2AgYW5kIGB0YXByaW9fY2xhc3Nfb3BzYC4gSSBrbm93IHRoZXNlIGFyZSBjcnVjaWFsIGVudHJ5IHBvaW50cywgcHJvdmlkaW5nIHRoZSBjb3JlIGZ1bmN0aW9ucyBmb3IgUWRpc2MgKHF1ZXVlaW5nIGRpc2NpcGxpbmUpIG1hbmFnZW1lbnQgYW5kIGNsYXNzLWJhc2VkIHRyYWZmaWMgaGFuZGxpbmcsIHJlc3BlY3RpdmVseS4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRyb2wgZmxvdyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGV5IGludGVyZmFjZSB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2ssIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGhhbmRsZSB0aGUgc3BlY2lmaWMgbnVhbmNlcyBvZiB0aGUgVEFQUklPIGFsZ29yaXRobS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNzg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6MzkuNjg2NTI2ODEyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX3RhcHJpby5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2MDAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2MDA6XFx0XFxuMjYwMTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IFFkaXNjX2NsYXNzX29wcyB0YXByaW9fY2xhc3Nfb3BzID0ge1xcbjI2MDI6XFx0XFx0LmdyYWZ0XFx0XFx0PSB0YXByaW9fZ3JhZnQsXFxuMjYwMzpcXHRcXHQubGVhZlxcdFxcdD0gdGFwcmlvX2xlYWYsXFxuMjYwNDpcXHRcXHQuZmluZFxcdFxcdD0gdGFwcmlvX2ZpbmQsXFxuMjYwNTpcXHRcXHQud2Fsa1xcdFxcdD0gdGFwcmlvX3dhbGssXFxuMjYwNjpcXHRcXHQuZHVtcFxcdFxcdD0gdGFwcmlvX2R1bXBfY2xhc3MsXFxuMjYwNzpcXHRcXHQuZHVtcF9zdGF0c1xcdD0gdGFwcmlvX2R1bXBfY2xhc3Nfc3RhdHMsXFxuMjYwODpcXHRcXHQuc2VsZWN0X3F1ZXVlXFx0PSB0YXByaW9fc2VsZWN0X3F1ZXVlLFxcbjI2MDk6XFx0fTtcXG4yNjEwOlxcdFxcbjI2MTE6XFx0c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgdGFwcmlvX3FkaXNjX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbjI2MTI6XFx0XFx0LmNsX29wc1xcdFxcdD0gXFx1MDAyNnRhcHJpb19jbGFzc19vcHMsXFxuMjYxMzpcXHRcXHQuaWRcXHRcXHQ9IFxcXCJ0YXByaW9cXFwiLFxcbjI2MTQ6XFx0XFx0LnByaXZfc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCB0YXByaW9fc2NoZWQpLFxcbjI2MTU6XFx0XFx0LmluaXRcXHRcXHQ9IHRhcHJpb19pbml0LFxcbjI2MTY6XFx0XFx0LmNoYW5nZVxcdFxcdD0gdGFwcmlvX2NoYW5nZSxcXG4yNjE3OlxcdFxcdC5kZXN0cm95XFx0PSB0YXByaW9fZGVzdHJveSxcXG4yNjE4OlxcdFxcdC5yZXNldFxcdFxcdD0gdGFwcmlvX3Jlc2V0LFxcbjI2MTk6XFx0XFx0LmF0dGFjaFxcdFxcdD0gdGFwcmlvX2F0dGFjaCxcXG4yNjIwOlxcdFxcdC5wZWVrXFx0XFx0PSB0YXByaW9fcGVlayxcXG4yNjIxOlxcdFxcdC5kZXF1ZXVlXFx0PSB0YXByaW9fZGVxdWV1ZSxcXG4yNjIyOlxcdFxcdC5lbnF1ZXVlXFx0PSB0YXByaW9fZW5xdWV1ZSxcXG4yNjIzOlxcdFxcdC5kdW1wXFx0XFx0PSB0YXByaW9fZHVtcCxcXG4yNjI0OlxcdFxcdC5kdW1wX3N0YXRzXFx0PSB0YXByaW9fZHVtcF9zdGF0cyxcXG4yNjI1OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuMjYyNjpcXHR9O1xcbjI2Mjc6XFx0TU9EVUxFX0FMSUFTX05FVF9TQ0goXFxcInRhcHJpb1xcXCIpO1xcbjI2Mjg6XFx0XFxuMjYyOTpcXHRzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHRhcHJpb19kZXZpY2Vfbm90aWZpZXIgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjM5LjY4NjY2Mjk3MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDc1NzE3OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gdGhlIGB0YXByaW9gIFNjaGVkdWxlcioqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGFkdmFuY2Vfc2NoZWRgLCB3aGljaCBpcyBhIGNyaXRpY2FsIGhydGltZXIgY2FsbGJhY2sg4oCTIHRoYXQncyBhIGhpZ2gtcHJpb3JpdHkgYXJlYSB0byB1bmRlcnN0YW5kLiBJdCdzIGFsc28gbW9kaWZ5aW5nIGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAsIGFuZCB0aG9zZSBhcmUgY2FsbGVkIGZyb20gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgLiBSaWdodCwgc28gYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIHNlZW0gbGlrZSBnb29kIHN0YXJ0aW5nIHBvaW50cyBmb3IgZm9jdXNlZCBhbmFseXNpcy5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLiBgdGFwcmlvX2NoYW5nZWAgYW5kIGB0YXByaW9faW5pdGAgYXJlIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgd3JpbmtsZS4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiBwcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBUaGUgY29tcGlsZXIgd2lsbCBpbmxpbmUgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMsIHNvIHRoZXkgZG9uJ3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzLiBCdXTigKYgYHRhcHJpb19jaGFuZ2VgIGFuZCBgdGFwcmlvX2luaXRgIGFyZSByZWdpc3RlcmVkIGluIGB0YXByaW9fcWRpc2Nfb3BzYC4gVGhlaXIgYWRkcmVzc2VzIGFyZSBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSdyZSAqbm90KiBpbmxpbmVkLiBUaGV5IGhhdmUgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgdGhlIGZpbGUuXG5cblN0aWxsLCBpZiB3ZSB3YW50IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFzIGEgcHJlZmVyZW5jZSwgd2UgbWlnaHQgYmUgb3V0IG9mIGx1Y2sgd2l0aGluIGBzY2hfdGFwcmlvLmNgIGV4Y2VwdCBmb3IgYHRhcHJpb19vZmZsb2FkX2ZyZWVgIGFuZCBgdGFwcmlvX29mZmxvYWRfZ2V0YC5cblxuSG9sZCBvbi4gTGV0J3MgcmVjYXAgYWJvdXQgYHRhcHJpb19jaGFuZ2VgLiBJdCdzIHN0YXRpYywgYnV0IGl0cyBhZGRyZXNzICppcyogdGFrZW4sIHNvIHRoZSBjb21waWxlciBjYW4ndCBpbmxpbmUgaXQuIEl0IGlzIG5vdCBwcml2YXRlIHRvIHRoZSBmaWxlLlxuXG5BcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhdCBhbGwsIHRob3VnaD8gTGV0J3MgdmVyaWZ5IHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTI0LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NDUuMTYyMzg1MDE4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAxOTQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXowLTlfXSsgW2EtejAtOV9dK1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfdGFwcmlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF90YXByaW8uYz0xNDcxPUVYUE9SVF9TWU1CT0xfR1BMKHRhcHJpb19vZmZsb2FkX2dldCk7XFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDcyLVxcbm5ldC9zY2hlZC9zY2hfdGFwcmlvLmM6MTQ3Mzp2b2lkIHRhcHJpb19vZmZsb2FkX2ZyZWUoc3RydWN0IHRjX3RhcHJpb19xb3B0X29mZmxvYWQgKm9mZmxvYWQpXFxubmV0L3NjaGVkL3NjaF90YXByaW8uYy0xNDc0LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NDUuMjYyNTg1OTU3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MzE1MjA0NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVEFQUklPJ3MgUWRpc2MgQVBJKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSd2ZSBnYXRoZXJlZCBhYm91dCB0aGUgVEFQUklPIHFkaXNjJ3MgQVBJIHN0cnVjdHVyZS4gSXQgbG9va3MgbGlrZSBgdGFwcmlvX29mZmxvYWRfZnJlZWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCBpc24ndCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSG93ZXZlciwgYHRhcHJpb19jaGFuZ2VgLCBgdGFwcmlvX2luaXRgLCBgdGFwcmlvX2VucXVldWVgLCBhbmQgYHRhcHJpb19kZXF1ZXVlYCBhcmUgY2xlYXJseSB0aGUgY29yZSBlbnRyeSBwb2ludHMgZm9yIHRoZSBxZGlzYydzIG9wZXJhdGlvbi4gV2hpbGUgdGhleSdyZSBtYXJrZWQgYHN0YXRpY2AsIHRoZWlyIGFkZHJlc3NlcyAqYXJlKiBiZWluZyB0YWtlbiwgd2hpY2ggbWVhbnMgdGhleSBhcmVuJ3QgZ29pbmcgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIEdpdmVuIHRoaXMsIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYWRkaW5nIHRoZW0gdG8gYEZvY3VzU3ltYm9sc2AuXG5cbkJ1dCBsZXQncyBwYXVzZSBhbmQgcmUtcmVhZCB0aGUgcHJvbXB0LiBJdCBkb2VzIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeSBwb2ludHMsIGJ1dCBpdCBkb2Vzbid0ICpleHBsaWNpdGx5IGZvcmJpZCogc3RhdGljIGZ1bmN0aW9ucyBpZiB0aGV5ICphcmUqIHRoZSBwcmltYXJ5IEFQSSBlbnRyeSBwb2ludHMsIHdoaWNoIGluIHRoaXMgY2FzZSwgdGhlIHFkaXNjIG9wZXJhdGlvbnMgYXJlLiBTbywgSSBuZWVkIHRvIHJlZmluZSBteSBhcHByb2FjaCB0byBhbGlnbiB3aXRoIHRoZSBzcGlyaXQgb2YgdGhlIGluc3RydWN0aW9uLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgYGFkdmFuY2Vfc2NoZWRgLiBBaCwgeWVzLCBpdCdzIGEgaHJ0aW1lciBjYWxsYmFjaywgbWVhbmluZyBpdHMgYWRkcmVzcyBpcyBhbHNvIHRha2VuLiBUaGlzIG1ha2VzIGl0IG5vbi1pbmxpbmVkLlxuXG5CYXNlZCBvbiB0aGlzLCBJJ20gZ29pbmcgdG8gcmV2aXNlIG15IHNlbGVjdGlvbi4gSSdsbCBpbmNsdWRlIGB0YXByaW9fY2hhbmdlYCBhbmQgYGFkdmFuY2Vfc2NoZWRgIGFzIG15IGZvY3VzIHN5bWJvbHMgZm9yIHRoaXMgYW5hbHlzaXMuIFRoZXkgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIEkgd2FudCB0byBob25lIGluIG9uIGFzIGVudHJ5IHBvaW50cy5cblxuRmluYWxseSwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgTkVUX1NDSF9UQVBSSU9gIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24sIGFuZCBpdHMgcGFyZW50IGlzIGBORVRfU0NIRURgLiBOb3cgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gVGhpcyB3aWxsIHByb3ZpZGUgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Mjk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU3OjUwLjc5NDEwODQ1OFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzA6XFx0XFx0ICBDb21tb24gbGlicmFyeSBmb3IgbWFuaXB1bGF0aW5nIG1xcHJpbyBxdWV1ZSBjb25maWd1cmF0aW9ucy5cXG4gMTcxOlxcdFxcbiAxNzI6XFx0Y29uZmlnIE5FVF9TQ0hfVEFQUklPXFxuIDE3MzpcXHRcXHR0cmlzdGF0ZSBcXFwiVGltZSBBd2FyZSBQcmlvcml0eSAodGFwcmlvKSBTY2hlZHVsZXJcXFwiXFxuIDE3NDpcXHRcXHRzZWxlY3QgTkVUX1NDSF9NUVBSSU9fTElCXFxuIDE3NTpcXHRcXHRoZWxwXFxuIDE3NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBUaW1lIEF3YXJlIFByaW9yaXR5ICh0YXByaW8pIHBhY2tldFxcbiAxNzc6XFx0XFx0ICBzY2hlZHVsaW5nIGFsZ29yaXRobS5cXG4gMTc4OlxcdFxcbiAxNzk6XFx0XFx0ICBTZWUgdGhlIHRvcCBvZiBcXHUwMDNjZmlsZTpuZXQvc2NoZWQvc2NoX3RhcHJpby5jXFx1MDAzZSBmb3IgbW9yZSBkZXRhaWxzLlxcbiAxODA6XFx0XFxuIDE4MTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBjb2RlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTgyOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHNjaF90YXByaW8uXFxuIDE4MzpcXHRcXG4gMTg0OlxcdGNvbmZpZyBORVRfU0NIX0dSRURcXG4gMTg1OlxcdFxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIFJhbmRvbSBFYXJseSBEZXRlY3Rpb24gKEdSRUQpXFxcIlxcbiAxODY6XFx0XFx0aGVscFxcbiAxODc6XFx0XFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgR2VuZXJpYyBSYW5kb20gRWFybHkgRGV0ZWN0aW9uXFxuIDE4ODpcXHRcXHQgIChHUkVEKSBwYWNrZXQgc2NoZWR1bGluZyBhbGdvcml0aG0gZm9yIHNvbWUgb2YgeW91ciBuZXR3b3JrIGRldmljZXNcXG4gMTg5OlxcdFxcdCAgKHNlZSB0aGUgdG9wIG9mIFxcdTAwM2NmaWxlOm5ldC9zY2hlZC9zY2hfcmVkLmNcXHUwMDNlIGZvciBkZXRhaWxzIGFuZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1Nzo1MC43OTQxODg5NDhaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE5ODk1OTQyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUQVBSSU8gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gYE5FVF9TQ0hfVEFQUklPYCBhbmQgYE5FVF9TQ0hFRGAuIExldCdzIHJ1biB0aHJvdWdoIGl0IGFnYWluLCBzeXN0ZW1hdGljYWxseS4gSXQgc2VlbXMgdG8gaW50cm9kdWNlIGBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TYCBhbmQgdGhlIGB0YXByaW9fbWluX2ludGVydmFsKClgIGZ1bmN0aW9uLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gYWx0ZXJzIGBhZHZhbmNlX3NjaGVkYCB0byBpbmNvcnBvcmF0ZSBgdGFwcmlvX2NhdGNoX3VwKClgLiBJIHNlZSB0aGF0IGBmaWxsX3NjaGVkX2VudHJ5YCBhbmQgYHBhcnNlX3RhcHJpb19zY2hlZHVsZWAgYXJlIGJlaW5nIG1vZGlmaWVkIHRvIHV0aWxpemUgYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgYXMgd2VsbC5cblxuTm93LCBhbGwgb2YgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgdHJpZ2dlcmVkIHdoZW4gdGhlIHRhcHJpbyBxZGlzYyBpcyBjb25maWd1cmVkIGFuZCBhY3RpdmVseSBydW5uaW5nLiBDcnVjaWFsbHksIHRoaXMgcWRpc2MgaXMsIG9yIGF0IGxlYXN0ICpjYW4gYmUqLCBlbnRpcmVseSBzb2Z0d2FyZS1lbXVsYXRlZC4gVGhpcyBtZWFucyBpdCdzIGRlZmluaXRlbHkgZ29pbmcgdG8gYmUgcmVsZXZhbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBpbXBvcnRhbnQgZnJvbSBhIGRlcGxveW1lbnQgcGVyc3BlY3RpdmUuXG5cblRoZSBjb3JlIG9mIHRoZSBpc3N1ZSBiZWluZyBhZGRyZXNzZWQgaXMgYSBDUFUgc3Rvcm0gcHJvYmxlbSB0aGF0IG9jY3VycyB3aGVuIHRoZSBzb2Z0d2FyZSBpbnRlcnZhbCBpcyBzZXQgdG8gc29tZXRoaW5nIHRvbyBzbWFsbC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIG1lYW5pbmcgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBzZXJpb3VzIGZ1enppbmcuXG5cbk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGUgZm9sbG93aW5nIGtleSBzeW1ib2xzOiBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGFuZCBgYWR2YW5jZV9zY2hlZGAuIEkgc2hvdWxkIGFsc28gZG91YmxlIGNoZWNrIGRlcGVuZGVuY2llcy4gTGV0J3Mgc2VlIGlmIGBORVRfU0NIX1RBUFJJT2AgaGluZ2VzIG9uIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyBvciBsaWJyYXJpZXMsIGp1c3QgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MzI0LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTc6NTUuOTkzMTUxMTQyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjQwMTAzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9LY29uZmlnPTMzND1jb25maWcgTkVUX1NDSF9GUV9QSUVcXG5uZXQvc2NoZWQvS2NvbmZpZzozMzU6XFx0ZGVwZW5kcyBvbiBORVRfU0NIX1BJRVxcbm5ldC9zY2hlZC9LY29uZmlnLTMzNi1cXHR0cmlzdGF0ZSBcXFwiRmxvdyBRdWV1ZSBQcm9wb3J0aW9uYWwgSW50ZWdyYWwgY29udHJvbGxlciBFbmhhbmNlZCAoRlEtUElFKVxcXCJcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTM0Nz1jb25maWcgTkVUX1NDSF9JTkdSRVNTXFxubmV0L3NjaGVkL0tjb25maWctMzQ4LVxcdHRyaXN0YXRlIFxcXCJJbmdyZXNzL2NsYXNzaWZpZXItYWN0aW9uIFFkaXNjXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctMzUwLVxcdHNlbGVjdCBORVRfWEdSRVNTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz00MDY9Y29uZmlnIE5FVF9TQ0hfQlBGXFxubmV0L3NjaGVkL0tjb25maWctNDA3LVxcdGJvb2wgXFxcIkJQRi1iYXNlZCBRZGlzY1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0MDg6XFx0ZGVwZW5kcyBvbiBCUEZfU1lTQ0FMTCBcXHUwMDI2XFx1MDAyNiBCUEZfSklUIFxcdTAwMjZcXHUwMDI2IERFQlVHX0lORk9fQlRGXFxubmV0L3NjaGVkL0tjb25maWctNDA5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTQ5ND1jb25maWcgTkVUX0NMU19ST1VURTRcXG5uZXQvc2NoZWQvS2NvbmZpZy00OTUtXFx0dHJpc3RhdGUgXFxcIlJvdXRpbmcgZGVjaXNpb24gKFJPVVRFKVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo0OTY6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctNDk3LVxcdHNlbGVjdCBJUF9ST1VURV9DTEFTU0lEXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz01MjY9Y29uZmlnIENMU19VMzJfUEVSRlxcbm5ldC9zY2hlZC9LY29uZmlnLTUyNy1cXHRib29sIFxcXCJQZXJmb3JtYW5jZSBjb3VudGVycyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUyODpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTI5LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTUzMz1jb25maWcgQ0xTX1UzMl9NQVJLXFxubmV0L3NjaGVkL0tjb25maWctNTM0LVxcdGJvb2wgXFxcIk5ldGZpbHRlciBtYXJrcyBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjUzNTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfVTMyXFxubmV0L3NjaGVkL0tjb25maWctNTM2LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTU1MD1jb25maWcgTkVUX0NMU19DR1JPVVBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnLTU1My1cXHRzZWxlY3QgQ0dST1VQX05FVF9DTEFTU0lEXFxubmV0L3NjaGVkL0tjb25maWc6NTU0OlxcdGRlcGVuZHMgb24gQ0dST1VQU1xcbm5ldC9zY2hlZC9LY29uZmlnLTU1NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MDU9Y29uZmlnIE5FVF9FTUFUQ0hfU1RBQ0tcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDYtXFx0aW50IFxcXCJTdGFjayBzaXplXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYwNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MDgtXFx0ZGVmYXVsdCBcXFwiMzJcXFwiXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz02MTU9Y29uZmlnIE5FVF9FTUFUQ0hfQ01QXFxubmV0L3NjaGVkL0tjb25maWctNjE2LVxcdHRyaXN0YXRlIFxcXCJTaW1wbGUgcGFja2V0IGRhdGEgY29tcGFyaXNvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2MTc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTYyNT1jb25maWcgTkVUX0VNQVRDSF9OQllURVxcbm5ldC9zY2hlZC9LY29uZmlnLTYyNi1cXHR0cmlzdGF0ZSBcXFwiTXVsdGkgYnl0ZSBjb21wYXJpc29uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjYyNzpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02MjgtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjM1PWNvbmZpZyBORVRfRU1BVENIX1UzMlxcbm5ldC9zY2hlZC9LY29uZmlnLTYzNi1cXHR0cmlzdGF0ZSBcXFwiVTMyIGtleVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2Mzc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjM4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY0NT1jb25maWcgTkVUX0VNQVRDSF9NRVRBXFxubmV0L3NjaGVkL0tjb25maWctNjQ2LVxcdHRyaXN0YXRlIFxcXCJNZXRhZGF0YVxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2NDc6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIXFxubmV0L3NjaGVkL0tjb25maWctNjQ4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY1Nj1jb25maWcgTkVUX0VNQVRDSF9URVhUXFxubmV0L3NjaGVkL0tjb25maWctNjU3LVxcdHRyaXN0YXRlIFxcXCJUZXh0c2VhcmNoXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjY1ODpcXHRkZXBlbmRzIG9uIE5FVF9FTUFUQ0hcXG5uZXQvc2NoZWQvS2NvbmZpZy02NTktXFx0c2VsZWN0IFRFWFRTRUFSQ0hcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY3MD1jb25maWcgTkVUX0VNQVRDSF9DQU5JRFxcbm5ldC9zY2hlZC9LY29uZmlnLTY3MS1cXHR0cmlzdGF0ZSBcXFwiQ0FOIElkZW50aWZpZXJcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjcyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiAoQ0FOPXkgfHwgQ0FOPW0pXFxubmV0L3NjaGVkL0tjb25maWctNjczLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTY4MD1jb25maWcgTkVUX0VNQVRDSF9JUFNFVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY4MS1cXHR0cmlzdGF0ZSBcXFwiSVBzZXRcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NjgyOlxcdGRlcGVuZHMgb24gTkVUX0VNQVRDSCBcXHUwMDI2XFx1MDAyNiBJUF9TRVRcXG5uZXQvc2NoZWQvS2NvbmZpZy02ODMtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NjkwPWNvbmZpZyBORVRfRU1BVENIX0lQVFxcbm5ldC9zY2hlZC9LY29uZmlnLTY5MS1cXHR0cmlzdGF0ZSBcXFwiSVB0YWJsZXMgTWF0Y2hlc1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo2OTI6XFx0ZGVwZW5kcyBvbiBORVRfRU1BVENIIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUiBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJfWFRBQkxFU1xcbm5ldC9zY2hlZC9LY29uZmlnLTY5My1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03MTU9Y29uZmlnIE5FVF9BQ1RfUE9MSUNFXFxubmV0L3NjaGVkL0tjb25maWctNzE2LVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFBvbGljaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjcxNzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzE4LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTcyNj1jb25maWcgTkVUX0FDVF9HQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzI3LVxcdHRyaXN0YXRlIFxcXCJHZW5lcmljIGFjdGlvbnNcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6NzI4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MjktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzM2PWNvbmZpZyBHQUNUX1BST0JcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzctXFx0Ym9vbCBcXFwiUHJvYmFiaWxpdHkgc3VwcG9ydFxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3Mzg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0dBQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03MzktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzQyPWNvbmZpZyBORVRfQUNUX01JUlJFRFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUmVkaXJlY3RpbmcgYW5kIE1pcnJvcmluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo3NDQ6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc0NS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NTI9Y29uZmlnIE5FVF9BQ1RfU0FNUExFXFxubmV0L3NjaGVkL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJUcmFmZmljIFNhbXBsaW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc1NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzU1LVxcdHNlbGVjdCBQU0FNUExFXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz03NjQ9Y29uZmlnIE5FVF9BQ1RfTkFUXFxubmV0L3NjaGVkL0tjb25maWctNzY1LVxcdHRyaXN0YXRlIFxcXCJTdGF0ZWxlc3MgTkFUXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc2NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctNzY3LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTc3ND1jb25maWcgTkVUX0FDVF9QRURJVFxcbm5ldC9zY2hlZC9LY29uZmlnLTc3NS1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEVkaXRpbmdcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzc2OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03NzctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9NzgzPWNvbmZpZyBORVRfQUNUX1NJTVBcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODQtXFx0dHJpc3RhdGUgXFxcIlNpbXBsZSBFeGFtcGxlIChEZWJ1ZylcXFwiXFxubmV0L3NjaGVkL0tjb25maWc6Nzg1OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy03ODYtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9Nzk3PWNvbmZpZyBORVRfQUNUX1NLQkVESVRcXG5uZXQvc2NoZWQvS2NvbmZpZy03OTgtXFx0dHJpc3RhdGUgXFxcIlNLQiBFZGl0aW5nXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjc5OTpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODAwLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTgwOD1jb25maWcgTkVUX0FDVF9DU1VNXFxubmV0L3NjaGVkL0tjb25maWctODA5LVxcdHRyaXN0YXRlIFxcXCJDaGVja3N1bSBVcGRhdGluZ1xcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4MTA6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxubmV0L3NjaGVkL0tjb25maWctODExLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04MTk9Y29uZmlnIE5FVF9BQ1RfTVBMU1xcbm5ldC9zY2hlZC9LY29uZmlnLTgyMC1cXHR0cmlzdGF0ZSBcXFwiTVBMUyBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODIxOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04MjItXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODMwPWNvbmZpZyBORVRfQUNUX1ZMQU5cXG5uZXQvc2NoZWQvS2NvbmZpZy04MzEtXFx0dHJpc3RhdGUgXFxcIlZsYW4gbWFuaXB1bGF0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjgzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg0MT1jb25maWcgTkVUX0FDVF9CUEZcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDItXFx0dHJpc3RhdGUgXFxcIkJQRiBiYXNlZCBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6ODQzOlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy04NDQtXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODUzPWNvbmZpZyBORVRfQUNUX0NPTk5NQVJLXFxubmV0L3NjaGVkL0tjb25maWctODU0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgQ29ubmVjdGlvbiBNYXJrIFJldHJpZXZlclxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORVRGSUxURVJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4NTY6XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfQ09OTlRSQUNLX01BUktcXG5uZXQvc2NoZWQvS2NvbmZpZy04NTctXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9ODY1PWNvbmZpZyBORVRfQUNUX0NUSU5GT1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2Ni1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2NzpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUIFxcdTAwMjZcXHUwMDI2IE5FVEZJTFRFUlxcbm5ldC9zY2hlZC9LY29uZmlnOjg2ODpcXHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0tfTUFSS1xcbm5ldC9zY2hlZC9LY29uZmlnLTg2OS1cXHRoZWxwXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz04ODI9Y29uZmlnIE5FVF9BQ1RfU0tCTU9EXFxubmV0L3NjaGVkL0tjb25maWctODgzLVxcdHRyaXN0YXRlIFxcXCJza2IgZGF0YSBtb2RpZmljYXRpb24gYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjg4NDpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctODg1LVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTg5Mz1jb25maWcgTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy04OTQtXFx0dHJpc3RhdGUgXFxcIkludGVyLUZFIGFjdGlvbiBiYXNlZCBvbiBJRVRGIEZvckNFUyBJbnRlckZFIExGQlxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo4OTU6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVFxcbm5ldC9zY2hlZC9LY29uZmlnLTg5Ni1cXHRzZWxlY3QgTkVUX0lGRVxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTA2PWNvbmZpZyBORVRfQUNUX1RVTk5FTF9LRVlcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDctXFx0dHJpc3RhdGUgXFxcIklQIHR1bm5lbCBtZXRhZGF0YSBtYW5pcHVsYXRpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTA4OlxcdGRlcGVuZHMgb24gTkVUX0NMU19BQ1RcXG5uZXQvc2NoZWQvS2NvbmZpZy05MDktXFx0aGVscFxcbi0tXFxubmV0L3NjaGVkL0tjb25maWc9OTE3PWNvbmZpZyBORVRfQUNUX0NUXFxubmV0L3NjaGVkL0tjb25maWctOTE4LVxcdHRyaXN0YXRlIFxcXCJjb25uZWN0aW9uIHRyYWNraW5nIHRjIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5MTk6XFx0ZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCBcXHUwMDI2XFx1MDAyNiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBORl9GTE9XX1RBQkxFXFxubmV0L3NjaGVkL0tjb25maWctOTIwLVxcdHNlbGVjdCBORl9DT05OVFJBQ0tfT1ZTXFxuLS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05MzA9Y29uZmlnIE5FVF9BQ1RfR0FURVxcbm5ldC9zY2hlZC9LY29uZmlnLTkzMS1cXHR0cmlzdGF0ZSBcXFwiRnJhbWUgZ2F0ZSBlbnRyeSBsaXN0IGNvbnRyb2wgdGMgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjkzMjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTMzLVxcdGhlbHBcXG4tLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk0Mj1jb25maWcgTkVUX0lGRV9TS0JNQVJLXFxubmV0L3NjaGVkL0tjb25maWctOTQzLVxcdHRyaXN0YXRlIFxcXCJTdXBwb3J0IHRvIGVuY29kaW5nIGRlY29kaW5nIHNrYiBtYXJrIG9uIElGRSBhY3Rpb25cXFwiXFxubmV0L3NjaGVkL0tjb25maWc6OTQ0OlxcdGRlcGVuZHMgb24gTkVUX0FDVF9JRkVcXG5uZXQvc2NoZWQvS2NvbmZpZy05NDUtXFxubmV0L3NjaGVkL0tjb25maWc9OTQ2PWNvbmZpZyBORVRfSUZFX1NLQlBSSU9cXG5uZXQvc2NoZWQvS2NvbmZpZy05NDctXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgdG8gZW5jb2RpbmcgZGVjb2Rpbmcgc2tiIHByaW8gb24gSUZFIGFjdGlvblxcXCJcXG5uZXQvc2NoZWQvS2NvbmZpZzo5NDg6XFx0ZGVwZW5kcyBvbiBORVRfQUNUX0lGRVxcbm5ldC9zY2hlZC9LY29uZmlnLTk0OS1cXG5uZXQvc2NoZWQvS2NvbmZpZz05NTA9Y29uZmlnIE5FVF9JRkVfU0tCVENJTkRFWFxcbm5ldC9zY2hlZC9LY29uZmlnLTk1MS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCB0byBlbmNvZGluZyBkZWNvZGluZyBza2IgdGNpbmRleCBvbiBJRkUgYWN0aW9uXFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1MjpcXHRkZXBlbmRzIG9uIE5FVF9BQ1RfSUZFXFxubmV0L3NjaGVkL0tjb25maWctOTUzLVxcbm5ldC9zY2hlZC9LY29uZmlnPTk1ND1jb25maWcgTkVUX1RDX1NLQl9FWFRcXG5uZXQvc2NoZWQvS2NvbmZpZy05NTUtXFx0Ym9vbCBcXFwiVEMgcmVjaXJjdWxhdGlvbiBzdXBwb3J0XFxcIlxcbm5ldC9zY2hlZC9LY29uZmlnOjk1NjpcXHRkZXBlbmRzIG9uIE5FVF9DTFNfQUNUXFxubmV0L3NjaGVkL0tjb25maWctOTU3LVxcdHNlbGVjdCBTS0JfRVhURU5TSU9OU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1Nzo1Ni4wNzU1NTU5OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NTg3MTQ4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVEFQUklPIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLiBGcm9tIGxvb2tpbmcgYXQgdGhlIGRlcGVuZGVuY2llcywgaXQgaW5pdGlhbGx5IHNlZW1lZCBsaWtlIGBORVRfU0NIX1RBUFJJT2Agd2FzIHByZXR0eSBzdHJhaWdodGZvcndhcmQsIG9ubHkgZGVwZW5kaW5nIG9uIGBORVRfU0NIRURgIHdoaWNoIGlzIHRoZSBiYXNlIHNjaGVkdWxpbmcgY29uZmlndXJhdGlvbi4gQnV0IGhvbGQgb24sIEkgc2VlIHRoYXQgYE5FVF9TQ0hfVEFQUklPYCAqYWxzbyogc2VsZWN0cyBgTkVUX1NDSF9NUVBSSU9fTElCYC4gVGhpcyBtZWFucyB0aGF0IGlmIEkgd2FudCB0byBlbmFibGUgVEFQUklPIHNjaGVkdWxpbmcsIGFsbCBJICpyZWFsbHkqIG5lZWQgYXJlIGBORVRfU0NIRURgIGFuZCBgTkVUX1NDSF9UQVBSSU9gIHRoZW1zZWx2ZXMuIE5vIG5lZWQgdG8gZ28gaHVudGluZyBmb3IgYW55dGhpbmcgZWxzZSBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZS5cblxuQWxyaWdodCwgcHV0dGluZyBpdCBhbGwgdG9nZXRoZXIsIGhlcmUncyB3aGF0IEkndmUgZ290OlxuXG4qICAgKipXb3J0aEZ1enppbmc6KiogVHJ1ZSAtIFRoaXMgaXMgYSBjaGFuZ2UgdG8gY29yZSBzY2hlZHVsaW5nIGZ1bmN0aW9uYWxpdHksIHNvIHllcywgd29ydGggZnV6emluZy5cbiogICAqKkZvY3VzU3ltYm9sczoqKiBgdGFwcmlvX2NoYW5nZWAsIGB0YXByaW9faW5pdGAsIGBhZHZhbmNlX3NjaGVkYCAtIFRoZXNlIGZ1bmN0aW9ucyBhcmUga2V5LCB0aGV5IGNsZWFybHkgcmVsYXRlIHRvIHRoZSBtb2RpZmllZCBUQVBSSU8gYmVoYXZpb3IuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBORVRfU0NIRURgLCBgTkVUX1NDSF9UQVBSSU9gIC0gVGhvc2UgYXJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb25zIG5lZWRlZC5cbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMgbW9kaWZ5aW5nIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyB0byBpbnRyb2R1Y2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsLCBhbmQgYWRkcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMsIGFuZCBpbXBvcnRhbnRseSwgaXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmV0bGluaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRhcmdldC5cblxuT2theSwgSSB0aGluayBJJ3ZlIGdvdCBhIGdvb2QgaGFuZGxlIG9uIHRoYXQuIFRpbWUgdG8gZmVlZCB0aGlzIGluZm9ybWF0aW9uIGludG8gdGhlIHN5c3RlbSB1c2luZyBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDEzOSwiT3V0cHV0VG9rZW5zIjoxMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMDY6NTg6MDEuNTcxNDMwNDY3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3OTE1OTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIixcbiAgICBcIk5FVF9TQ0hfVEFQUklPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGFwcmlvX2NoYW5nZVwiLFxuICAgIFwidGFwcmlvX2luaXRcIixcbiAgICBcImFkdmFuY2Vfc2NoZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgVEFQUklPIHFkaXNjIHNjaGVkdWxpbmcgbG9naWMgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgc2NoZWR1bGVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gY29yZSBuZXR3b3JraW5nIHNjaGVkdWxpbmcgbG9naWMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9TQ0hFRFwiLFxuICAgIFwiTkVUX1NDSF9UQVBSSU9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0YXByaW9fY2hhbmdlXCIsXG4gICAgXCJ0YXByaW9faW5pdFwiLFxuICAgIFwiYWR2YW5jZV9zY2hlZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBUQVBSSU8gcWRpc2Mgc2NoZWR1bGluZyBsb2dpYyB0byBlbmZvcmNlIGEgbWluaW11bSBzb2Z0d2FyZSBpbnRlcnZhbCBhbmQgaW50cm9kdWNlcyBhIGNhdGNoLXVwIG1lY2hhbmlzbSBmb3IgZGVsYXllZCBzY2hlZHVsZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBjb3JlIG5ldHdvcmtpbmcgc2NoZWR1bGluZyBsb2dpYyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU4OjAxLjcwOTM1NjA3M1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTEzOTY2MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1ODowMS43MTAzNDI1OTNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTA0OTA0MDQxOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB0YXByaW8gc2NoZWR1bGVyIHRvIGVuZm9yY2UgYSBtaW5pbXVtIHNvZnR3YXJlIGludGVydmFsIGFuZCBpbnRyb2R1Y2VzIGEgY2F0Y2gtdXAgbWVjaGFuaXNtIGZvciBkZWxheWVkIGhydGltZXJzIHRvIHByZXZlbnQgQ1BVIHN0b3Jtcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGFyaXRobWV0aWMgY2FsY3VsYXRpb25zIG9uIGt0aW1lX3QgdmFyaWFibGVzLCBsb29wIGNvbmRpdGlvbnMsIGFuZCBpbnRlcnZhbCBib3VuZHMgY2hlY2tzLiBUaGVyZSBhcmUgbm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhbGxvY2F0ZWQsIG5vIGNoYW5nZXMgdG8gaG93IGRhdGEgaXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSByZWxhdGVkIHRvIGxvZ2ljIGVycm9ycywgaW5maW5pdGUgbG9vcHMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhZGVxdWF0ZWx5IGNvdmVyZWQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIGtlcm5lbCBkZWJ1Z2dpbmcgdG9vbHMuIEEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBmMjNmZjJiMGY2ZTQ2M2QyM2ExNDA0YWQzYTA2YmU5ODE1NjhlNDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAwNjo1NzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfdGFwcmlvLmMgYi9uZXQvc2NoZWQvc2NoX3RhcHJpby5jXG5pbmRleCAyOTkyMzRhNWYwZmU2Li45MWE3ZjdmMTc0NjJiIDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuKysrIGIvbmV0L3NjaGVkL3NjaF90YXByaW8uY1xuQEAgLTI1OSw2ICsyNTksMjYgQEAgc3RhdGljIGludCBsZW5ndGhfdG9fZHVyYXRpb24oc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgaW50IGxlbilcbiBcdHJldHVybiBkaXZfdTY0KGxlbiAqIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSksIFBTRUNfUEVSX05TRUMpO1xuIH1cbiBcbisvKiBTb2Z0d2FyZSBzY2hlZHVsZXMgc2VydmljZSBvbmUgaHJ0aW1lciBleHBpcnkgcGVyIGVudHJ5OyBpbnRlcnZhbHNcbisgKiBzaG9ydGVyIHRoYW4gdGhlIGV4cGlyeSBzZXJ2aWNlIGNvc3QgcmVhcm0gdGhlIHRpbWVyIHdpdGggYW4gZXhwaXJ5XG4rICogYWxyZWFkeSBpbiB0aGUgcGFzdCBhbmQgc3Rvcm0gdGhlIENQVS4gMTAwdXMgbGVhdmVzIG1hcmdpbiBhYm92ZSB0aGVcbisgKiBtZWFzdXJlZCBjb3N0IG9uIGRlYnVnIGNvbmZpZ3VyYXRpb25zLlxuKyAqL1xuKyNkZWZpbmUgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU1x0KDEwMCAqIE5TRUNfUEVSX1VTRUMpXG4rXG4rc3RhdGljIHM2NCB0YXByaW9fbWluX2ludGVydmFsKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEpXG4re1xuK1x0czY0IG1pbl9pbnRlcnZhbCA9IGxlbmd0aF90b19kdXJhdGlvbihxLCBFVEhfWkxFTik7XG4rXG4rXHQvKiBPbmx5IHB1cmUgc29mdHdhcmUgc2NoZWR1bGVzIGFybSB0aGUgcGVyLWVudHJ5IGhydGltZXIuICovXG4rXHRpZiAoIUZVTExfT0ZGTE9BRF9JU19FTkFCTEVEKHEtXHUwMDNlZmxhZ3MpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFUWFRJTUVfQVNTSVNUX0lTX0VOQUJMRUQocS1cdTAwM2VmbGFncykpXG4rXHRcdG1pbl9pbnRlcnZhbCA9IG1heF90KHM2NCwgbWluX2ludGVydmFsLFxuK1x0XHRcdFx0ICAgICBUQVBSSU9fTUlOX1NXX0lOVEVSVkFMX05TKTtcbitcbitcdHJldHVybiBtaW5faW50ZXJ2YWw7XG4rfVxuK1xuIHN0YXRpYyBpbnQgZHVyYXRpb25fdG9fbGVuZ3RoKHN0cnVjdCB0YXByaW9fc2NoZWQgKnEsIHU2NCBkdXJhdGlvbilcbiB7XG4gXHRyZXR1cm4gZGl2X3U2NChkdXJhdGlvbiAqIFBTRUNfUEVSX05TRUMsIGF0b21pYzY0X3JlYWQoXHUwMDI2cS1cdTAwM2VwaWNvc19wZXJfYnl0ZSkpO1xuQEAgLTkxNSw2ICs5MzUsNTEgQEAgc3RhdGljIGJvb2wgc2hvdWxkX2NoYW5nZV9zY2hlZHVsZXMoY29uc3Qgc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqYWRtaW4sXG4gXHRyZXR1cm4gZmFsc2U7XG4gfVxuIFxuKy8qIFRoZSBvcGVyYXRpb25hbCBzY2hlZHVsZSBmZWxsIGJlaGluZCwgZS5nLiBiZWNhdXNlIHRoZSB0aW1lciB3YXMgZGVsYXllZFxuKyAqIG9yIHRoZSByZWZlcmVuY2UgY2xvY2sgc3RlcHBlZCBmb3J3YXJkLiBBZHZhbmNpbmcgb25lIGVudHJ5IHBlciB0aW1lclxuKyAqIGV4cGlyeSB3b3VsZCByZXBsYXkgdGhlIHdob2xlIGJhY2tsb2cgZnJvbSBocnRpbWVyIGNvbnRleHQsIHNvIHNraXBcbisgKiBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgYW5kIHdhbGsgdGhlIHJlbWFpbmluZyBlbnRyaWVzIHRvIGxhbmQgb25cbisgKiB0aGUgZW50cnkgY292ZXJpbmcgdGhlIGN1cnJlbnQgdGltZS5cbisgKi9cbitzdGF0aWMgdm9pZCB0YXByaW9fY2F0Y2hfdXAoc3RydWN0IHNjaGVkX2dhdGVfbGlzdCAqb3BlcixcbitcdFx0XHQgICAgc3RydWN0IHNjaGVkX2VudHJ5ICoqbmV4dCwga3RpbWVfdCAqbmV4dF9zdGFydCxcbitcdFx0XHQgICAga3RpbWVfdCAqZW5kX3RpbWUsIGt0aW1lX3Qgbm93KVxuK3tcbitcdGludCBidWRnZXQgPSAyICogb3Blci1cdTAwM2VudW1fZW50cmllcyArIDE7XG4rXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5ID0gKm5leHQ7XG4rXHRrdGltZV90IHN0YXJ0ID0gKm5leHRfc3RhcnQ7XG4rXHRrdGltZV90IGVuZCA9ICplbmRfdGltZTtcbitcdHM2NCBiZWhpbmQgPSBrdGltZV9zdWIobm93LCBlbmQpO1xuK1xuK1x0aWYgKG9wZXItXHUwMDNlY3ljbGVfdGltZSBcdTAwM2UgMCBcdTAwMjZcdTAwMjYgYmVoaW5kIFx1MDAzZT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKSB7XG4rXHRcdHM2NCBqdW1wID0gZGl2NjRfczY0KGJlaGluZCwgb3Blci1cdTAwM2VjeWNsZV90aW1lKSAqIG9wZXItXHUwMDNlY3ljbGVfdGltZTtcbitcbitcdFx0c3RhcnQgPSBrdGltZV9hZGRfbnMoc3RhcnQsIGp1bXApO1xuK1x0XHRlbmQgPSBrdGltZV9hZGRfbnMoZW5kLCBqdW1wKTtcbitcdFx0b3Blci1cdTAwM2VjeWNsZV9lbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lLCBqdW1wKTtcbitcdH1cbitcbitcdHdoaWxlIChrdGltZV9iZWZvcmUoZW5kLCBub3cpIFx1MDAyNlx1MDAyNiAtLWJ1ZGdldCkge1xuK1x0XHRpZiAobGlzdF9pc19sYXN0KFx1MDAyNmVudHJ5LVx1MDAzZWxpc3QsIFx1MDAyNm9wZXItXHUwMDNlZW50cmllcykgfHxcbitcdFx0ICAgIGt0aW1lX2NvbXBhcmUoZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKSA9PSAwKSB7XG4rXHRcdFx0ZW50cnkgPSBsaXN0X2ZpcnN0X2VudHJ5KFx1MDAyNm9wZXItXHUwMDNlZW50cmllcyxcbitcdFx0XHRcdFx0XHQgc3RydWN0IHNjaGVkX2VudHJ5LCBsaXN0KTtcbitcdFx0XHRvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lID0ga3RpbWVfYWRkX25zKG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUsXG4rXHRcdFx0XHRcdFx0XHQgICAgb3Blci1cdTAwM2VjeWNsZV90aW1lKTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRlbnRyeSA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4rXHRcdH1cbitcbitcdFx0c3RhcnQgPSBlbmQ7XG4rXHRcdGVuZCA9IGt0aW1lX2FkZF9ucyhlbmQsIGVudHJ5LVx1MDAzZWludGVydmFsKTtcbitcdFx0ZW5kID0gbWluX3Qoa3RpbWVfdCwgZW5kLCBvcGVyLVx1MDAzZWN5Y2xlX2VuZF90aW1lKTtcbitcdH1cbitcbitcdCpuZXh0ID0gZW50cnk7XG4rXHQqbmV4dF9zdGFydCA9IHN0YXJ0O1xuK1x0KmVuZF90aW1lID0gZW5kO1xuK31cbitcbiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYWR2YW5jZV9zY2hlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG4ge1xuIFx0c3RydWN0IHRhcHJpb19zY2hlZCAqcSA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHRhcHJpb19zY2hlZCxcbkBAIC05MjQsNyArOTg5LDcgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGFkdmFuY2Vfc2NoZWQoc3RydWN0IGhydGltZXIgKnRpbWVyKVxuIFx0aW50IG51bV90YyA9IG5ldGRldl9nZXRfbnVtX3RjKGRldik7XG4gXHRzdHJ1Y3Qgc2NoZWRfZW50cnkgKmVudHJ5LCAqbmV4dDtcbiBcdHN0cnVjdCBRZGlzYyAqc2NoID0gcS1cdTAwM2Vyb290O1xuLVx0a3RpbWVfdCBlbmRfdGltZTtcbitcdGt0aW1lX3QgZW5kX3RpbWUsIG5leHRfc3RhcnQsIG5vdztcbiBcdGludCB0YztcbiBcbiBcdHNwaW5fbG9jayhcdTAwMjZxLVx1MDAzZWN1cnJlbnRfZW50cnlfbG9jayk7XG5AQCAtOTYwLDE0ICsxMDI1LDE5IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBhZHZhbmNlX3NjaGVkKHN0cnVjdCBocnRpbWVyICp0aW1lcilcbiBcdFx0bmV4dCA9IGxpc3RfbmV4dF9lbnRyeShlbnRyeSwgbGlzdCk7XG4gXHR9XG4gXG4tXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSwgbmV4dC1cdTAwM2VpbnRlcnZhbCk7XG4rXHRuZXh0X3N0YXJ0ID0gZW50cnktXHUwMDNlZW5kX3RpbWU7XG4rXHRlbmRfdGltZSA9IGt0aW1lX2FkZF9ucyhuZXh0X3N0YXJ0LCBuZXh0LVx1MDAzZWludGVydmFsKTtcbiBcdGVuZF90aW1lID0gbWluX3Qoa3RpbWVfdCwgZW5kX3RpbWUsIG9wZXItXHUwMDNlY3ljbGVfZW5kX3RpbWUpO1xuIFxuK1x0bm93ID0gaHJ0aW1lcl9jYl9nZXRfdGltZSh0aW1lcik7XG4rXHRpZiAodW5saWtlbHkoa3RpbWVfYmVmb3JlKGVuZF90aW1lLCBub3cpKSlcbitcdFx0dGFwcmlvX2NhdGNoX3VwKG9wZXIsIFx1MDAyNm5leHQsIFx1MDAyNm5leHRfc3RhcnQsIFx1MDAyNmVuZF90aW1lLCBub3cpO1xuK1xuIFx0Zm9yICh0YyA9IDA7IHRjIFx1MDAzYyBudW1fdGM7IHRjKyspIHtcbiBcdFx0aWYgKG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10gPT0gb3Blci1cdTAwM2VjeWNsZV90aW1lKVxuIFx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IEtUSU1FX01BWDtcbiBcdFx0ZWxzZVxuLVx0XHRcdG5leHQtXHUwMDNlZ2F0ZV9jbG9zZV90aW1lW3RjXSA9IGt0aW1lX2FkZF9ucyhlbnRyeS1cdTAwM2VlbmRfdGltZSxcbitcdFx0XHRuZXh0LVx1MDAzZWdhdGVfY2xvc2VfdGltZVt0Y10gPSBrdGltZV9hZGRfbnMobmV4dF9zdGFydCxcbiBcdFx0XHRcdFx0XHRcdFx0IG5leHQtXHUwMDNlZ2F0ZV9kdXJhdGlvblt0Y10pO1xuIFx0fVxuIFxuQEAgLTEwMzgsNyArMTEwOCw3IEBAIHN0YXRpYyBpbnQgZmlsbF9zY2hlZF9lbnRyeShzdHJ1Y3QgdGFwcmlvX3NjaGVkICpxLCBzdHJ1Y3QgbmxhdHRyICoqdGIsXG4gXHRcdFx0ICAgIHN0cnVjdCBzY2hlZF9lbnRyeSAqZW50cnksXG4gXHRcdFx0ICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4tXHRpbnQgbWluX2R1cmF0aW9uID0gbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKTtcbitcdHM2NCBtaW5fZHVyYXRpb24gPSB0YXByaW9fbWluX2ludGVydmFsKHEpO1xuIFx0dTMyIGludGVydmFsID0gMDtcbiBcbiBcdGlmICh0YltUQ0FfVEFQUklPX1NDSEVEX0VOVFJZX0NNRF0pXG5AQCAtMTE2Niw3ICsxMjM2LDcgQEAgc3RhdGljIGludCBwYXJzZV90YXByaW9fc2NoZWR1bGUoc3RydWN0IHRhcHJpb19zY2hlZCAqcSwgc3RydWN0IG5sYXR0ciAqKnRiLFxuIFx0XHRuZXctXHUwMDNlY3ljbGVfdGltZSA9IGN5Y2xlO1xuIFx0fVxuIFxuLVx0aWYgKG5ldy1cdTAwM2VjeWNsZV90aW1lIFx1MDAzYyBuZXctXHUwMDNlbnVtX2VudHJpZXMgKiBsZW5ndGhfdG9fZHVyYXRpb24ocSwgRVRIX1pMRU4pKSB7XG4rXHRpZiAobmV3LVx1MDAzZWN5Y2xlX3RpbWUgXHUwMDNjIChzNjQpbmV3LVx1MDAzZW51bV9lbnRyaWVzICogdGFwcmlvX21pbl9pbnRlcnZhbChxKSkge1xuIFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiJ2N5Y2xlX3RpbWUnIGlzIHRvbyBzbWFsbFwiKTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZy90Yy10ZXN0cy9xZGlzY3MvdGFwcmlvLmpzb24gYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuaW5kZXggY2QxOWQwNTkyNWU0MC4uM2ZlNjY4MzlmOGFlZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3RpbmcvdGMtdGVzdHMvcWRpc2NzL3RhcHJpby5qc29uXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL3RjLXRlc3RzL3FkaXNjcy90YXByaW8uanNvblxuQEAgLTE1NCw2ICsxNTQsMjggQEBcbiAgICAgICAgICAgICBcImVjaG8gXFxcIjFcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vZGVsX2RldmljZVwiXG4gICAgICAgICBdXG4gICAgIH0sXG4rICAgIHtcbisgICAgICAgIFwiaWRcIjogXCJmNGIyXCIsXG4rICAgICAgICBcIm5hbWVcIjogXCJBZGQgdGFwcmlvIFFkaXNjIHdpdGggc29mdHdhcmUgaW50ZXJ2YWwgYmVsb3cgdGhlIG1pbmltdW1cIixcbisgICAgICAgIFwiY2F0ZWdvcnlcIjogW1xuKyAgICAgICAgICAgIFwicWRpc2NcIixcbisgICAgICAgICAgICBcInRhcHJpb1wiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJwbHVnaW5zXCI6IHtcbisgICAgICAgICAgICBcInJlcXVpcmVzXCI6IFwibnNQbHVnaW5cIlxuKyAgICAgICAgfSxcbisgICAgICAgIFwic2V0dXBcIjogW1xuKyAgICAgICAgICAgIFwiZWNobyBcXFwiMSAxIDhcXFwiIFx1MDAzZSAvc3lzL2J1cy9uZXRkZXZzaW0vbmV3X2RldmljZVwiXG4rICAgICAgICBdLFxuKyAgICAgICAgXCJjbWRVbmRlclRlc3RcIjogXCIkVEMgcWRpc2MgYWRkIGRldiAkRVRIIHJvb3QgaGFuZGxlIDE6IHRhcHJpbyBudW1fdGMgMiBxdWV1ZXMgMUAwIDFAMSBzY2hlZC1lbnRyeSBTIDAxIDUwMDAwIHNjaGVkLWVudHJ5IFMgMDIgNTAwMDAgY2xvY2tpZCBDTE9DS19UQUlcIixcbisgICAgICAgIFwiZXhwRXhpdENvZGVcIjogXCIyXCIsXG4rICAgICAgICBcInZlcmlmeUNtZFwiOiBcIiRUQyBxZGlzYyBzaG93IGRldiAkRVRIXCIsXG4rICAgICAgICBcIm1hdGNoUGF0dGVyblwiOiBcInFkaXNjIHRhcHJpbyAxOiByb290IHJlZmNudFwiLFxuKyAgICAgICAgXCJtYXRjaENvdW50XCI6IFwiMFwiLFxuKyAgICAgICAgXCJ0ZWFyZG93blwiOiBbXG4rICAgICAgICAgICAgXCJlY2hvIFxcXCIxXFxcIiBcdTAwM2UgL3N5cy9idXMvbmV0ZGV2c2ltL2RlbF9kZXZpY2VcIlxuKyAgICAgICAgXVxuKyAgICB9LFxuICAgICB7XG4gICAgICAgICBcImlkXCI6IFwiODMxZlwiLFxuICAgICAgICAgXCJuYW1lXCI6IFwiQWRkIHRhcHJpbyBRZGlzYyB3aXRoIHRvbyBzaG9ydCBjeWNsZS10aW1lXCIsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQwNjo1ODowMS43MTAzNDcyODNaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0OTAzNTk4OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgdGFwcmlvIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvc2NoZWQvc2NoX3RhcHJpby5jYCBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgaXQncyBkZWFsaW5nIHdpdGggc29mdHdhcmUgc2NoZWR1bGluZywgc3BlY2lmaWNhbGx5IGFpbWluZyB0byBwcmV2ZW50IENQVSBzdG9ybXMgZnJvbSBoYXBwZW5pbmcgYmVjYXVzZSBvZiBocnRpbWVycyBnZXR0aW5nIG91dCBvZiBzeW5jLiBJdCBpbnRyb2R1Y2VzIHR3byBuZXcgZnVuY3Rpb25zLCBgdGFwcmlvX21pbl9pbnRlcnZhbCgpYCBhbmQgYHRhcHJpb19jYXRjaF91cCgpYC5cblxuYHRhcHJpb19taW5faW50ZXJ2YWwoKWAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGNhbGN1bGF0aW5nIGEgbWluaW11bSB0aW1lIGludGVydmFsIGJhc2VkIG9uIHBhY2tldCBzaXplIChgbGVuZ3RoX3RvX2R1cmF0aW9uKHEsIEVUSF9aTEVOKWApIGFuZCBhIGhhcmRjb2RlZCBtaW5pbXVtIChgVEFQUklPX01JTl9TV19JTlRFUlZBTF9OU2AsIHdoaWNoIGxvb2tzIHRvIGJlIDEwMHVzKS4gVGhpcyBpcyBsaWtlbHkgYSBndWFyZHJhaWwgdG8gcHJldmVudCB0aGluZ3MgZnJvbSBmaXJpbmcgdG9vIHJhcGlkbHksIHBvdGVudGlhbGx5IHN3YW1waW5nIHRoZSBDUFUgd2l0aCB0aW1lciBpbnRlcnJ1cHRzLlxuXG5gdGFwcmlvX2NhdGNoX3VwKClgIGlzIHRoZSBtb3JlIGludGVyZXN0aW5nIG9uZS4gSXQga2lja3MgaW4gd2hlbiB0aGUgc2NoZWR1bGUgaXMgYmVoaW5kIHJlYWwtdGltZS4gSXQncyBza2lwcGluZyBjb21wbGV0ZSBjeWNsZXMgYXJpdGhtZXRpY2FsbHkgaWYgdGhlIG9wZXJhdGlvbmFsIHNjaGVkdWxlIGhhcyBmYWxsZW4gYmVoaW5kIGR1ZSB0byBkZWxheWVkIHRpbWVycyBvciBjbG9jayBzdGVwcywgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBpbiB0aGlzIGNvbnRleHQuIEl0J3MgdXBkYXRpbmcgYG5leHRgLCBgbmV4dF9zdGFydGAsIGFuZCBgZW5kX3RpbWVgIHRvIGdldCB0aGluZ3MgYmFjayBvbiB0cmFjay5cblxuTG9va2luZyBhdCB0aGUgY29kZSwgdGhlIGNoYW5nZXMgYXJlIGFsbCBsb2dpYy1iYXNlZC4gSXQncyB0aW1lciBjYWxjdWxhdGlvbnMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlJ3Mgbm8gaW50cm9kdWN0aW9uIG9mIG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlIGFsbG9jYXRpb25zLCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgbm8gY2hhbmdlcyB0aGF0IEkgY2FuIHNlZSB0aGF0IHdvdWxkIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoYXQncyBhIGh1Z2UgcmVsaWVmLlxuXG5UaGUgcm9vdCBjYXVzZSB0aGlzIHBhdGNoIGlzIGZpeGluZyBpcyBsaWtlbHkgYSBDUFUgc3RhbGwgb3Igc3Rvcm0uIFRoZSBocnRpbWVyIGlzIGVpdGhlciBmaXJpbmcgdG9vIGZyZXF1ZW50bHksIG9yIHRoZSBzY2hlZHVsZXIgaGFzIGZhbGxlbiBiZWhpbmQgYW5kIGlzIHRyeWluZyB0byByZXBsYXkgYSBodWdlIGJhY2tsb2cgb2YgZXZlbnRzLlxuXG5HaXZlbiBhbGwgdGhpcywgSSBhbSBjb25maWRlbnQgdGhhdCBLTVNBTiAoS2VybmVsIE1lbW9yeSBTYW5pdGl6ZXIpIGlzICpub3QqIG5lY2Vzc2FyeSBoZXJlLiBUaGUgcGF0Y2ggZG9lc24ndCBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBLQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzIGFyZSBtb3JlIHRoYW4gc3VmZmljaWVudCB0byBjYXRjaCBtZW1vcnkgY29ycnVwdGlvbiBvciBsb2NraW5nIGlzc3Vlcy5cblxuSSd2ZSB0YWtlbiBhIGNsb3NlciBsb29rIGF0IGB0YXByaW9fY2F0Y2hfdXAoKWAgYWdhaW4ganVzdCB0byBiZSBzdXJlLiBJIGNhbiB2ZXJpZnkgdGhhdCBhbGwgdGhlIGtleSBkYXRhLCBgb3BlcmAsIGBuZXh0YCwgYG5leHRfc3RhcnRgLCBhbmQgYGVuZF90aW1lYCwgYXJlIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgdGhlcmUncyBubyB3YXkgdGhhdCB0aGUgZnVuY3Rpb24gY291bGQgcG9zc2libHkgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGNvbmNsdXNpb24gaXMgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgc2hvdWxkIGJlIHNldCB0byBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTg2LCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDA2OjU4OjEyLjIwMDcxMTMyMVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHRhcHJpbyBzY2hlZHVsZXIgdG8gZW5mb3JjZSBhIG1pbmltdW0gc29mdHdhcmUgaW50ZXJ2YWwgYW5kIGludHJvZHVjZXMgYSBjYXRjaC11cCBtZWNoYW5pc20gZm9yIGRlbGF5ZWQgaHJ0aW1lcnMgdG8gcHJldmVudCBDUFUgc3Rvcm1zLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgYXJpdGhtZXRpYyBjYWxjdWxhdGlvbnMgb24ga3RpbWVfdCB2YXJpYWJsZXMsIGxvb3AgY29uZGl0aW9ucywgYW5kIGludGVydmFsIGJvdW5kcyBjaGVja3MuIFRoZXJlIGFyZSBubyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFsbG9jYXRlZCwgbm8gY2hhbmdlcyB0byBob3cgZGF0YSBpcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIHJlbGF0ZWQgdG8gbG9naWMgZXJyb3JzLCBpbmZpbml0ZSBsb29wcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQga2VybmVsIGRlYnVnZ2luZyB0b29scy4gQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6lt9k[1] Phase: Succeeded StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 06:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 06:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2] Phase: Succeeded StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 06:58:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-20 06:58:24 +0000 UTC FinishedAt: 2026-08-20 06:58:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2611628829/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-20 06:58:34 +0000 UTC FinishedAt: 2026-08-20 07:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-20 06:58:34 +0000 UTC FinishedAt: 2026-08-20 07:14:47 +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:*9a400ae2-2561-49c4-baff-dea4bf861bc4,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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2611628829/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": "04b65707-b2be-496d-97d3-4f79539e82ec", "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-workflow6lt9k/series-workflow6lt9k-build-action-2623454291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-20 06:58:34 +0000 UTC FinishedAt: 2026-08-20 07:14:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*9a400ae2-2561-49c4-baff-dea4bf861bc4,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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2611628829/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": "04b65707-b2be-496d-97d3-4f79539e82ec", "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-workflow6lt9k/series-workflow6lt9k-build-action-2623454291/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-20 07:14:47 +0000 UTC FinishedAt: 2026-08-20 07:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-20 07:14:47 +0000 UTC FinishedAt: 2026-08-20 07:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-20 07:14:47 +0000 UTC FinishedAt: 2026-08-20 07:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-20 07:14:47 +0000 UTC FinishedAt: 2026-08-20 07:14:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2031525112/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-20 07:14:57 +0000 UTC FinishedAt: 2026-08-20 07:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-20 07:14:57 +0000 UTC FinishedAt: 2026-08-20 07:16:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04b65707-b2be-496d-97d3-4f79539e82ec,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-workflow6lt9k/series-workflow6lt9k-build-action-2623454291/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-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-20 07:16:58 +0000 UTC FinishedAt: 2026-08-20 07:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-20 07:16:58 +0000 UTC FinishedAt: 2026-08-20 07:16:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-20 07:16:58 +0000 UTC FinishedAt: 2026-08-20 07:33:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-20 07:16:58 +0000 UTC FinishedAt: 2026-08-20 07:33:29 +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:*9a400ae2-2561-49c4-baff-dea4bf861bc4,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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2031525112/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": "e139ae02-098e-43c1-ab72-91fdf4831ef2", "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-workflow6lt9k/series-workflow6lt9k-build-action-46154212/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-20 07:16:58 +0000 UTC FinishedAt: 2026-08-20 07:33:19 +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:*9a400ae2-2561-49c4-baff-dea4bf861bc4,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-workflow6lt9k/series-workflow6lt9k-convert-artifact-2031525112/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": "e139ae02-098e-43c1-ab72-91fdf4831ef2", "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-workflow6lt9k/series-workflow6lt9k-build-action-46154212/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-20 07:33:29 +0000 UTC FinishedAt: 2026-08-20 07:33:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-20 07:33:29 +0000 UTC FinishedAt: 2026-08-20 07:33:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-20 07:33:29 +0000 UTC FinishedAt: 2026-08-20 07:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-20 07:33:29 +0000 UTC FinishedAt: 2026-08-20 07:35:30 +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:*e139ae02-098e-43c1-ab72-91fdf4831ef2,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-workflow6lt9k/series-workflow6lt9k-build-action-46154212/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-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"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:*04b65707-b2be-496d-97d3-4f79539e82ec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e139ae02-098e-43c1-ab72-91fdf4831ef2,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-workflow6lt9k/series-workflow6lt9k-build-action-2623454291/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-workflow6lt9k/series-workflow6lt9k-build-action-46154212/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 07:35:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 07:35:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"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-workflow6lt9k/series-workflow6lt9k-convert-artifact-1142012753/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 07:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 07:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-20 07:35:39 +0000 UTC FinishedAt: 2026-08-20 07:35:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-20 07:35:49 +0000 UTC FinishedAt: 2026-08-20 10:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6lt9k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["taprio_change","taprio_init","advance_sched"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"564973a259ec76f2dad0853420e7034cc43994c4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED","NET_SCH_TAPRIO"],"series_id":"64cdeaeb-dcaa-4675-b5fe-6743fcd15246","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-20 07:35:49 +0000 UTC FinishedAt: 2026-08-20 10:41:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*04b65707-b2be-496d-97d3-4f79539e82ec,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e139ae02-098e-43c1-ab72-91fdf4831ef2,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-workflow6lt9k/series-workflow6lt9k-build-action-2623454291/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-workflow6lt9k/series-workflow6lt9k-build-action-46154212/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-workflow6lt9k/series-workflow6lt9k-convert-artifact-1142012753/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,}