Name: series-workflow8mh9g Phase: Failed StartedAt: 2026-09-10 12:54:47 +0000 UTC FinishedAt: 2026-09-10 12:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mh9g[0] Phase: Succeeded StartedAt: 2026-09-10 12:54:47 +0000 UTC FinishedAt: 2026-09-10 12:56:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mh9g[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 12:54:47 +0000 UTC FinishedAt: 2026-09-10 12:56:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIG1hbiBwYWdlcyAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBmb3IgdGhlIGZpbGVfZ2V0YXR0ciBhbmQgZmlsZV9zZXRhdHRyIHN5c2NhbGxzIGFuZCBzdHJ1Y3QgZmlsZV9hdHRyLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZSBvciBleGVjdXRhYmxlIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMjo1NjowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMmQ5YTZkMzM4YTVlOVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcbkBAIC0wLDAgJiM0MzsxLDI3OSBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbiYjNDM7LlNIIE5BTUVcbiYjNDM7ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzOy5TSCBTWU5PUFNJU1xuJiM0MzsubmZcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogXCYjMzQ7IEFUXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAgICAvKiBzdHJ1Y3QgXCYjMzQ7IGZpbGVfYXR0ciBcJiMzNDsgYW5kIFwmIzM0OyBGU19YRkxBR18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogXCYjMzQ7IFNZU18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7LlBcbiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwmIzM0OyBmYXR0ciBcJiMzNDssIHNpemVfdCBcJiMzNDsgc2l6ZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCYjMzQ7IGZsYWdzICk7XG4mIzQzOy5maVxuJiM0MzsuUFxuJiM0MzsuSVIgTm90ZSA6XG4mIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKCksXG4mIzQzO3VzZVxuJiM0MzsuQlIgc3lzY2FsbCAoMilcbiYjNDM7aW5zdGVhZC5cbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO1RoZVxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpXG4mIzQzO3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuJiM0Mztmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuUFxuJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbiYjNDM7LkIgRlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb24sXG4mIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSxcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKVxuJiM0MztjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7ZnJvbSBhbGwgZmlsZSB0eXBlcyxcbiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyXG4mIzQzO2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO1RoZSBzcGVjaWFsIHZhbHVlXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO2JlZm9yZSBjYWxsaW5nXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcbiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVBQ0NFU1xuJiM0MztTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBidXRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgbmVpdGhlclxuJiM0MzsuQiBBVF9GRENXRFxuJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIHNwZWNpZmllZCxcbiYjNDM7YnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUxPT1BcbiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTkFNRVRPT0xPTkdcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgdG9vIGxvbmcuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9FTlRcbiYjNDM7QSBjb21wb25lbnQgb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7ZG9lcyBub3QgZXhpc3QsXG4mIzQzO29yXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PTUVNXG4mIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9URElSXG4mIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGFuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXG4mIzQzOy5UUFxuJiM0MzsuQiBFT1BOT1RTVVBQXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IDYuMTdcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcbiYjNDM7RlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGUuXG4mIzQzOy5TSCBOT1RFU1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IGFsbG93cyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXG4mIzQzO3doaWNoIHZlcnNpb24gb2YgdGhlXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXG4mIzQzO2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4mIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4mIzQzOy5QXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXG4mIzQzO29ubHkgdGhlIGZpZWxkcyB0aGF0IGZpdCB3aXRoaW5cbiYjNDM7Lkkgc2l6ZVxuJiM0Mzt3aWxsIGJlIGZpbGxlZCBpbi5cbiYjNDM7SWZcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBsYXJnZXIgdGhhbiB0aGUga2VybmVsJiMzOTtzIHN0cnVjdHVyZSBzaXplLFxuJiM0Mzt0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cbiYjNDM7LlNIIEVYQU1QTEVTXG4mIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MzsuUFxuJiM0MzsuaW4gJiM0Mzs0blxuJiM0MzsuRVhcbiYjNDM7I2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztpbnRcbiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0Mzt7XG4mIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4mIzQzOyAgICBsb25nIHJldDtcbiYjNDM7XG4mIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7XG4mIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwmIzM0O1VzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCYjMzQ7LCBhcmd2WzBdKTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xuJiM0MzsgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIHByaW50ZihcJiMzNDtGaWxlIGF0dHJpYnV0ZXM6XFxcXG5cJiMzNDspO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgeGZsYWdzOiAgICAgMHglbGx4XFxcXG5cJiMzNDssICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7ICAgIHByaW50ZihcJiMzNDsgIGV4dHNpemU6ICAgICV1XFxcXG5cJiMzNDssIGZhLmZhX2V4dHNpemUpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgbmV4dGVudHM6ICAgJXVcXFxcblwmIzM0OywgZmEuZmFfbmV4dGVudHMpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgcHJvamlkOiAgICAgJXVcXFxcblwmIzM0OywgZmEuZmFfcHJvamlkKTtcbiYjNDM7ICAgIHByaW50ZihcJiMzNDsgIGNvd2V4dHNpemU6ICV1XFxcXG5cJiMzNDssIGZhLmZhX2Nvd2V4dHNpemUpO1xuJiM0MztcbiYjNDM7ICAgIC8qXG4mIzQzOyAgICAgKiBUcnkgc2V0dGluZyBOT0RVTVAgZmxhZyB3aXRoIGNoYXR0ciAmIzQzO2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXG4mIzQzOyAgICAgKi9cbiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcbiYjNDM7ICAgICAgICBwcmludGYoXCYjMzQ7ICBOT0RVTVAgZmxhZyBpcyBzZXRcXFxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MzsgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuJiM0Mzt9XG4mIzQzOy5FRVxuJiM0MzsuaW5cbiYjNDM7LlNIIFNFRSBBTFNPXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLFxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSksXG4mIzQzOy5CUiBpb2N0bCAoMiksXG4mIzQzOy5CUiBpb2N0bF9mcyAoMiksXG4mIzQzOy5CUiBvcGVuYXQgKDIpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmMzNDBiZGNhYjA2NTRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5AQCAtMCwwICYjNDM7MSwzMzMgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfc2V0YXR0ciBcXC0gc2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7Lm5mXG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgXCYjMzQ7IEFUXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAgICAvKiBEZWZpbml0aW9uIG9mIFwmIzM0OyBGSUxFX0FUVFJfKiBcXFxuJiM0MztcJiMzNDsgYW5kIFwmIzM0OyBGU19YRkxBR18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogRGVmaW5pdGlvbiBvZiBcJiMzNDsgU1lTXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MzsuUFxuJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0cixcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIGludCBcJiMzNDsgZGlyZmQgXCYjMzQ7LCBjb25zdCBjaGFyICpcJiMzNDsgcGF0aG5hbWUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCYjMzQ7IGZhdHRyIFwmIzM0Oywgc2l6ZV90IFwmIzM0OyBzaXplICxcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBcJiMzNDsgZmxhZ3MgKTtcbiYjNDM7LmZpXG4mIzQzOy5QXG4mIzQzOy5JUiBOb3RlIDpcbiYjNDM7Z2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKSxcbiYjNDM7bmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBzeXNjYWxsICgyKS5cbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO1RoZVxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpXG4mIzQzO3N5c3RlbSBjYWxsIHNldHMgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzO29uIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuUFxuJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbiYjNDM7LkIgRlNfSU9DX0ZTU0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb24sXG4mIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcixcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKVxuJiM0MztjYW4gbWFuaXB1bGF0ZSBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbiYjNDM7b24gYWxsIGZpbGUgdHlwZXMsXG4mIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpXG4mIzQzO3doZXJlIG9wZW5pbmcgdGhlIGZpbGUgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIG9yIG1heSBub3QgYmUgcG9zc2libGUuXG4mIzQzO1dpdGhcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7aXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBvYnRhaW4gYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCByZWZlcnNcbiYjNDM7ZGlyZWN0bHkgdG8gdGhlIGZpbGVzeXN0ZW0gaW5vZGUgZm9yIHNwZWNpYWwgZmlsZXMuXG4mIzQzOy5QXG4mIzQzO0FzIHdpdGhcbiYjNDM7LkJSIG9wZW5hdCAoMiksXG4mIzQzO2lmXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlLFxuJiM0Mzt0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbiYjNDM7cmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxuJiM0MzsuSSBkaXJmZFxuJiM0Mzsob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcyxcbiYjNDM7aWZcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgdGhlIHNwZWNpYWwgdmFsdWVcbiYjNDM7LkJSIEFUX0ZEQ1dEICkuXG4mIzQzO0lmXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFic29sdXRlLFxuJiM0Mzt0aGVuXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGlnbm9yZWQuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBmYXR0clxuJiM0Mzthcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlLFxuJiM0Mzt3aGljaCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdG8gc2V0IG9uIHRoZSBmaWxlLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0ciAoMnR5cGUpLlxuJiM0MztVc2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlXG4mIzQzOy5CIGZpbGVfZ2V0YXR0cigyKVxuJiM0Mzt0byBpbml0aWFsaXplXG4mIzQzOy5JIHN0cnVjdCBmYXR0clxuJiM0MztiZWZvcmVoYW5kLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBmbGFnc1xuJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnlcbiYjNDM7LkkgZGlyZmRcbiYjNDM7KHdoaWNoIG1heSBoYXZlIGJlZW4gb2J0YWluZWQgdXNpbmcgdGhlXG4mIzQzOy5CUiBvcGVuICgyKVxuJiM0MzsuQiBPX1BBVEhcbiYjNDM7ZmxhZykuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDpcbiYjNDM7aW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQgKGkuZS4sIGlmIHRoaXMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkKSxcbiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC5cbiYjNDM7LlNIIFJFVFVSTiBWQUxVRVxuJiM0MztPbiBzdWNjZXNzLFxuJiM0Mzt6ZXJvIGlzIHJldHVybmVkLlxuJiM0MztPbiBlcnJvcixcbiYjNDM7XFwtMSBpcyByZXR1cm5lZCxcbiYjNDM7YW5kXG4mIzQzOy5JIGVycm5vXG4mIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXG4mIzQzOy5TSCBFUlJPUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEUyQklHXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgbGFyZ2VyIHRoYW5cbiYjNDM7LkJSIFBBR0VfU0laRSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2luZGljYXRlcyB0aGUgdmVyc2lvbiB3aGljaCBrZXJuZWwgZG9lc24mIzM5O3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4mIzQzO2tlcm5lbCBleHBlY3RzKSBhbmQgbmV3IGZpZWxkcyBhcmUgbm9uLXplcm8uXG4mIzQzOy5UUFxuJiM0MzsuQiBFQUNDRVNcbiYjNDM7U2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXG4mIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsoU2VlIGFsc29cbiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKVxuJiM0MzsuVFBcbiYjNDM7LkIgRUJBREZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUgYnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIG5laXRoZXJcbiYjNDM7LkIgQVRfRkRDV0RcbiYjNDM7bm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUJBREZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MzsuQiBBVF9FTVBUWV9QQVRIXG4mIzQzO3dhcyBzcGVjaWZpZWQgaW5cbiYjNDM7LklSIGZsYWdzICxcbiYjNDM7YW5kXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUlOVkFMXG4mIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpblxuJiM0MzsuSSBmYXR0clxuJiM0Mztmb3IgdGhpcyB0eXBlIG9mIGZpbGUgb3IgZmlsZXN5c3RlbS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVMT09QXG4mIzQzO1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZ1xuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5BTUVUT09MT05HXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHRvbyBsb25nLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PRU5UXG4mIzQzO0EgY29tcG9uZW50IG9mXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2RvZXMgbm90IGV4aXN0LFxuJiM0MztvclxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIG5vdCBzcGVjaWZpZWQgaW5cbiYjNDM7LklSIGZsYWdzIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT01FTVxuJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PVERJUlxuJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgbm90IGEgZGlyZWN0b3J5IG9yLFxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBhbmRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgRU9QTk9UU1VQUFxuJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFUEVSTVxuJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9uc1xuJiM0Mzt0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbiYjNDM7LlRQXG4mIzQzOy5CIEVST0ZTXG4mIzQzO1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4mIzQzOy5TSCBISVNUT1JZXG4mIzQzOy5TUyBMaW51eCA2LjE3XG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4mIzQzO0ZTX0lPQ19GU1NFVFhBVFRSXG4mIzQzOy5CUiBpb2N0bCAoMilcbiYjNDM7d2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbiYjNDM7LlNIIE5PVEVTXG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cbiYjNDM7VGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXG4mIzQzO3doaWNoIHZlcnNpb24gb2YgdGhlXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXG4mIzQzO2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4mIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4mIzQzOy5QXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXG4mIzQzO3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbiYjNDM7KHdoaWNoIGlzIGEgbm8tb3ApLlxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIGxhcmdlciB0aGFuIGV4cGVjdGVkLFxuJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87XG4mIzQzO2lmIG5vdCxcbiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aFxuJiM0MzsuQlIgRTJCSUcgLlxuJiM0MzsuU0ggRVhBTVBMRVNcbiYjNDM7VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKVxuJiM0Mzt0byBzZXQgdGhlXG4mIzQzOy5CIEZTX1hGTEFHX05PRFVNUFxuJiM0MztmbGFnIG9uIGEgZmlsZS5cbiYjNDM7LlBcbiYjNDM7LmluICYjNDM7NG5cbiYjNDM7LkVYXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjaWZuZGVmIFNZU19maWxlX3NldGF0dHJcbiYjNDM7I2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO2ludFxuJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4mIzQzO3tcbiYjNDM7ICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbiYjNDM7ICAgIGludCBkZmQ7XG4mIzQzOyAgICBsb25nIHJldDtcbiYjNDM7XG4mIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7XG4mIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwmIzM0O1VzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCYjMzQ7LCBhcmd2WzBdKTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgZGZkID0gb3Blbihhcmd2WzFdLCBPX1JET05MWSk7XG4mIzQzOyAgICBpZiAoZGZkID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7b3BlblwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbiYjNDM7ICAgIGlmIChyZXQgPT0gXFwtMSkge1xuJiM0MzsgICAgICAgIHBlcnJvcihcJiMzNDtmaWxlX2dldGF0dHJcJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7Q3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cJiMzNDssICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7XG4mIzQzOyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuJiM0MztcbiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbiYjNDM7ICAgIGlmIChyZXQgPT0gXFwtMSkge1xuJiM0MzsgICAgICAgIHBlcnJvcihcJiMzNDtmaWxlX3NldGF0dHJcJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuJiM0MzsgICAgICAgIHByaW50ZihcJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuJiM0MztcbiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcbiYjNDM7fVxuJiM0MzsuRUVcbiYjNDM7LmluXG4mIzQzOy5TSCBTRUUgQUxTT1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKSxcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7LkJSIGlvY3RsX2ZzICgyKSxcbiYjNDM7LkJSIG9wZW5hdCAoMiksXG4mIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNylcbmRpZmYgLS1naXQgYS9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlIGIvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZVxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZkNDI2YzE5ZjVmMGJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbkBAIC0wLDAgJiM0MzsxLDE4NyBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfYXR0ciBcXC0gZGVzY3JpYmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMgdG8gZ2V0IG9yIHNldFxuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7LkVYXG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiYjNDM7LlBcbiYjNDM7LkIgc3RydWN0IGZpbGVfYXR0ciB7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7XCYjMzQ7IFwmIzM0OyAgICAgLyogRXh0ZW5kZWQgZmxhZ3MgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX2V4dHNpemU7XCYjMzQ7IFwmIzM0OyAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9uZXh0ZW50cztcJiMzNDsgXCYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDtcJiMzNDsgXCYjMzQ7ICAgICAvKiBQcm9qZWN0IGlkZW50aWZpZXIgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX2Nvd2V4dHNpemU7XCYjMzQ7IFwmIzM0OyAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wmIzM0O1xuJiM0MzsuQiB9O1xuJiM0MzsuRUVcbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuJiM0Mztmb3IgdXNlIHdpdGggdGhlXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpXG4mIzQzO2FuZFxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKVxuJiM0MztzeXN0ZW0gY2FsbHMuXG4mIzQzOy5QXG4mIzQzO1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4mIzQzOy5UUFxuJiM0MzsuSSBmYV94ZmxhZ3NcbiYjNDM7VGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbiYjNDM7SXQgaXMgYSBiaXQgbWFzayBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBvZiB0aGVcbiYjNDM7LkIgRlNfWEZMQUdfKlxuJiM0MztmbGFncy5cbiYjNDM7UmVmZXIgdG8gdGhlIHNlY3Rpb25cbiYjNDM7LkIgRkxBR1NcbiYjNDM7YmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9leHRzaXplXG4mIzQzO0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplXG4mIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfbmV4dGVudHNcbiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS5cbiYjNDM7VGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMilcbiYjNDM7YW5kIGlzIGlnbm9yZWQgYnlcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9wcm9qaWRcbiYjNDM7UHJvamVjdCBpZGVudGlmaWVyLlxuJiM0MztVc2VkIGJ5IHF1b3RhIHN5c3RlbXMgdG8gZ3JvdXAgcmVsYXRlZCBmaWxlcy5cbiYjNDM7LlRQXG4mIzQzOy5JIGZhX2Nvd2V4dHNpemVcbiYjNDM7Q29weS1vbi1Xcml0ZSAoQ29XKSBleHRlbnQgc2l6ZSBoaW50IGluIGJ5dGVzLlxuJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplXG4mIzQzO2ZvciBDb1cgb3BlcmF0aW9ucy5cbiYjNDM7LlNIIEZMQUdTXG4mIzQzO0ZsYWdzIGNhbiBiZTpcbiYjNDM7LlJTXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRVxuJiM0MztEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRVxuJiM0MztGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0FQUEVORFxuJiM0MztBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19TWU5DXG4mIzQzO0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRVxuJiM0MztEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT0RVTVBcbiYjNDM7RG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfREFYXG4mIzQzO1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHXG4mIzQzO0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNXG4mIzQzO1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRVxuJiM0MztVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbiYjNDM7LkkgZmFfZXh0c2l6ZVxuJiM0MztmaWVsZC5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0NPV0VYVFNJWkVcbiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZVxuJiM0MzsuSSBmYV9jb3dleHRzaXplXG4mIzQzO2ZpZWxkLlxuJiM0MzsuUkVcbiYjNDM7LlBcbiYjNDM7RGlyZWN0b3J5IG9ubHkgZmxhZ3M6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUlRJTkhFUklUXG4mIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT1NZTUxJTktTXG4mIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRVhUU1pJTkhFUklUXG4mIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19QUk9KSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuXG4mIzQzOy5SRVxuJiM0MzsuUFxuJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0NcbiYjNDM7RmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSXG4mIzQzO0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19WRVJJVFlcbiYjNDM7RmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRFxuJiM0MztUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4mIzQzO2NvbXBhcmlzb25zIGlnbm9yZSBjYXNlKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHByZXNlcnZlIHRoZSBjYXNlIG9mIGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lcy5cbiYjNDM7LlJFXG4mIzQzOy5QXG4mIzQzO05vdCBhbGwgZmlsZXN5c3RlbXMgc3VwcG9ydCBhbGwgZmxhZ3MuXG4mIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhblxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7b3JcbiYjNDM7LkIgRU9QTk9UU1VQUFxuJiM0MztlcnJvci5cbiYjNDM7LlNIIFZFUlNJT05TXG4mIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZVxuJiM0MztUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuJiM0MzsuQiBGSUxFX0FUVFJfU0laRV9WRVIqXG4mIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC5cbiYjNDM7VGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0b1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKVxuJiM0MzthbmRcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4mIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHJcXGZQLlxuJiM0MzsuU1MgRklMRV9BVFRSX1NJWkVfVkVSMFxuJiM0MztTaXplIGlzIDI0IGJ5dGVzLlxuJiM0MzsuU0ggSElTVE9SWVxuJiM0MzsuU1MgTGludXggdjYuMTdcbiYjNDM7VGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbiYjNDM7VGhlXG4mIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHJcbiYjNDM7cHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4mIzQzOy5JIHN0cnVjdCBmc3hhdHRyXG4mIzQzO3VzZWQgYnkgdGhlXG4mIzQzOy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4mIzQzO2FuZFxuJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO29wZXJhdGlvbnMsXG4mIzQzO2J1dCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlIHRocm91Z2ggdGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuXG4mIzQzOy5QXG4mIzQzO0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3NcbiYjNDM7Zm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzdHJ1Y3R1cmUuXG4mIzQzO1RoZXJlZm9yZSwgYSB1c2VyXG4mIzQzOy5JIG11c3RcbiYjNDM7emVyby1maWxsIHRoZSBzdHJ1Y3R1cmUgb24gaW5pdGlhbGl6YXRpb24gdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXJcbiYjNDM7a2VybmVscy5cbiYjNDM7LlNTIExpbnV4IHY3LjJcbiYjNDM7VGhlIEZTX1hGTEFHX0NBU0VGT0xEIGFuZCBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklORyBhcmUgaW50cm9kdWNlZCB0byBlbmFibGVcbiYjNDM7dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4mIzQzOy5TSCBTRUUgQUxTT1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKSxcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGEyOWM2MmFlYmNjNzYzNjcxNWZjOGQ5ZDMwMDY2ZTJjNzRjOTgwMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yZDlhNmQzMzhhNWU5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIKQEAgLTAsMCAmIzQzOzEsMjc5IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfZ2V0YXR0ciAyIChkYXRlKSAmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZCkmIzM0OwomIzQzOy5TSCBOQU1FCiYjNDM7ZmlsZV9nZXRhdHRyIFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXMKJiM0MzsuU0ggU1lOT1BTSVMKJiM0MzsubmYKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZmNudGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qICYjMzQ7IEFUXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsmIzM0OyAmIzM0OyAgICAgICAgIC8qIHN0cnVjdCAmIzM0OyBmaWxlX2F0dHIgJiMzNDsgYW5kICYjMzQ7IEZTX1hGTEFHXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qICYjMzQ7IFNZU18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkIgI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOy5QCiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgaW50ICYjMzQ7IGRpcmZkICYjMzQ7LCBjb25zdCBjaGFyIComIzM0OyBwYXRobmFtZSAsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqJiMzNDsgZmF0dHIgJiMzNDssIHNpemVfdCAmIzM0OyBzaXplICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgJiMzNDsgZmxhZ3MgKTsKJiM0MzsuZmkKJiM0MzsuUAomIzQzOy5JUiBOb3RlIDoKJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvcgomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCksCiYjNDM7dXNlCiYjNDM7LkJSIHN5c2NhbGwgKDIpCiYjNDM7aW5zdGVhZC4KJiM0MzsuU0ggREVTQ1JJUFRJT04KJiM0MztUaGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpCiYjNDM7c3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzCiYjNDM7ZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5QCiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlCiYjNDM7LkIgRlNfSU9DX0ZTR0VUWEFUVFIKJiM0MzsuQlIgaW9jdGwgKDIpCiYjNDM7b3BlcmF0aW9uLAomIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC4KJiM0MztCeSB1c2luZyBhIHBhdGhuYW1lLAomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0MztjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMKJiM0Mztmcm9tIGFsbCBmaWxlIHR5cGVzLAomIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlcgomIzQzO2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS4KJiM0MzsuUAomIzQzO0FzIHdpdGgKJiM0MzsuQlIgb3BlbmF0ICgyKSwKJiM0MztpZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUsCiYjNDM7dGhlbiBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CiYjNDM7cmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvcgomIzQzOy5JUiBkaXJmZCAuCiYjNDM7VGhlIHNwZWNpYWwgdmFsdWUKJiM0MzsuQiBBVF9GRENXRAomIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYWJzb2x1dGUsCiYjNDM7dGhlbgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgaWdub3JlZC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZhdHRyCiYjNDM7YXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUuCiYjNDM7VGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBmaWxsZWQgd2l0aCBmaWxlIGF0dHJpYnV0ZXMuCiYjNDM7VGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluCiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKJiM0MzsuSVIgZmF0dHIgLgomIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0bwomIzQzOy5CIGZpbGVfYXR0cigydHlwZSkKJiM0Mztmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLgomIzQzOy5QCiYjNDM7VXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgemVyby1pbml0aWFsaXplCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO2JlZm9yZSBjYWxsaW5nCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO3RvIGVuc3VyZSB0aGF0IGZpZWxkcyBub3QgZmlsbGVkIGluIGJ5IG9sZGVyIGtlcm5lbHMKJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrLCBhdmFpbGFibGUgZmxhZ3MgYXJlOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSVIgZGlyZmQgLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDsKJiM0MztpbnN0ZWFkIGdldCBhdHRyaWJ1dGVzIG9mIHRoZSBzeW1ib2xpYyBsaW5rIGlub2RlIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0LCBzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLgomIzQzOy5TSCBSRVRVUk4gVkFMVUUKJiM0MztPbiBzdWNjZXNzLAomIzQzO3plcm8gaXMgcmV0dXJuZWQuCiYjNDM7T24gZXJyb3IsCiYjNDM7XC0xIGlzIHJldHVybmVkLAomIzQzO2FuZAomIzQzOy5JIGVycm5vCiYjNDM7aXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4KJiM0MzsuU0ggRVJST1JTCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aXMgdG9vIGJpZyAobGFyZ2VyIHRoYW4KJiM0MzsuQlIgUEFHRV9TSVpFICkuCiYjNDM7LlRQCiYjNDM7LkIgRUFDQ0VTCiYjNDM7U2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzCiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mCiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUgYnV0CiYjNDM7LkkgZGlyZmQKJiM0MztpcyBuZWl0aGVyCiYjNDM7LkIgQVRfRkRDV0QKJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuCiYjNDM7LlRQCiYjNDM7LkIgRUJBREYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZywKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7d2FzIHNwZWNpZmllZCwKJiM0MztidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVMT09QCiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nCiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuVFAKJiM0MzsuQiBFTkFNRVRPT0xPTkcKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHRvbyBsb25nLgomIzQzOy5UUAomIzQzOy5CIEVOT0VOVAomIzQzO0EgY29tcG9uZW50IG9mCiYjNDM7LkkgcGF0aG5hbWUKJiM0Mztkb2VzIG5vdCBleGlzdCwKJiM0MztvcgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nIGFuZAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpbgomIzQzOy5JUiBmbGFncyAuCiYjNDM7LlRQCiYjNDM7LkIgRU5PTUVNCiYjNDM7SW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS4KJiM0MzsuVFAKJiM0MzsuQiBFTk9URElSCiYjNDM7QSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBhbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS4KJiM0MzsuVFAKJiM0MzsuQiBFT1BOT1RTVVBQCiYjNDM7VGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLgomIzQzOy5TSCBISVNUT1JZCiYjNDM7LlNTIExpbnV4IDYuMTcKJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZQomIzQzO0ZTX0lPQ19GU0dFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZS4KJiM0MzsuU0ggTk9URVMKJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IGFsbG93cyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7b25seSB0aGUgZmllbGRzIHRoYXQgZml0IHdpdGhpbgomIzQzOy5JIHNpemUKJiM0Mzt3aWxsIGJlIGZpbGxlZCBpbi4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiB0aGUga2VybmVsJiMzOTtzIHN0cnVjdHVyZSBzaXplLAomIzQzO3RoZSBleHRyYSBieXRlcyBhcmUgemVyb2VkLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvc3lzY2FsbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKJiM0MzsKJiM0MzsjaWZuZGVmIFNZU19maWxlX2dldGF0dHIKJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3CiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7aW50CiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9OwomIzQzOyAgICBsb25nIHJldDsKJiM0MzsKJiM0MzsgICAgaWYgKGFyZ2MgIT0gMikgewomIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsICYjMzQ7VXNhZ2U6ICVzICZsdDtmaWxlbmFtZSZndDtcXG4mIzM0OywgYXJndlswXSk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgMCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7RmlsZSBhdHRyaWJ1dGVzOlxcbiYjMzQ7KTsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7ICB4ZmxhZ3M6ICAgICAweCVsbHhcXG4mIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIGV4dHNpemU6ICAgICV1XFxuJiMzNDssIGZhLmZhX2V4dHNpemUpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIG5leHRlbnRzOiAgICV1XFxuJiMzNDssIGZhLmZhX25leHRlbnRzKTsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7ICBwcm9qaWQ6ICAgICAldVxcbiYjMzQ7LCBmYS5mYV9wcm9qaWQpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIGNvd2V4dHNpemU6ICV1XFxuJiMzNDssIGZhLmZhX2Nvd2V4dHNpemUpOwomIzQzOwomIzQzOyAgICAvKgomIzQzOyAgICAgKiBUcnkgc2V0dGluZyBOT0RVTVAgZmxhZyB3aXRoIGNoYXR0ciAmIzQzO2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlCiYjNDM7ICAgICAqLwomIzQzOyAgICBpZiAoZmEuZmFfeGZsYWdzICZhbXA7IEZTX1hGTEFHX05PRFVNUCkKJiM0MzsgICAgICAgIHByaW50ZigmIzM0OyAgTk9EVU1QIGZsYWcgaXMgc2V0XFxuJiMzNDspOwomIzQzOwomIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CiYjNDM7fQomIzQzOy5FRQomIzQzOy5pbgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgaW9jdGwgKDIpLAomIzQzOy5CUiBpb2N0bF9mcyAoMiksCiYjNDM7LkJSIG9wZW5hdCAoMikKZGlmZiAtLWdpdCBhL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yIGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYzM0MGJkY2FiMDY1NAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yCkBAIC0wLDAgJiM0MzsxLDMzMyBAQAomIzQzOy5cJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QKJiM0MzsuXCYjMzQ7CiYjNDM7LlwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0CiYjNDM7LlwmIzM0OwomIzQzOy5USCBmaWxlX3NldGF0dHIgMiAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfc2V0YXR0ciBcLSBzZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7Lm5mCiYjNDM7LkJSICYjMzQ7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7JiMzNDsgJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mICYjMzQ7IEFUXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsmIzM0OyAmIzM0OyAgICAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgRklMRV9BVFRSXyogXAomIzQzOyYjMzQ7IGFuZCAmIzM0OyBGU19YRkxBR18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkJSICYjMzQ7I2luY2x1ZGUgJmx0O3N5cy9zeXNjYWxsLmgmZ3Q7JiMzNDsgJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mICYjMzQ7IFNZU18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkIgI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOy5QCiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgaW50ICYjMzQ7IGRpcmZkICYjMzQ7LCBjb25zdCBjaGFyIComIzM0OyBwYXRobmFtZSAsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqJiMzNDsgZmF0dHIgJiMzNDssIHNpemVfdCAmIzM0OyBzaXplICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgJiMzNDsgZmxhZ3MgKTsKJiM0MzsuZmkKJiM0MzsuUAomIzQzOy5JUiBOb3RlIDoKJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvcgomIzQzOy5CUiBmaWxlX3NldGF0dHIgKCksCiYjNDM7bmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mCiYjNDM7LkJSIHN5c2NhbGwgKDIpLgomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO1RoZQomIzQzOy5CUiBmaWxlX3NldGF0dHIgKCkKJiM0MztzeXN0ZW0gY2FsbCBzZXRzIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzO29uIHRoZSBmaWxlIHNwZWNpZmllZCBieQomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlAKJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUKJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0MztvcGVyYXRpb24sCiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLgomIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUgaW5zdGVhZCBvZiByZXF1aXJpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzO29uIGFsbCBmaWxlIHR5cGVzLAomIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpCiYjNDM7d2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS4KJiM0MztXaXRoCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MztpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVycwomIzQzO2RpcmVjdGx5IHRvIHRoZSBmaWxlc3lzdGVtIGlub2RlIGZvciBzcGVjaWFsIGZpbGVzLgomIzQzOy5QCiYjNDM7QXMgd2l0aAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzO2lmCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSwKJiM0Mzt0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yCiYjNDM7LkkgZGlyZmQKJiM0Mzsob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcywKJiM0MztpZgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgdGhlIHNwZWNpYWwgdmFsdWUKJiM0MzsuQlIgQVRfRkRDV0QgKS4KJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYWJzb2x1dGUsCiYjNDM7dGhlbgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgaWdub3JlZC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZhdHRyCiYjNDM7YXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUsCiYjNDM7d2hpY2ggc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRvIHNldCBvbiB0aGUgZmlsZS4KJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW4KJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSkuCiYjNDM7VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZQomIzQzOy5CIGZpbGVfZ2V0YXR0cigyKQomIzQzO3RvIGluaXRpYWxpemUKJiM0MzsuSSBzdHJ1Y3QgZmF0dHIKJiM0MztiZWZvcmVoYW5kLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKJiM0MzsuSVIgZmF0dHIgLgomIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0bwomIzQzOy5CIGZpbGVfYXR0cigydHlwZSkKJiM0Mztmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSSBkaXJmZAomIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZQomIzQzOy5CUiBvcGVuICgyKQomIzQzOy5CIE9fUEFUSAomIzQzO2ZsYWcpLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDoKJiM0MztpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksCiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSAuCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIHdoaWNoIGtlcm5lbCBkb2VzbiYjMzk7dCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUKJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7KFNlZSBhbHNvCiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKQomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIG5laXRoZXIKJiM0MzsuQiBBVF9GRENXRAomIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzICwKJiM0MzthbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVJTlZBTAomIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpbgomIzQzOy5JIGZhdHRyCiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uCiYjNDM7LlRQCiYjNDM7LkIgRUxPT1AKJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmcKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5UUAomIzQzOy5CIEVOQU1FVE9PTE9ORwomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgdG9vIGxvbmcuCiYjNDM7LlRQCiYjNDM7LkIgRU5PRU5UCiYjNDM7QSBjb21wb25lbnQgb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2RvZXMgbm90IGV4aXN0LAomIzQzO29yCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFTk9NRU0KJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgomIzQzOy5UUAomIzQzOy5CIEVOT1RESVIKJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvciwKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGFuZAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEVPUE5PVFNVUFAKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuCiYjNDM7LlRQCiYjNDM7LkIgRVBFUk0KJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucwomIzQzO3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5UUAomIzQzOy5CIEVST0ZTCiYjNDM7VGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7dGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlcwomIzQzOyh3aGljaCBpcyBhIG5vLW9wKS4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCwKJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87CiYjNDM7aWYgbm90LAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGgKJiM0MzsuQlIgRTJCSUcgLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3RvIHNldCB0aGUKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztmbGFnIG9uIGEgZmlsZS4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyCiYjNDM7I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2NwomIzQzOyNlbmRpZgomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjgKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTsKJiM0MzsgICAgaWYgKGRmZCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O29wZW4mIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsICYjMzQ7JiMzNDssICZhbXA7ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpOwomIzQzOyAgICBpZiAocmV0ID09IFwtMSkgewomIzQzOyAgICAgICAgcGVycm9yKCYjMzQ7ZmlsZV9nZXRhdHRyJiMzNDspOwomIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIHByaW50ZigmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGZhLmZhX3hmbGFncyB8PSBGU19YRkxBR19OT0RVTVA7CiYjNDM7CiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCAmIzM0OyYjMzQ7LCAmYW1wO2ZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfc2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgJiMzNDsmIzM0OywgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyAmYW1wOyBGU19YRkxBR19OT0RVTVApCiYjNDM7ICAgICAgICBwcmludGYoJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXG4mIzM0OywKJiM0MzsgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MzsuQlIgaW9jdGxfZnMgKDIpLAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgcGF0aF9yZXNvbHV0aW9uICg3KQpkaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmQ0MjZjMTlmNWYwYgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKQEAgLTAsMCAmIzQzOzEsMTg3IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfYXR0ciBcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0CiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7LkVYCiYjNDM7LkIgI2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBzdHJ1Y3QgZmlsZV9hdHRyIHsKJiM0MzsuQlIgJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7JiMzNDsgJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9leHRzaXplOyYjMzQ7ICYjMzQ7ICAgIC8qIEV4dGVudCBzaXplIGhpbnQgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX25leHRlbnRzOyYjMzQ7ICYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDsmIzM0OyAmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplOyYjMzQ7ICYjMzQ7IC8qIENvVyBleHRlbnQgc2l6ZSBoaW50ICovJiMzNDsKJiM0MzsuQiB9OwomIzQzOy5FRQomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2ZvciB1c2Ugd2l0aCB0aGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKQomIzQzO2FuZAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCiYjNDM7c3lzdGVtIGNhbGxzLgomIzQzOy5QCiYjNDM7VGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKJiM0MzsuVFAKJiM0MzsuSSBmYV94ZmxhZ3MKJiM0MztUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLgomIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlCiYjNDM7LkIgRlNfWEZMQUdfKgomIzQzO2ZsYWdzLgomIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uCiYjNDM7LkIgRkxBR1MKJiM0MztiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy4KJiM0MzsuVFAKJiM0MzsuSSBmYV9leHRzaXplCiYjNDM7RXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuCiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZQomIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLgomIzQzOy5UUAomIzQzOy5JIGZhX25leHRlbnRzCiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS4KJiM0MztUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kIGlzIGlnbm9yZWQgYnkKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKS4KJiM0MzsuVFAKJiM0MzsuSSBmYV9wcm9qaWQKJiM0MztQcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuCiYjNDM7LlRQCiYjNDM7LkkgZmFfY293ZXh0c2l6ZQomIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy4KJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplCiYjNDM7Zm9yIENvVyBvcGVyYXRpb25zLgomIzQzOy5TSCBGTEFHUwomIzQzO0ZsYWdzIGNhbiBiZToKJiM0MzsuUlMKJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRQomIzQzO0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRQomIzQzO0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0FQUEVORAomIzQzO0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19TWU5DCiYjNDM7QWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRQomIzQzO0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfREFYCiYjNDM7VXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHCiYjNDM7RXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNCiYjNDM7VXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRQomIzQzO1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFCiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2Nvd2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuUkUKJiM0MzsuUAomIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOgomIzQzOy5SUwomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LUwomIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVQKJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6CiYjNDM7LlJTCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0MKJiM0MztGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSCiYjNDM7RmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19WRVJJVFkKJiM0MztGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRAomIzQzO1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUKJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLgomIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhbgomIzQzOy5CIEVJTlZBTAomIzQzO29yCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO2Vycm9yLgomIzQzOy5TSCBWRVJTSU9OUwomIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZQomIzQzO1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5CiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKgomIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0bwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikKJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXGZQLgomIzQzOy5TUyBGSUxFX0FUVFJfU0laRV9WRVIwCiYjNDM7U2l6ZSBpcyAyNCBieXRlcy4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCB2Ni4xNwomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuCiYjNDM7VGhlCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0bwomIzQzOy5JIHN0cnVjdCBmc3hhdHRyCiYjNDM7dXNlZCBieSB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzO2FuZAomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbnMsCiYjNDM7YnV0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUgdGhyb3VnaCB0aGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuCiYjNDM7LlAKJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy4KJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3MKJiM0Mztmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHN0cnVjdHVyZS4KJiM0MztUaGVyZWZvcmUsIGEgdXNlcgomIzQzOy5JIG11c3QKJiM0Mzt6ZXJvLWZpbGwgdGhlIHN0cnVjdHVyZSBvbiBpbml0aWFsaXphdGlvbiB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgomIzQzO2tlcm5lbHMuCiYjNDM7LlNTIExpbnV4IHY3LjIKJiM0MztUaGUgRlNfWEZMQUdfQ0FTRUZPTEQgYW5kIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HIGFyZSBpbnRyb2R1Y2VkIHRvIGVuYWJsZQomIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTIKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSG93ZXZlciwgaG9sZCBvbiBhIHNlY29uZDsgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgbWV0aG9kaWNhbGx5LiBGaXJzdCwgbGV0JiMzOTtzIHBpbnBvaW50IHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBiZWVuIG1vZGlmaWVkLiBUaGUgZGlmZiByZXZlYWxzIGNoYW5nZXMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gSW50ZXJlc3RpbmcuCgpOb3csIGEgY3JpdGljYWwgc3RlcDogSSBuZWVkIGNvbnRleHQuIFRoaXMgZGlmZiBjb3VsZCBiZSBwYXJ0IG9mIGEgbGFyZ2VyIGNoYW5nZS4gSSBoYXZlIHRvIHZlcmlmeSBpZiB0aGlzIHJlcHJlc2VudHMgdGhlIHdob2xlIHN0b3J5LiBJJiMzOTtkIHVzdWFsbHkgcmVhY2ggZm9yIGBnaXQgbG9nYCBvciBhIGBnaXQgZGlmZmAgd2l0aGluIHRoZSB3b3Jrc3BhY2UgdG8gY29uZmlybSB0aGlzLCBidXQgaXQgc2VlbXMgdGhvc2UgdG9vbHMgYXJlbiYjMzk7dCByZWFkaWx5IGF2YWlsYWJsZSBoZXJlLiBObyBwcm9ibGVtLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFsbCBmaWxlcyBpbiBgbWFuL2Agb3IgYW55IGtlcm5lbCBzb3VyY2UgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkmIzM5O2xsIHV0aWxpemUgYGdyZXBwZXJgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzaXR1YXRpb24uIFRoaXMgaXMgYWxsIGFib3V0IGdhaW5pbmcgYSBjb21wcmVoZW5zaXZlIHBlcnNwZWN0aXZlIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzUyOmZpbGVfZ2V0YXR0clxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzU1OlNpbmNlIExpbnV4IHY3LjAsIHRoZSBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIHNldHMgRlNfWEZMQUdfVkVSSVRZICgweDAwMDIwMDAwKVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA5LTU3N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTEwOjU3OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTEtNTc5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3MDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzEtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcdG4zMlx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcdG4zMlx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVx0bjMyXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg0LTQ2N1x0bjY0XHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODYtNDY5XHRuNjRcdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XHRvMzJcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XHRvMzJcdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcdG8zMlx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE1LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XHRpMzg2XHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ3Njo0NjhcdGkzODZcdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0MC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXG5mcy9leHQ0L2V4dDQuaC0zMTkwLVx0XHRcdCAgICAgIHN0cnVjdCBrc3RhdCAqLCB1MzIsIHVuc2lnbmVkIGludCk7XG4tLVxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2V4dDQvZmlsZS5jLTEwNTktXHQuc2V0YXR0clx0PSBleHQ0X3NldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYzoxMDYwOlx0LmdldGF0dHJcdD0gZXh0NF9maWxlX2dldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYy0xMDYxLVx0Lmxpc3R4YXR0clx0PSBleHQ0X2xpc3R4YXR0cixcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjMzNC1cbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxuLS1cbmZzL2ZpbGVfYXR0ci5jPTg2PWludCB2ZnNfZmlsZWF0dHJfZ2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmZzL2ZpbGVfYXR0ci5jLTkzLVxuZnMvZmlsZV9hdHRyLmM6OTQ6XHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcbmZzL2ZpbGVfYXR0ci5jLTk1LVx0aWYgKGVycm9yKVxuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZmlsZV9hdHRyLmMtMzczLVxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcbmZzL2ZpbGVfYXR0ci5jLTM3NS1cdFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg6MjQ6I2lmZGVmIF9fTlJfZmlsZV9nZXRhdHRyXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmgtMTYyLUxTTV9IT09LKGludCwgMCwgaW5vZGVfc2V0X2FjbCwgc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC00NTMtXHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVx0XHRcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA2OS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD0zNzg9YXNtbGlua2FnZSBsb25nIHN5c19mcmVtb3ZleGF0dHIoaW50IGZkLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXHRcdFx0XHQgc3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKmF0dHIsIHNpemVfdCB1c2l6ZSxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi00LS5cXFwmIzM0O1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE2LS5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMj1nbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMzAtc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjQwOi5CUiBmaWxlX2dldGF0dHIgKClcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTgzPWJlZm9yZSBjYWxsaW5nXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjIzPVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMjQ6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjI1LXRvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzUtXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzY6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzc6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjM4LSNlbmRpZlxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0MT1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjUwLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjUxOiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTItICAgIGlmIChyZXQgPT0gXFwtMSkge1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjUzOiAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTQtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Nzg9VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6Nzk6LkIgZmlsZV9nZXRhdHRyKDIpXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi04MC10byBpbml0aWFsaXplXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjU4PWZsYWcgb24gYSBmaWxlLlxuLS1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3MC1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3MTojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3MjojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yNzMtI2VuZGlmXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjgwPW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yOTYtXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTc6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI5OC0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTk6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwMC0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTItXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTM6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxNC0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTU6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxNi0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjctLlNIIFNFRSBBTFNPXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjg6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjktLkJSIGlvY3RsICgyKSxcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTIyPWZvciB1c2Ugd2l0aCB0aGVcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoMilcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXG4tLVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT00Nj1UaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS00OC1hbmQgaXMgaWdub3JlZCBieVxuLS1cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MTUxOi5CUiBmaWxlX2dldGF0dHIgKDIpXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE1Mi1hbmRcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTE4ND11cHBlciBsYXllcnMsIHN1Y2ggYXMgTkZTRCwgdG8gcmV0cmlldmUgY2FzZSBzZW5zaXRpdml0eSBpbmZvcm1hdGlvbi5cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTg1LS5TSCBTRUUgQUxTT1xubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE4Ny0uQlIgZmlsZV9zZXRhdHRyICgyKVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYz0yMTUzPWludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTU5OiAqIHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cigpIC0gY2hlY2sgaWYgcmV0cmlldmluZyBmc3hhdHRyIGlzIGFsbG93ZWRcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2MC0gKiBAZGVudHJ5OiBmaWxlIHRvIHJldHJpZXZlIGZpbGVzeXN0ZW0gZXh0ZW5kZWQgYXR0cmlidXRlcyBmcm9tXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYyLSAqXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNjM6ICogQ2FsbGVkIHdoZW4gZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBvciBGU19JT0NfRlNHRVRYQVRUUiBpb2N0bCgpIGlzIGNhbGxlZCBvblxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY3LSAqL1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjkte1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTcwOlx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE3MS19XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTM1NDktXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zNTUxLVx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXHRMU01fSE9PS19JTklUKGlub2RlX3JlbW92ZXhhdHRyLCBzZWxpbnV4X2lub2RlX3JlbW92ZXhhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NjIwOlx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NjIxLVx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX3NldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9zZXRhdHRyKSxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDg1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XHRuNjRcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVx0bjY0XHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zOTYtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcdGkzODZcdG9wZW5fdHJlZV9hdHRyXHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XHRpMzg2XHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzk1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6NDExOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMi00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDQ1CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDc5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdpdCBEaWZmIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBIRUFEYCBjb21taXQmIzM5O3MgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY2hhbmdlZCBpbiBjb21taXQgYGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJgLiBUaGUgZGlmZiBzaG93cyBhZGRpdGlvbnMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcmluZ2luZyBiZWxscyDigJMgdGhlc2UgYXJlIG1hbiBwYWdlcywgZG9jdW1lbnRhdGlvbi4KCk5vdywgSSBoYXZlIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGRvZXNuJiMzOTt0IHdhcnJhbnQgZnV6emluZyBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIEkgcmVjYWxsIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBJiMzNDsg4oCTIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGZ1enppbmcgKnNob3VsZG4mIzM5O3QqIGJlIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBub24ta2VybmVsIGNoYW5nZXMsIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhpcyBwcm92aWRlZCBkaWZmLCB0aGVzZSBjaGFuZ2VzIGZhbGwgc3F1YXJlbHkgaW50byB0aGUgZG9jdW1lbnRhdGlvbiBjYXRlZ29yeS4gVGhlIGRpZmYgb25seSB0b3VjaGVzIG1hbiBwYWdlcyAoZG9jdW1lbnRhdGlvbikgYW5kIHVzZXItc3BhY2UgZmlsZXMuIFRoZXJlJiMzOTtzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgY29kZSwgbm8gY2hhbmdlcyB0byBhbnkgQyBmaWxlcywgaGVhZGVyIGZpbGVzLCBvciBhbnkgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHZtbGludXguIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzIHB1cmVseSBkb2N1bWVudGF0aW9uOyBpdCBkb2VzbiYjMzk7dCBpbXBhY3QgYW55IGV4ZWN1dGFibGUgY29kZSBvciBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBpbiB0aGUga2VybmVsIGl0c2VsZi4gQ29uc2VxdWVudGx5LCBib3RoIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGVtcHR5IGFycmF5cyDigJMgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmb2N1cyBvbiBvciBlbmFibGUgaGVyZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyBhczoKCi0gYEVuYWJsZUNvbmZpZ3NgOiBgW11gCi0gYEZvY3VzU3ltYm9sc2A6IGBbXWAKLSBgUmVhc29uaW5nYDogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gLyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgY29kZS4mIzM0OwotIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCgpMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTI6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAwLjkyOTcxNjE5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDU3OTgxOTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIG1hbiBwYWdlcyAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBmb3IgdGhlIGZpbGVfZ2V0YXR0ciBhbmQgZmlsZV9zZXRhdHRyIHN5c2NhbGxzIGFuZCBzdHJ1Y3QgZmlsZV9hdHRyLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZSBvciBleGVjdXRhYmxlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDAuOTI5NzIwNzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODMwOTA2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkYTI5YzYyYWViY2M3NjM2NzE1ZmM4ZDlkMzAwNjZlMmM3NGM5ODAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjJkOWE2ZDMzOGE1ZTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcXG5AQCAtMCwwICsxLDI3OSBAQFxcbisuXFxcXFxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcXG4rLlxcXFxcXFwiXFxuKy5cXFxcXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XFxuKy5cXFxcXFxcIlxcbisuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbisuU0ggTkFNRVxcbitmaWxlX2dldGF0dHIgXFxcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbisuU0ggU1lOT1BTSVNcXG4rLm5mXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZjbnRsLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgLyogXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIHN0cnVjdCBcXFwiIGZpbGVfYXR0ciBcXFwiIGFuZCBcXFwiIEZTX1hGTEFHXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY3N5cy9zeXNjYWxsLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgLyogXFxcIiBTWVNfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkIgI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbisuUFxcbisuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICBpbnQgXFxcIiBkaXJmZCBcXFwiLCBjb25zdCBjaGFyICpcXFwiIHBhdGhuYW1lICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcXFwiIGZhdHRyIFxcXCIsIHNpemVfdCBcXFwiIHNpemUgLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBcXFwiIGZsYWdzICk7XFxuKy5maVxcbisuUFxcbisuSVIgTm90ZSA6XFxuK2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXFxuKy5CUiBmaWxlX2dldGF0dHIgKCksXFxuK3VzZVxcbisuQlIgc3lzY2FsbCAoMilcXG4raW5zdGVhZC5cXG4rLlNIIERFU0NSSVBUSU9OXFxuK1RoZVxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbitmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieVxcbisuSVIgcGF0aG5hbWUgLlxcbisuUFxcbitUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcXG4rLkIgRlNfSU9DX0ZTR0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbitvcGVyYXRpb24sXFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cXG4rQnkgdXNpbmcgYSBwYXRobmFtZSxcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxcbitjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4rZnJvbSBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyXFxuK2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JUiBkaXJmZCAuXFxuK1RoZSBzcGVjaWFsIHZhbHVlXFxuKy5CIEFUX0ZEQ1dEXFxuK2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUuXFxuK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxcbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cXG4rLkJSIGZpbGVfYXR0cigydHlwZSkgLlxcbisuUFxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XFxuKy5JUiBmYXR0ciAuXFxuK1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xcbisuQiBmaWxlX2F0dHIoMnR5cGUpXFxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXFxuKy5QXFxuK1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK2JlZm9yZSBjYWxsaW5nXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xcbit3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxcbisuUFxcbitUaGVcXG4rLkkgZmxhZ3NcXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcXG4rLlRQXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XFxuKy5JUiBkaXJmZCAuXFxuK0luIHRoaXMgY2FzZSxcXG4rLkkgZGlyZmRcXG4rY2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXFxuK25vdCBqdXN0IGEgZGlyZWN0b3J5LlxcbisuVFBcXG4rLkIgQVRfU1lNTElOS19OT0ZPTExPV1xcbitJZlxcbisuSSBwYXRobmFtZVxcbitpcyBhIHN5bWJvbGljIGxpbmssXFxuK2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcXG4raW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXFxuK0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXFxuKy5TSCBSRVRVUk4gVkFMVUVcXG4rT24gc3VjY2VzcyxcXG4remVybyBpcyByZXR1cm5lZC5cXG4rT24gZXJyb3IsXFxuK1xcXFwtMSBpcyByZXR1cm5lZCxcXG4rYW5kXFxuKy5JIGVycm5vXFxuK2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXFxuKy5TSCBFUlJPUlNcXG4rLlRQXFxuKy5CIEUyQklHXFxuKy5JIHNpemVcXG4raXMgdG9vIGJpZyAobGFyZ2VyIHRoYW5cXG4rLkJSIFBBR0VfU0laRSApLlxcbisuVFBcXG4rLkIgRUFDQ0VTXFxuK1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3Rvcmllc1xcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcXG4rLklSIHBhdGhuYW1lIC5cXG4rLlRQXFxuKy5CIEVCQURGXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGJ1dFxcbisuSSBkaXJmZFxcbitpcyBuZWl0aGVyXFxuKy5CIEFUX0ZEQ1dEXFxuK25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cXG4rLlRQXFxuKy5CIEVCQURGXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgc3BlY2lmaWVkLFxcbitidXRcXG4rLkkgZGlyZmRcXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFRkFVTFRcXG4rLkkgcGF0aG5hbWVcXG4rb3JcXG4rLkkgZmF0dHJcXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhblxcbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXFxuKy5UUFxcbisuQiBFTE9PUFxcbitUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcXG4rLklSIHBhdGhuYW1lIC5cXG4rLlRQXFxuKy5CIEVOQU1FVE9PTE9OR1xcbisuSSBwYXRobmFtZVxcbitpcyB0b28gbG9uZy5cXG4rLlRQXFxuKy5CIEVOT0VOVFxcbitBIGNvbXBvbmVudCBvZlxcbisuSSBwYXRobmFtZVxcbitkb2VzIG5vdCBleGlzdCxcXG4rb3JcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK3dhcyBub3Qgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFTk9NRU1cXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cXG4rLlRQXFxuKy5CIEVOT1RESVJcXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JIHBhdGhuYW1lXFxuK2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUgYW5kXFxuKy5JIGRpcmZkXFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cXG4rLlRQXFxuKy5CIEVPUE5PVFNVUFBcXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxcbisuU0ggSElTVE9SWVxcbisuU1MgTGludXggNi4xN1xcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxcbitGU19JT0NfRlNHRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZS5cXG4rLlNIIE5PVEVTXFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcXG4rd2hpY2ggdmVyc2lvbiBvZiB0aGVcXG4rLkkgZmlsZV9hdHRyXFxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcXG4rZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnNcXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cXG4rLlBcXG4rSWZcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcXG4rb25seSB0aGUgZmllbGRzIHRoYXQgZml0IHdpdGhpblxcbisuSSBzaXplXFxuK3dpbGwgYmUgZmlsbGVkIGluLlxcbitJZlxcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUgc2l6ZSxcXG4rdGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuXFxuKy5TSCBFWEFNUExFU1xcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cXG4rLlBcXG4rLmluICs0blxcbisuRVhcXG4rI2luY2x1ZGUgXFx1MDAzY2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGxpYi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbitcXG4rI2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG4rI2VuZGlmXFxuK1xcbitpbnRcXG4rbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuKyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkZpbGUgYXR0cmlidXRlczpcXFxcXFxcXG5cXFwiKTtcXG4rICAgIHByaW50ZihcXFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuKyAgICBwcmludGYoXFxcIiAgZXh0c2l6ZTogICAgJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9leHRzaXplKTtcXG4rICAgIHByaW50ZihcXFwiICBuZXh0ZW50czogICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX25leHRlbnRzKTtcXG4rICAgIHByaW50ZihcXFwiICBwcm9qaWQ6ICAgICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX3Byb2ppZCk7XFxuKyAgICBwcmludGYoXFxcIiAgY293ZXh0c2l6ZTogJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9jb3dleHRzaXplKTtcXG4rXFxuKyAgICAvKlxcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXFxuKyAgICAgKi9cXG4rICAgIGlmIChmYS5mYV94ZmxhZ3MgXFx1MDAyNiBGU19YRkxBR19OT0RVTVApXFxuKyAgICAgICAgcHJpbnRmKFxcXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxcXFxcblxcXCIpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxcbisuQlIgaW9jdGwgKDIpLFxcbisuQlIgaW9jdGxfZnMgKDIpLFxcbisuQlIgb3BlbmF0ICgyKVxcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5jMzQwYmRjYWIwNjU0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxuQEAgLTAsMCArMSwzMzMgQEBcXG4rLlxcXFxcXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XFxuKy5cXFxcXFxcIlxcbisuXFxcXFxcXCIgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxcbisuXFxcXFxcXCJcXG4rLlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9zZXRhdHRyIFxcXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rLlNIIFNZTk9QU0lTXFxuKy5uZlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcXCIgXFxcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBGSUxFX0FUVFJfKiBcXFxcXFxuK1xcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFxcXCIgU1lTXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CICNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rLlBcXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgaW50IFxcXCIgZGlyZmQgXFxcIiwgY29uc3QgY2hhciAqXFxcIiBwYXRobmFtZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXFxcIiBmYXR0ciBcXFwiLCBzaXplX3QgXFxcIiBzaXplICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXFxcIiBmbGFncyApO1xcbisuZmlcXG4rLlBcXG4rLklSIE5vdGUgOlxcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxcbituZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcXG4rLkJSIHN5c2NhbGwgKDIpLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX3NldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rb24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbitvbiBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rV2l0aFxcbisuQlIgaW9jdGwgKDIpLFxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JIGRpcmZkXFxuKyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxcbitpZlxcbisuSSBkaXJmZFxcbitpcyB0aGUgc3BlY2lhbCB2YWx1ZVxcbisuQlIgQVRfRkRDV0QgKS5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUsXFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXFxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxcbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXFxuK1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB1c2VcXG4rLkIgZmlsZV9nZXRhdHRyKDIpXFxuK3RvIGluaXRpYWxpemVcXG4rLkkgc3RydWN0IGZhdHRyXFxuK2JlZm9yZWhhbmQuXFxuKy5QXFxuK1RoZVxcbisuSSBzaXplXFxuK2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcXG4rLklSIGZhdHRyIC5cXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXFxuKy5CIGZpbGVfYXR0cigydHlwZSlcXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cXG4rLlBcXG4rVGhlXFxuKy5JIGZsYWdzXFxuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2sgdGhhdCBjYW4gaW5jbHVkZSB6ZXJvIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XFxuKy5UUFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxcbisuSSBkaXJmZFxcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcXG4rLkJSIG9wZW4gKDIpXFxuKy5CIE9fUEFUSFxcbitmbGFnKS5cXG4rSW4gdGhpcyBjYXNlLFxcbisuSSBkaXJmZFxcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcXG4rbm90IGp1c3QgYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGEgc3ltYm9saWMgbGluayxcXG4rZG8gbm90IGRlcmVmZXJlbmNlIGl0OlxcbitpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi5cXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxcbitzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLlxcbisuU0ggUkVUVVJOIFZBTFVFXFxuK09uIHN1Y2Nlc3MsXFxuK3plcm8gaXMgcmV0dXJuZWQuXFxuK09uIGVycm9yLFxcbitcXFxcLTEgaXMgcmV0dXJuZWQsXFxuK2FuZFxcbisuSSBlcnJub1xcbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxcbisuU0ggRVJST1JTXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuXFxuKy5CUiBQQUdFX1NJWkUgLlxcbisuVFBcXG4rLkIgRTJCSUdcXG4rLkkgc2l6ZVxcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXFxuK2tlcm5lbCBleHBlY3RzKSBhbmQgbmV3IGZpZWxkcyBhcmUgbm9uLXplcm8uXFxuKy5UUFxcbisuQiBFQUNDRVNcXG4rU2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXFxuK2luIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSVIgcGF0aG5hbWUgLlxcbisoU2VlIGFsc29cXG4rLkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKVxcbisuVFBcXG4rLkIgRUJBREZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUgYnV0XFxuKy5JIGRpcmZkXFxuK2lzIG5laXRoZXJcXG4rLkIgQVRfRkRDV0RcXG4rbm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUJBREZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK3dhcyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzICxcXG4rYW5kXFxuKy5JIGRpcmZkXFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUZBVUxUXFxuKy5JIHBhdGhuYW1lXFxuK29yXFxuKy5JIGZhdHRyXFxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW5cXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpblxcbisuSSBmYXR0clxcbitmb3IgdGhpcyB0eXBlIG9mIGZpbGUgb3IgZmlsZXN5c3RlbS5cXG4rLlRQXFxuKy5CIEVMT09QXFxuK1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZ1xcbisuSVIgcGF0aG5hbWUgLlxcbisuVFBcXG4rLkIgRU5BTUVUT09MT05HXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHRvbyBsb25nLlxcbisuVFBcXG4rLkIgRU5PRU5UXFxuK0EgY29tcG9uZW50IG9mXFxuKy5JIHBhdGhuYW1lXFxuK2RvZXMgbm90IGV4aXN0LFxcbitvclxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIG5vdCBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVOT01FTVxcbitJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxcbisuVFBcXG4rLkIgRU5PVERJUlxcbitBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcXG4rLkkgcGF0aG5hbWVcXG4raXMgbm90IGEgZGlyZWN0b3J5IG9yLFxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBhbmRcXG4rLkkgZGlyZmRcXG4raXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxcbisuVFBcXG4rLkIgRU9QTk9UU1VQUFxcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXFxuKy5UUFxcbisuQiBFUEVSTVxcbitUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9uc1xcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cXG4rLlRQXFxuKy5CIEVST0ZTXFxuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXFxuKy5TSCBISVNUT1JZXFxuKy5TUyBMaW51eCA2LjE3XFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXFxuK0ZTX0lPQ19GU1NFVFhBVFRSXFxuKy5CUiBpb2N0bCAoMilcXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cXG4rLlNIIE5PVEVTXFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXFxuK3doaWNoIHZlcnNpb24gb2YgdGhlXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXFxuK29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXFxuKy5QXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcXG4rKHdoaWNoIGlzIGEgbm8tb3ApLlxcbitJZlxcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuIGV4cGVjdGVkLFxcbit0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87XFxuK2lmIG5vdCxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aFxcbisuQlIgRTJCSUcgLlxcbisuU0ggRVhBTVBMRVNcXG4rVGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcXG4rLkJSIGZpbGVfc2V0YXR0ciAoKVxcbit0byBzZXQgdGhlXFxuKy5CIEZTX1hGTEFHX05PRFVNUFxcbitmbGFnIG9uIGEgZmlsZS5cXG4rLlBcXG4rLmluICs0blxcbisuRVhcXG4rI2luY2x1ZGUgXFx1MDAzY2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbitcXG4rI2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG4rI2VuZGlmXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX3NldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxcbisjZW5kaWZcXG4rXFxuK2ludFxcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuK3tcXG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcXG4rICAgIGludCBkZmQ7XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTtcXG4rICAgIGlmIChkZmQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJvcGVuXFxcIik7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcHJpbnRmKFxcXCJDdXJyZW50IGZsYWdzOiAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuK1xcbisgICAgZmEuZmFfeGZsYWdzIHw9IEZTX1hGTEFHX05PRFVNUDtcXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXFxcIlxcXCIsIFxcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XFxuKyAgICBpZiAocmV0ID09IFxcXFwtMSkge1xcbisgICAgICAgIHBlcnJvcihcXFwiZmlsZV9zZXRhdHRyXFxcIik7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgaWYgKGZhLmZhX3hmbGFncyBcXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcXG4rICAgICAgICBwcmludGYoXFxcImZsYWdzIDB4JWxseCAoTk9EVU1QIGZsYWcgaXMgc2V0KVxcXFxcXFxcblxcXCIsXFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcXG4rXFxuKyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XFxuK31cXG4rLkVFXFxuKy5pblxcbisuU0ggU0VFIEFMU09cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxuKy5CUiBpb2N0bCAoMiksXFxuKy5CUiBpb2N0bF9mcyAoMiksXFxuKy5CUiBvcGVuYXQgKDIpLFxcbisuQlIgZmlsZV9hdHRyICgydHlwZSksXFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXFxuZGlmZiAtLWdpdCBhL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcXG5AQCAtMCwwICsxLDE4NyBAQFxcbisuXFxcXFxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcXG4rLlxcXFxcXFwiXFxuKy5cXFxcXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XFxuKy5cXFxcXFxcIlxcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9hdHRyIFxcXFwtIGRlc2NyaWJlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzIHRvIGdldCBvciBzZXRcXG4rLlNIIFNZTk9QU0lTXFxuKy5FWFxcbisuQiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rLlBcXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XFxuKy5CUiBcXFwiICAgIHU2NCAgZmFfeGZsYWdzO1xcXCIgXFxcIiAgICAgLyogRXh0ZW5kZWQgZmxhZ3MgKi9cXFwiXFxuKy5CUiBcXFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcXFwiIFxcXCIgICAgLyogRXh0ZW50IHNpemUgaGludCAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9uZXh0ZW50cztcXFwiIFxcXCIgICAvKiBOdW1iZXIgb2YgZXh0ZW50cyAocmVhZC1vbmx5KSAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9wcm9qaWQ7XFxcIiBcXFwiICAgICAvKiBQcm9qZWN0IGlkZW50aWZpZXIgKi9cXFwiXFxuKy5CUiBcXFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcXFwiIFxcXCIgLyogQ29XIGV4dGVudCBzaXplIGhpbnQgKi9cXFwiXFxuKy5CIH07XFxuKy5FRVxcbisuU0ggREVTQ1JJUFRJT05cXG4rRGVzY3JpYmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuK2ZvciB1c2Ugd2l0aCB0aGVcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcXG4rYW5kXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuK3N5c3RlbSBjYWxscy5cXG4rLlBcXG4rVGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czpcXG4rLlRQXFxuKy5JIGZhX3hmbGFnc1xcbitUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLlxcbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxcbisuQiBGU19YRkxBR18qXFxuK2ZsYWdzLlxcbitSZWZlciB0byB0aGUgc2VjdGlvblxcbisuQiBGTEFHU1xcbitiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy5cXG4rLlRQXFxuKy5JIGZhX2V4dHNpemVcXG4rRXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuXFxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcXG4rZm9yIG5ldyBhbGxvY2F0aW9ucyB0byB0aGlzIGZpbGUuXFxuKy5UUFxcbisuSSBmYV9uZXh0ZW50c1xcbitOdW1iZXIgb2YgZGF0YSBleHRlbnRzIGluIHRoZSBmaWxlIChyZWFkLW9ubHkpLlxcbitUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxcbithbmQgaXMgaWdub3JlZCBieVxcbisuQlIgZmlsZV9zZXRhdHRyICgyKS5cXG4rLlRQXFxuKy5JIGZhX3Byb2ppZFxcbitQcm9qZWN0IGlkZW50aWZpZXIuXFxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxcbisuVFBcXG4rLkkgZmFfY293ZXh0c2l6ZVxcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXFxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcXG4rZm9yIENvVyBvcGVyYXRpb25zLlxcbisuU0ggRkxBR1NcXG4rRmxhZ3MgY2FuIGJlOlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1JFQUxUSU1FXFxuK0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfSU1NVVRBQkxFXFxuK0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQVBQRU5EXFxuK0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1NZTkNcXG4rQWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19OT0FUSU1FXFxuK0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PRFVNUFxcbitEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19EQVhcXG4rVXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9ERUZSQUdcXG4rRXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0ZJTEVTVFJFQU1cXG4rVXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuXFxuKy5UUFxcbisuQiBGU19YRkxBR19FWFRTSVpFXFxuK1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZVxcbisuSSBmYV9leHRzaXplXFxuK2ZpZWxkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxcbitVc2UgdGhlIENvVyBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXFxuKy5JIGZhX2Nvd2V4dHNpemVcXG4rZmllbGQuXFxuKy5SRVxcbisuUFxcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcXG4rLlJTXFxuKy5UUFxcbisuQiBGU19YRkxBR19SVElOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcmVhbHRpbWUgZmxhZy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcXG4rRGlzYWxsb3cgY3JlYXRpb24gb2Ygc3ltYm9saWMgbGlua3MgaW4gdGhpcyBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgZXh0ZW50IHNpemUgaGludC5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXFxuK05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHByb2plY3QgaWRlbnRpZmllci5cXG4rLlJFXFxuKy5QXFxuK1RoZSBmb2xsb3dpbmcgZmxhZ3MgYXJlIHJlYWQtb25seTpcXG4rLlJTXFxuKy5UUFxcbisuQiBGU19YRkxBR19QUkVBTExPQ1xcbitGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0hBU0FUVFJcXG4rRmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1ZFUklUWVxcbitGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0NBU0VGT0xEXFxuK1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVcXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkdcXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxcbisuUkVcXG4rLlBcXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cXG4rU2V0dGluZyB1bnN1cHBvcnRlZCBmbGFncyBtYXkgcmVzdWx0IGluIGFuXFxuKy5CIEVJTlZBTFxcbitvclxcbisuQiBFT1BOT1RTVVBQXFxuK2Vycm9yLlxcbisuU0ggVkVSU0lPTlNcXG4rLlNTIFN0cnVjdHVyZSBzaXplXFxuK1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5XFxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcXG4rd2hpY2ggaXMgYWxzbyBhIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBiZWluZyB1c2VkLlxcbitUaGVcXG4rLkkgc2l6ZVxcbitwYXJhbWV0ZXIgcGFzc2VkIHRvXFxuKy5CUiBmaWxlX2dldGF0dHIgKDIpXFxuK2FuZFxcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2ZcXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcXFxmUC5cXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcXG4rU2l6ZSBpcyAyNCBieXRlcy5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IHY2LjE3XFxuK1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuXFxuK1RoZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0b1xcbisuSSBzdHJ1Y3QgZnN4YXR0clxcbit1c2VkIGJ5IHRoZVxcbisuQiBGU19JT0NfRlNHRVRYQVRUUlxcbithbmRcXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbitvcGVyYXRpb25zLFxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxcbisuSSBzaXplXFxuK3BhcmFtZXRlciBvZiB0aGUgc3lzdGVtIGNhbGxzLlxcbisuUFxcbitFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy5cXG4rVGhlIGtlcm5lbCB3aWxsIGV4cGVjdCBuZXcgZmllbGRzIHRvIGJlIHplcm9zXFxuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxcbitUaGVyZWZvcmUsIGEgdXNlclxcbisuSSBtdXN0XFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXFxuK2tlcm5lbHMuXFxuKy5TUyBMaW51eCB2Ny4yXFxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXFxuK3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLlxcbisuU0ggU0VFIEFMU09cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAxLjQxMzQ5MzY1NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM1NzQxOTE5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGEyOWM2MmFlYmNjNzYzNjcxNWZjOGQ5ZDMwMDY2ZTJjNzRjOTgwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjJkOWE2ZDMzOGE1ZTlcbi0tLSAvZGV2L251bGxcbisrKyBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5AQCAtMCwwICsxLDI3OSBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwiXG4rLlNIIE5BTUVcbitmaWxlX2dldGF0dHIgXFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbisuU0ggU1lOT1BTSVNcbisubmZcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCIgXCIgICAgICAvKiBcIiBBVF8qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkJSIFwiI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwiIFwiICAgICAgICAgLyogc3RydWN0IFwiIGZpbGVfYXR0ciBcIiBhbmQgXCIgRlNfWEZMQUdfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcIiBcIiAgICAgIC8qIFwiIFNZU18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisuUFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxuKy5CSSBcIiAgICAgICAgICAgICAgIGludCBcIiBkaXJmZCBcIiwgY29uc3QgY2hhciAqXCIgcGF0aG5hbWUgLFxuKy5CSSBcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwiIGZhdHRyIFwiLCBzaXplX3QgXCIgc2l6ZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwiIGZsYWdzICk7XG4rLmZpXG4rLlBcbisuSVIgTm90ZSA6XG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbisuQlIgZmlsZV9nZXRhdHRyICgpLFxuK3VzZVxuKy5CUiBzeXNjYWxsICgyKVxuK2luc3RlYWQuXG4rLlNIIERFU0NSSVBUSU9OXG4rVGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxuK3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuK2Zyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XG4rLklSIHBhdGhuYW1lIC5cbisuUFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rLkJSIGlvY3RsICgyKVxuK29wZXJhdGlvbixcbitidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuXG4rQnkgdXNpbmcgYSBwYXRobmFtZSxcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rY2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4rZnJvbSBhbGwgZmlsZSB0eXBlcyxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyBzdWNoIGFzIEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXJcbitkZXZpY2VzLCBhbmQgc3ltbGlua3MsIHdoZXJlIG9wZW5pbmcgdGhlIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuXG4rLlBcbitBcyB3aXRoXG4rLkJSIG9wZW5hdCAoMiksXG4raWZcbisuSSBwYXRobmFtZVxuK2lzIHJlbGF0aXZlLFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuK3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3JcbisuSVIgZGlyZmQgLlxuK1RoZSBzcGVjaWFsIHZhbHVlXG4rLkIgQVRfRkRDV0Rcbitjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFic29sdXRlLFxuK3RoZW5cbisuSSBkaXJmZFxuK2lzIGlnbm9yZWQuXG4rLlBcbitUaGVcbisuSSBmYXR0clxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlLlxuK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxuKy5CUiBmaWxlX2F0dHIoMnR5cGUpIC5cbisuUFxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4rLklSIGZhdHRyIC5cbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cbisuQiBmaWxlX2F0dHIoMnR5cGUpXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbisuUFxuK1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuKy5JIHN0cnVjdCBmaWxlX2F0dHJcbitiZWZvcmUgY2FsbGluZ1xuKy5CUiBmaWxlX2dldGF0dHIgKClcbit0byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4rd2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLklSIGRpcmZkIC5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ7XG4raW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4rQnkgZGVmYXVsdCwgc3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC5cbisuU0ggUkVUVVJOIFZBTFVFXG4rT24gc3VjY2Vzcyxcbit6ZXJvIGlzIHJldHVybmVkLlxuK09uIGVycm9yLFxuK1xcLTEgaXMgcmV0dXJuZWQsXG4rYW5kXG4rLkkgZXJybm9cbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuKy5TSCBFUlJPUlNcbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpcyB0b28gYmlnIChsYXJnZXIgdGhhblxuKy5CUiBQQUdFX1NJWkUgKS5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKy5UUFxuKy5CIEVCQURGXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBidXRcbisuSSBkaXJmZFxuK2lzIG5laXRoZXJcbisuQiBBVF9GRENXRFxuK25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgc3BlY2lmaWVkLFxuK2J1dFxuKy5JIGRpcmZkXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUZBVUxUXG4rLkkgcGF0aG5hbWVcbitvclxuKy5JIGZhdHRyXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxuKy5UUFxuKy5CIEVJTlZBTFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cbisuSVIgZmxhZ3MgLlxuKy5UUFxuKy5CIEVJTlZBTFxuKy5JIHNpemVcbitpcyBzbWFsbGVyIHRoYW5cbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXG4rLlRQXG4rLkIgRUxPT1BcbitUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcbisuSVIgcGF0aG5hbWUgLlxuKy5UUFxuKy5CIEVOQU1FVE9PTE9OR1xuKy5JIHBhdGhuYW1lXG4raXMgdG9vIGxvbmcuXG4rLlRQXG4rLkIgRU5PRU5UXG4rQSBjb21wb25lbnQgb2ZcbisuSSBwYXRobmFtZVxuK2RvZXMgbm90IGV4aXN0LFxuK29yXG4rLkkgcGF0aG5hbWVcbitpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXG4rLkIgQVRfRU1QVFlfUEFUSFxuK3dhcyBub3Qgc3BlY2lmaWVkIGluXG4rLklSIGZsYWdzIC5cbisuVFBcbisuQiBFTk9NRU1cbitJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxuKy5UUFxuKy5CIEVOT1RESVJcbitBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSSBwYXRobmFtZVxuK2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcbisuSSBwYXRobmFtZVxuK2lzIHJlbGF0aXZlIGFuZFxuKy5JIGRpcmZkXG4raXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxuKy5UUFxuKy5CIEVPUE5PVFNVUFBcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGdldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTR0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlLlxuKy5TSCBOT1RFU1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcbit3aGljaCB2ZXJzaW9uIG9mIHRoZVxuKy5JIGZpbGVfYXR0clxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcbitlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuK29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4rLlBcbitJZlxuKy5JIHNpemVcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcbitvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXG4rLkkgc2l6ZVxuK3dpbGwgYmUgZmlsbGVkIGluLlxuK0lmXG4rLkkgc2l6ZVxuK2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUgc2l6ZSxcbit0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX2dldGF0dHIgKClcbit0byByZXRyaWV2ZSBhbmQgZGlzcGxheSBmaWxlIGF0dHJpYnV0ZXMuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4raW50XG4rbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuK3tcbisgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xuKyAgICBsb25nIHJldDtcbitcbisgICAgaWYgKGFyZ2MgIT0gMikge1xuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwiVXNhZ2U6ICVzIFx1MDAzY2ZpbGVuYW1lXHUwMDNlXFxcXG5cIiwgYXJndlswXSk7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBwcmludGYoXCJGaWxlIGF0dHJpYnV0ZXM6XFxcXG5cIik7XG4rICAgIHByaW50ZihcIiAgeGZsYWdzOiAgICAgMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuKyAgICBwcmludGYoXCIgIGV4dHNpemU6ICAgICV1XFxcXG5cIiwgZmEuZmFfZXh0c2l6ZSk7XG4rICAgIHByaW50ZihcIiAgbmV4dGVudHM6ICAgJXVcXFxcblwiLCBmYS5mYV9uZXh0ZW50cyk7XG4rICAgIHByaW50ZihcIiAgcHJvamlkOiAgICAgJXVcXFxcblwiLCBmYS5mYV9wcm9qaWQpO1xuKyAgICBwcmludGYoXCIgIGNvd2V4dHNpemU6ICV1XFxcXG5cIiwgZmEuZmFfY293ZXh0c2l6ZSk7XG4rXG4rICAgIC8qXG4rICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICtkIC4vZm9vIHRvIHNlZSB0aGUgZGlmZmVyZW5jZVxuKyAgICAgKi9cbisgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuKyAgICAgICAgcHJpbnRmKFwiICBOT0RVTVAgZmxhZyBpcyBzZXRcXFxcblwiKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcbisuQlIgZmlsZV9hdHRyICgydHlwZSksXG4rLkJSIGlvY3RsICgyKSxcbisuQlIgaW9jdGxfZnMgKDIpLFxuKy5CUiBvcGVuYXQgKDIpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmMzNDBiZGNhYjA2NTRcbi0tLSAvZGV2L251bGxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5AQCAtMCwwICsxLDMzMyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9zZXRhdHRyIDIgKGRhdGUpIFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwiXG4rLlNIIE5BTUVcbitmaWxlX3NldGF0dHIgXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbisuU0ggU1lOT1BTSVNcbisubmZcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCIgXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIEFUXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCIgXCIgICAgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIEZJTEVfQVRUUl8qIFxcXG4rXCIgYW5kIFwiIEZTX1hGTEFHXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXCIgXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIFNZU18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisuUFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9zZXRhdHRyLFxuKy5CSSBcIiAgICAgICAgICAgICAgIGludCBcIiBkaXJmZCBcIiwgY29uc3QgY2hhciAqXCIgcGF0aG5hbWUgLFxuKy5CSSBcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwiIGZhdHRyIFwiLCBzaXplX3QgXCIgc2l6ZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwiIGZsYWdzICk7XG4rLmZpXG4rLlBcbisuSVIgTm90ZSA6XG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxuK25lY2Vzc2l0YXRpbmcgdGhlIHVzZSBvZlxuKy5CUiBzeXNjYWxsICgyKS5cbisuU0ggREVTQ1JJUFRJT05cbitUaGVcbisuQlIgZmlsZV9zZXRhdHRyICgpXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbitvbiB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbisuSVIgcGF0aG5hbWUgLlxuKy5QXG4rVGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9uLFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxuKy5CUiBmaWxlX3NldGF0dHIgKClcbitjYW4gbWFuaXB1bGF0ZSBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbitvbiBhbGwgZmlsZSB0eXBlcyxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyAoRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlciBkZXZpY2VzKVxuK3doZXJlIG9wZW5pbmcgdGhlIGZpbGUgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIG9yIG1heSBub3QgYmUgcG9zc2libGUuXG4rV2l0aFxuKy5CUiBpb2N0bCAoMiksXG4raXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBvYnRhaW4gYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCByZWZlcnNcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cbisuUFxuK0FzIHdpdGhcbisuQlIgb3BlbmF0ICgyKSxcbitpZlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUsXG4rdGhlbiBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5XG4rcmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxuKy5JIGRpcmZkXG4rKG9yIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsXG4raWZcbisuSSBkaXJmZFxuK2lzIHRoZSBzcGVjaWFsIHZhbHVlXG4rLkJSIEFUX0ZEQ1dEICkuXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFic29sdXRlLFxuK3RoZW5cbisuSSBkaXJmZFxuK2lzIGlnbm9yZWQuXG4rLlBcbitUaGVcbisuSSBmYXR0clxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlLFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLlxuK1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB1c2VcbisuQiBmaWxlX2dldGF0dHIoMilcbit0byBpbml0aWFsaXplXG4rLkkgc3RydWN0IGZhdHRyXG4rYmVmb3JlaGFuZC5cbisuUFxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4rLklSIGZhdHRyIC5cbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cbisuQiBmaWxlX2F0dHIoMnR5cGUpXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLkkgZGlyZmRcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcbisuQlIgb3BlbiAoMilcbisuQiBPX1BBVEhcbitmbGFnKS5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4raW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFIC5cbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKyhTZWUgYWxzb1xuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAsXG4rYW5kXG4rLkkgZGlyZmRcbitpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFRkFVTFRcbisuSSBwYXRobmFtZVxuK29yXG4rLkkgZmF0dHJcbitpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4rLlRQXG4rLkIgRUlOVkFMXG4rSW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRUlOVkFMXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhblxuKy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbisuSSBmYXR0clxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5UUFxuKy5CIEVQRVJNXG4rVGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbisuVFBcbisuQiBFUk9GU1xuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbisuU0ggTk9URVNcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4rVGhlXG4rLkkgc2l6ZVxuK2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbisod2hpY2ggaXMgYSBuby1vcCkuXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXG4rdGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuK2lmIG5vdCxcbit0aGUgY2FsbCBmYWlscyB3aXRoXG4rLkJSIEUyQklHIC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX3NldGF0dHIgKClcbit0byBzZXQgdGhlXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rZmxhZyBvbiBhIGZpbGUuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4rI2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuKyNlbmRpZlxuK1xuK2ludFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbisgICAgaW50IGRmZDtcbisgICAgbG9uZyByZXQ7XG4rXG4rICAgIGlmIChhcmdjICE9IDIpIHtcbisgICAgICAgIGZwcmludGYoc3RkZXJyLCBcIlVzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCIsIGFyZ3ZbMF0pO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuKyAgICBpZiAoZGZkID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcIm9wZW5cIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwiXCIsIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbisgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4rICAgICAgICBwZXJyb3IoXCJmaWxlX2dldGF0dHJcIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcHJpbnRmKFwiQ3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuK1xuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfc2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCJmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwiLFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMiksXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4rKysgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICsxLDE4NyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcIlxuKy5TSCBOQU1FXG4rZmlsZV9hdHRyIFxcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0XG4rLlNIIFNZTk9QU0lTXG4rLkVYXG4rLkIgI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKy5QXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XG4rLkJSIFwiICAgIHU2NCAgZmFfeGZsYWdzO1wiIFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcIiBcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9uZXh0ZW50cztcIiBcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9wcm9qaWQ7XCIgXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcIiBcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wiXG4rLkIgfTtcbisuRUVcbisuU0ggREVTQ1JJUFRJT05cbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmb3IgdXNlIHdpdGggdGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcbithbmRcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxuK3N5c3RlbSBjYWxscy5cbisuUFxuK1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4rLlRQXG4rLkkgZmFfeGZsYWdzXG4rVGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxuKy5CIEZTX1hGTEFHXypcbitmbGFncy5cbitSZWZlciB0byB0aGUgc2VjdGlvblxuKy5CIEZMQUdTXG4rYmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4rLlRQXG4rLkkgZmFfZXh0c2l6ZVxuK0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbisuVFBcbisuSSBmYV9uZXh0ZW50c1xuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4rVGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZCBpcyBpZ25vcmVkIGJ5XG4rLkJSIGZpbGVfc2V0YXR0ciAoMikuXG4rLlRQXG4rLkkgZmFfcHJvamlkXG4rUHJvamVjdCBpZGVudGlmaWVyLlxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxuKy5UUFxuKy5JIGZhX2Nvd2V4dHNpemVcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuK2ZvciBDb1cgb3BlcmF0aW9ucy5cbisuU0ggRkxBR1NcbitGbGFncyBjYW4gYmU6XG4rLlJTXG4rLlRQXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcbitEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbisuVFBcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcbitGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbisuVFBcbisuQiBGU19YRkxBR19BUFBFTkRcbitBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4rLlRQXG4rLkIgRlNfWEZMQUdfU1lOQ1xuK0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcbitEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rRG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0RBWFxuK1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbisuVFBcbisuQiBGU19YRkxBR19OT0RFRlJBR1xuK0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuK1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcbitVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9leHRzaXplXG4rZmllbGQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9jb3dleHRzaXplXG4rZmllbGQuXG4rLlJFXG4rLlBcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcbisuUlNcbisuVFBcbisuQiBGU19YRkxBR19SVElOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbisuVFBcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuKy5UUFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuKy5SRVxuKy5QXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuKy5SU1xuKy5UUFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4rRmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxuK0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfVkVSSVRZXG4rRmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcbitUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxuKy5SRVxuKy5QXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbisuQiBFSU5WQUxcbitvclxuKy5CIEVPUE5PVFNVUFBcbitlcnJvci5cbisuU0ggVkVSU0lPTlNcbisuU1MgU3RydWN0dXJlIHNpemVcbitUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4rVGhlXG4rLkkgc2l6ZVxuK3BhcmFtZXRlciBwYXNzZWQgdG9cbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXG4raW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcZlAuXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbitTaXplIGlzIDI0IGJ5dGVzLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IHY2LjE3XG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbitUaGVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4rLkkgc3RydWN0IGZzeGF0dHJcbit1c2VkIGJ5IHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rYW5kXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9ucyxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuKy5JIHNpemVcbitwYXJhbWV0ZXIgb2YgdGhlIHN5c3RlbSBjYWxscy5cbisuUFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuK1RoZSBrZXJuZWwgd2lsbCBleHBlY3QgbmV3IGZpZWxkcyB0byBiZSB6ZXJvc1xuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuK1RoZXJlZm9yZSwgYSB1c2VyXG4rLkkgbXVzdFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4ra2VybmVscy5cbisuU1MgTGludXggdjcuMlxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4rLlNIIFNFRSBBTFNPXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAxLjQxMzQ5NTE0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU0MzQ4NDUzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQ7IEkgbmVlZCB0byBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseS4gRmlyc3QsIGxldCdzIHBpbnBvaW50IHdoYXQncyAqYWN0dWFsbHkqIGJlZW4gbW9kaWZpZWQuIFRoZSBkaWZmIHJldmVhbHMgY2hhbmdlcyB0byBgbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJgLCBgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJgLCBhbmQgYG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVgLiBJbnRlcmVzdGluZy5cblxuTm93LCBhIGNyaXRpY2FsIHN0ZXA6IEkgbmVlZCBjb250ZXh0LiBUaGlzIGRpZmYgY291bGQgYmUgcGFydCBvZiBhIGxhcmdlciBjaGFuZ2UuIEkgaGF2ZSB0byB2ZXJpZnkgaWYgdGhpcyByZXByZXNlbnRzIHRoZSB3aG9sZSBzdG9yeS4gSSdkIHVzdWFsbHkgcmVhY2ggZm9yIGBnaXQgbG9nYCBvciBhIGBnaXQgZGlmZmAgd2l0aGluIHRoZSB3b3Jrc3BhY2UgdG8gY29uZmlybSB0aGlzLCBidXQgaXQgc2VlbXMgdGhvc2UgdG9vbHMgYXJlbid0IHJlYWRpbHkgYXZhaWxhYmxlIGhlcmUuIE5vIHByb2JsZW0uIExldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbGwgZmlsZXMgaW4gYG1hbi9gIG9yIGFueSBrZXJuZWwgc291cmNlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJJ2xsIHV0aWxpemUgYGdyZXBwZXJgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzaXR1YXRpb24uIFRoaXMgaXMgYWxsIGFib3V0IGdhaW5pbmcgYSBjb21wcmVoZW5zaXZlIHBlcnNwZWN0aXZlIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTkyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDYuODQ4MzQzMzU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDc5MDY2OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV9nZXRhdHRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0PTM1MD1wYXJhbWV0ZXJzLiBTZWUgRlNfSU9DX0VOQUJMRV9WRVJJVFkuXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0OjM1MjpmaWxlX2dldGF0dHJcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdC0zNTMtLS0tLS0tLS0tLS0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0OjM1NTpTaW5jZSBMaW51eCB2Ny4wLCB0aGUgZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBzZXRzIEZTX1hGTEFHX1ZFUklUWSAoMHgwMDAyMDAwMClcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdC0zNTYtaW4gdGhlIHJldHVybmVkIGZsYWdzIHdoZW4gdGhlIGZpbGUgaGFzIHZlcml0eSBlbmFibGVkLiBOb3RlIHRoYXQgdGhpcyBhdHRyaWJ1dGVcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwOS01NzdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUxMDo1NzhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTExLTU3OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4NC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQ4NTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY5LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzA6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcxLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzY6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcXHRuMzJcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcXHRuMzJcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVxcdG4zMlxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTM4NC00NjdcXHRuNjRcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjM4NTo0NjhcXHRuNjRcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1Ny00NjdcXHRvMzJcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsOjQ1ODo0NjhcXHRvMzJcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDU5LTQ2OVxcdG8zMlxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1NjE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk2LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUxNjo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcXHRpMzg2XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XFx0aTM4NlxcdGZpbGVfZ2V0YXR0clxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjM5NTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDQxOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMxODg9ZXh0ZXJuIHZvaWQgZXh0NF9jbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7XFxuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXFxuZnMvZXh0NC9leHQ0LmgtMzE5MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpO1xcbi0tXFxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9leHQ0L2ZpbGUuYy0xMDU5LVxcdC5zZXRhdHRyXFx0PSBleHQ0X3NldGF0dHIsXFxuZnMvZXh0NC9maWxlLmM6MTA2MDpcXHQuZ2V0YXR0clxcdD0gZXh0NF9maWxlX2dldGF0dHIsXFxuZnMvZXh0NC9maWxlLmMtMTA2MS1cXHQubGlzdHhhdHRyXFx0PSBleHQ0X2xpc3R4YXR0cixcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz02MjY2PWludCBleHQ0X2dldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLFxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTYzMzQtXFxuZnMvZXh0NC9pbm9kZS5jOjYzMzU6aW50IGV4dDRfZmlsZV9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3Qga3N0YXQgKnN0YXQsXFxuLS1cXG5mcy9maWxlX2F0dHIuYz04Nj1pbnQgdmZzX2ZpbGVhdHRyX2dldChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG4tLVxcbmZzL2ZpbGVfYXR0ci5jLTkzLVxcbmZzL2ZpbGVfYXR0ci5jOjk0OlxcdGVycm9yID0gc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKGRlbnRyeSwgZmEpO1xcbmZzL2ZpbGVfYXR0ci5jLTk1LVxcdGlmIChlcnJvcilcXG4tLVxcbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5mcy9maWxlX2F0dHIuYy0zNzMtXFxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcXG5mcy9maWxlX2F0dHIuYy0zNzUtXFx0XFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxcbi0tXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg9MjI9X19OUl9yZWFkbGlua2F0LFxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oOjI0OiNpZmRlZiBfX05SX2ZpbGVfZ2V0YXR0clxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oOjI1Ol9fTlJfZmlsZV9nZXRhdHRyLFxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmg9MTYwPUxTTV9IT09LKGludCwgMCwgaW5vZGVfZmlsZV9zZXRhdHRyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oLTE2Mi1MU01fSE9PSyhpbnQsIDAsIGlub2RlX3NldF9hY2wsIHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDUzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjQ1NDppbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg9MTA2ND1zdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTEwNjktXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjEwNzA6c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9Mzc4PWFzbWxpbmthZ2UgbG9uZyBzeXNfZnJlbW92ZXhhdHRyKGludCBmZCwgY29uc3QgY2hhciBfX3VzZXIgKm5hbWUpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDozNzk6YXNtbGlua2FnZSBsb25nIHN5c19maWxlX2dldGF0dHIoaW50IGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKmZpbGVuYW1lLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXFx0XFx0XFx0XFx0IHN0cnVjdCBmaWxlX2F0dHIgX191c2VyICphdHRyLCBzaXplX3QgdXNpemUsXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtODU1LS8qIGZzL2lub2RlLmMgKi9cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NzpfX1NZU0NBTEwoX19OUl9maWxlX2dldGF0dHIsIHN5c19maWxlX2dldGF0dHIpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1OC0jZGVmaW5lIF9fTlJfZmlsZV9zZXRhdHRyIDQ2OVxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNC0uXFxcXFxcXCJcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo1Oi5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXFxcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcXFwiXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNi0uU0ggTkFNRVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcXFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMTQtLlBcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0xNi0uQkkgXFxcIiAgICAgICAgICAgICAgIGludCBcXFwiIGRpcmZkIFxcXCIsIGNvbnN0IGNoYXIgKlxcXCIgcGF0aG5hbWUgLFxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI9Z2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzouQlIgZmlsZV9nZXRhdHRyICgpLFxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mjg9VGhlXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTMwLXN5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo0MDouQlIgZmlsZV9nZXRhdHRyICgpXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNDEtY2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj04Mz1iZWZvcmUgY2FsbGluZ1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjg0Oi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMjM9VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMjQ6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTIyNS10byByZXRyaWV2ZSBhbmQgZGlzcGxheSBmaWxlIGF0dHJpYnV0ZXMuXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzUtXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM2OiNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjIzNzojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjM4LSNlbmRpZlxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjQxPW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI1MC1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNTE6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgQVRfRkRDV0QsIGFyZ3ZbMV0sIFxcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjUyLSAgICBpZiAocmV0ID09IFxcXFwtMSkge1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI1MzogICAgICAgIHBlcnJvcihcXFwiZmlsZV9nZXRhdHRyXFxcIik7XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjU0LSAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Nzg9VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjc5Oi5CIGZpbGVfZ2V0YXR0cigyKVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTgwLXRvIGluaXRpYWxpemVcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yPTI1OD1mbGFnIG9uIGEgZmlsZS5cXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3MC1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyNzE6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MjcyOiNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yNzMtI2VuZGlmXFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMj0yODA9bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjItMjk2LVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI5NzogICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI5OC0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTk6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwMC0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxMi1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTM6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTQtICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzE1OiAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTYtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjctLlNIIFNFRSBBTFNPXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzI4Oi5CUiBmaWxlX2dldGF0dHIgKDIpLFxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyOS0uQlIgaW9jdGwgKDIpLFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0yMj1mb3IgdXNlIHdpdGggdGhlXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToyMzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXFxuLS1cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTQ2PVRoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtNDgtYW5kIGlzIGlnbm9yZWQgYnlcXG4tLVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlOjE1MTouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTUyLWFuZFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0xODQ9dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODUtLlNIIFNFRSBBTFNPXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODctLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmM9MjE1Mz1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE1OTogKiBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoKSAtIGNoZWNrIGlmIHJldHJpZXZpbmcgZnN4YXR0ciBpcyBhbGxvd2VkXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYwLSAqIEBkZW50cnk6IGZpbGUgdG8gcmV0cmlldmUgZmlsZXN5c3RlbSBleHRlbmRlZCBhdHRyaWJ1dGVzIGZyb21cXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2Mi0gKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE2MzogKiBDYWxsZWQgd2hlbiBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIG9yIEZTX0lPQ19GU0dFVFhBVFRSIGlvY3RsKCkgaXMgY2FsbGVkIG9uXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjctICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY5LXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNzA6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNzEtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU0OS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU1MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM9NzU2MD1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X2hvb2tfbGlzdCBzZWxpbnV4X2hvb2tzW10gX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXFx0TFNNX0hPT0tfSU5JVChpbm9kZV9yZW1vdmV4YXR0ciwgc2VsaW51eF9pbm9kZV9yZW1vdmV4YXR0ciksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjc2MjA6XFx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtNzYyMS1cXHRMU01fSE9PS19JTklUKGlub2RlX2ZpbGVfc2V0YXR0ciwgc2VsaW51eF9pbm9kZV9maWxlX3NldGF0dHIpLFxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFxcdG42NFxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5Nzo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc1LTQ2N1xcdGkzODZcXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDguNDk2MjU0NTgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ5MTQwNjA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdpdCBEaWZmIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBgSEVBRGAgY29tbWl0J3MgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY2hhbmdlZCBpbiBjb21taXQgYGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJgLiBUaGUgZGlmZiBzaG93cyBhZGRpdGlvbnMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gUmlnaHQsIHRoYXQncyBpbW1lZGlhdGVseSByaW5naW5nIGJlbGxzIOKAkyB0aGVzZSBhcmUgbWFuIHBhZ2VzLCBkb2N1bWVudGF0aW9uLlxuXG5Ob3csIEkgaGF2ZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBkb2Vzbid0IHdhcnJhbnQgZnV6emluZyBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIEkgcmVjYWxsIHRoZSBcIk5FR0FUSVZFIENSSVRFUklBXCIg4oCTIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGZ1enppbmcgKnNob3VsZG4ndCogYmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG5vbi1rZXJuZWwgY2hhbmdlcywgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuXG5cbkJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgYW5kIHRoaXMgcHJvdmlkZWQgZGlmZiwgdGhlc2UgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGRvY3VtZW50YXRpb24gY2F0ZWdvcnkuIFRoZSBkaWZmIG9ubHkgdG91Y2hlcyBtYW4gcGFnZXMgKGRvY3VtZW50YXRpb24pIGFuZCB1c2VyLXNwYWNlIGZpbGVzLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgY29kZSwgbm8gY2hhbmdlcyB0byBhbnkgQyBmaWxlcywgaGVhZGVyIGZpbGVzLCBvciBhbnkgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHZtbGludXguIFRoYXQncyBhIGtleSBwb2ludC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gVGhpcyBpcyBwdXJlbHkgZG9jdW1lbnRhdGlvbjsgaXQgZG9lc24ndCBpbXBhY3QgYW55IGV4ZWN1dGFibGUgY29kZSBvciBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBpbiB0aGUga2VybmVsIGl0c2VsZi4gQ29uc2VxdWVudGx5LCBib3RoIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGVtcHR5IGFycmF5cyDigJMgdGhlcmUncyBub3RoaW5nIHRvIGZvY3VzIG9uIG9yIGVuYWJsZSBoZXJlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJ20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzOlxuXG4tIGBFbmFibGVDb25maWdzYDogYFtdYFxuLSBgRm9jdXNTeW1ib2xzYDogYFtdYFxuLSBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gLyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgY29kZS5cIlxuLSBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ0NSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MTQuOTg3NjYzNDA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMjo1NjoxNC45ODc2ODc1NjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mh9g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 12:54:47 +0000 UTC FinishedAt: 2026-09-10 12:56:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIG1hbiBwYWdlcyAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBmb3IgdGhlIGZpbGVfZ2V0YXR0ciBhbmQgZmlsZV9zZXRhdHRyIHN5c2NhbGxzIGFuZCBzdHJ1Y3QgZmlsZV9hdHRyLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZSBvciBleGVjdXRhYmxlIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxMjo1NjowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX2dldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMC4uMmQ5YTZkMzM4YTVlOVxuLS0tIC9kZXYvbnVsbFxuJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcbkBAIC0wLDAgJiM0MzsxLDI3OSBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbiYjNDM7LlNIIE5BTUVcbiYjNDM7ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzOy5TSCBTWU5PUFNJU1xuJiM0MzsubmZcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogXCYjMzQ7IEFUXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAgICAvKiBzdHJ1Y3QgXCYjMzQ7IGZpbGVfYXR0ciBcJiMzNDsgYW5kIFwmIzM0OyBGU19YRkxBR18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogXCYjMzQ7IFNZU18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbiYjNDM7LlBcbiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwmIzM0OyBmYXR0ciBcJiMzNDssIHNpemVfdCBcJiMzNDsgc2l6ZSAsXG4mIzQzOy5CSSBcJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXCYjMzQ7IGZsYWdzICk7XG4mIzQzOy5maVxuJiM0MzsuUFxuJiM0MzsuSVIgTm90ZSA6XG4mIzQzO2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKCksXG4mIzQzO3VzZVxuJiM0MzsuQlIgc3lzY2FsbCAoMilcbiYjNDM7aW5zdGVhZC5cbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO1RoZVxuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpXG4mIzQzO3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuJiM0Mztmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuUFxuJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbiYjNDM7LkIgRlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb24sXG4mIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSxcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKVxuJiM0MztjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbiYjNDM7ZnJvbSBhbGwgZmlsZSB0eXBlcyxcbiYjNDM7aW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyXG4mIzQzO2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cbiYjNDM7LlBcbiYjNDM7QXMgd2l0aFxuJiM0MzsuQlIgb3BlbmF0ICgyKSxcbiYjNDM7aWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUsXG4mIzQzO3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO1RoZSBzcGVjaWFsIHZhbHVlXG4mIzQzOy5CIEFUX0ZEQ1dEXG4mIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYWJzb2x1dGUsXG4mIzQzO3RoZW5cbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgaWdub3JlZC5cbiYjNDM7LlBcbiYjNDM7VGhlXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUuXG4mIzQzO1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4mIzQzO2JlZm9yZSBjYWxsaW5nXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xuJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7LkkgZmxhZ3NcbiYjNDM7YXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbiYjNDM7LlRQXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7SWZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MztvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4mIzQzOy5JUiBkaXJmZCAuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcbiYjNDM7aW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4mIzQzOy5TSCBSRVRVUk4gVkFMVUVcbiYjNDM7T24gc3VjY2VzcyxcbiYjNDM7emVybyBpcyByZXR1cm5lZC5cbiYjNDM7T24gZXJyb3IsXG4mIzQzO1xcLTEgaXMgcmV0dXJuZWQsXG4mIzQzO2FuZFxuJiM0MzsuSSBlcnJub1xuJiM0MztpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuJiM0MzsuU0ggRVJST1JTXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2lzIHRvbyBiaWcgKGxhcmdlciB0aGFuXG4mIzQzOy5CUiBQQUdFX1NJWkUgKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVBQ0NFU1xuJiM0MztTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBidXRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgbmVpdGhlclxuJiM0MzsuQiBBVF9GRENXRFxuJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4mIzQzOy5UUFxuJiM0MzsuQiBFQkFERlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIHNwZWNpZmllZCxcbiYjNDM7YnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUxPT1BcbiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4mIzQzOy5JUiBwYXRobmFtZSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTkFNRVRPT0xPTkdcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgdG9vIGxvbmcuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9FTlRcbiYjNDM7QSBjb21wb25lbnQgb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7ZG9lcyBub3QgZXhpc3QsXG4mIzQzO29yXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFuIGVtcHR5IHN0cmluZyBhbmRcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpblxuJiM0MzsuSVIgZmxhZ3MgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PTUVNXG4mIzQzO0luc3VmZmljaWVudCBrZXJuZWwgbWVtb3J5IHdhcyBhdmFpbGFibGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFTk9URElSXG4mIzQzO0EgY29tcG9uZW50IG9mIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlIGFuZFxuJiM0MzsuSSBkaXJmZFxuJiM0MztpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gYSBmaWxlIG90aGVyIHRoYW4gYSBkaXJlY3RvcnkuXG4mIzQzOy5UUFxuJiM0MzsuQiBFT1BOT1RTVVBQXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZ2V0dGluZyBhdHRyaWJ1dGVzIG9uIHRoaXMgdHlwZSBvZiBpbm9kZS5cbiYjNDM7LlNIIEhJU1RPUllcbiYjNDM7LlNTIExpbnV4IDYuMTdcbiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGVcbiYjNDM7RlNfSU9DX0ZTR0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGUuXG4mIzQzOy5TSCBOT1RFU1xuJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4mIzQzO1RoZVxuJiM0MzsuSSBzaXplXG4mIzQzO2FyZ3VtZW50IGFsbG93cyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXG4mIzQzO3doaWNoIHZlcnNpb24gb2YgdGhlXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXG4mIzQzO2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4mIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4mIzQzOy5QXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXG4mIzQzO29ubHkgdGhlIGZpZWxkcyB0aGF0IGZpdCB3aXRoaW5cbiYjNDM7Lkkgc2l6ZVxuJiM0Mzt3aWxsIGJlIGZpbGxlZCBpbi5cbiYjNDM7SWZcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBsYXJnZXIgdGhhbiB0aGUga2VybmVsJiMzOTtzIHN0cnVjdHVyZSBzaXplLFxuJiM0Mzt0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cbiYjNDM7LlNIIEVYQU1QTEVTXG4mIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKClcbiYjNDM7dG8gcmV0cmlldmUgYW5kIGRpc3BsYXkgZmlsZSBhdHRyaWJ1dGVzLlxuJiM0MzsuUFxuJiM0MzsuaW4gJiM0Mzs0blxuJiM0MzsuRVhcbiYjNDM7I2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztpbnRcbiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuJiM0Mzt7XG4mIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XG4mIzQzOyAgICBsb25nIHJldDtcbiYjNDM7XG4mIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7XG4mIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwmIzM0O1VzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCYjMzQ7LCBhcmd2WzBdKTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xuJiM0MzsgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4mIzQzOyAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIHByaW50ZihcJiMzNDtGaWxlIGF0dHJpYnV0ZXM6XFxcXG5cJiMzNDspO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgeGZsYWdzOiAgICAgMHglbGx4XFxcXG5cJiMzNDssICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7ICAgIHByaW50ZihcJiMzNDsgIGV4dHNpemU6ICAgICV1XFxcXG5cJiMzNDssIGZhLmZhX2V4dHNpemUpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgbmV4dGVudHM6ICAgJXVcXFxcblwmIzM0OywgZmEuZmFfbmV4dGVudHMpO1xuJiM0MzsgICAgcHJpbnRmKFwmIzM0OyAgcHJvamlkOiAgICAgJXVcXFxcblwmIzM0OywgZmEuZmFfcHJvamlkKTtcbiYjNDM7ICAgIHByaW50ZihcJiMzNDsgIGNvd2V4dHNpemU6ICV1XFxcXG5cJiMzNDssIGZhLmZhX2Nvd2V4dHNpemUpO1xuJiM0MztcbiYjNDM7ICAgIC8qXG4mIzQzOyAgICAgKiBUcnkgc2V0dGluZyBOT0RVTVAgZmxhZyB3aXRoIGNoYXR0ciAmIzQzO2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXG4mIzQzOyAgICAgKi9cbiYjNDM7ICAgIGlmIChmYS5mYV94ZmxhZ3MgXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcbiYjNDM7ICAgICAgICBwcmludGYoXCYjMzQ7ICBOT0RVTVAgZmxhZyBpcyBzZXRcXFxcblwmIzM0Oyk7XG4mIzQzO1xuJiM0MzsgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuJiM0Mzt9XG4mIzQzOy5FRVxuJiM0MzsuaW5cbiYjNDM7LlNIIFNFRSBBTFNPXG4mIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLFxuJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSksXG4mIzQzOy5CUiBpb2N0bCAoMiksXG4mIzQzOy5CUiBpb2N0bF9mcyAoMiksXG4mIzQzOy5CUiBvcGVuYXQgKDIpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmMzNDBiZGNhYjA2NTRcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5AQCAtMCwwICYjNDM7MSwzMzMgQEBcbiYjNDM7LlxcXCYjMzQ7IENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuXFxcJiMzNDsgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxuJiM0MzsuXFxcJiMzNDtcbiYjNDM7LlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfc2V0YXR0ciBcXC0gc2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7Lm5mXG4mIzQzOy5CUiBcJiMzNDsjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCYjMzQ7IFwmIzM0OyAgICAgIC8qIERlZmluaXRpb24gb2YgXCYjMzQ7IEFUXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQlIgXCYjMzQ7I2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwmIzM0OyBcJiMzNDsgICAgICAgICAvKiBEZWZpbml0aW9uIG9mIFwmIzM0OyBGSUxFX0FUVFJfKiBcXFxuJiM0MztcJiMzNDsgYW5kIFwmIzM0OyBGU19YRkxBR18qIFwmIzM0OyBjb25zdGFudHMgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcJiMzNDsgXCYjMzQ7ICAgICAgLyogRGVmaW5pdGlvbiBvZiBcJiMzNDsgU1lTXyogXCYjMzQ7IGNvbnN0YW50cyAqL1wmIzM0O1xuJiM0MzsuQiAjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MzsuUFxuJiM0MzsuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0cixcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIGludCBcJiMzNDsgZGlyZmQgXCYjMzQ7LCBjb25zdCBjaGFyICpcJiMzNDsgcGF0aG5hbWUgLFxuJiM0MzsuQkkgXCYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXCYjMzQ7IGZhdHRyIFwmIzM0Oywgc2l6ZV90IFwmIzM0OyBzaXplICxcbiYjNDM7LkJJIFwmIzM0OyAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBcJiMzNDsgZmxhZ3MgKTtcbiYjNDM7LmZpXG4mIzQzOy5QXG4mIzQzOy5JUiBOb3RlIDpcbiYjNDM7Z2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKSxcbiYjNDM7bmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mXG4mIzQzOy5CUiBzeXNjYWxsICgyKS5cbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO1RoZVxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgpXG4mIzQzO3N5c3RlbSBjYWxsIHNldHMgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG4mIzQzO29uIHRoZSBmaWxlIHNwZWNpZmllZCBieVxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuUFxuJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcbiYjNDM7LkIgRlNfSU9DX0ZTU0VUWEFUVFJcbiYjNDM7LkJSIGlvY3RsICgyKVxuJiM0MztvcGVyYXRpb24sXG4mIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbiYjNDM7QnkgdXNpbmcgYSBwYXRobmFtZSBpbnN0ZWFkIG9mIHJlcXVpcmluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvcixcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKVxuJiM0MztjYW4gbWFuaXB1bGF0ZSBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbiYjNDM7b24gYWxsIGZpbGUgdHlwZXMsXG4mIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpXG4mIzQzO3doZXJlIG9wZW5pbmcgdGhlIGZpbGUgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIG9yIG1heSBub3QgYmUgcG9zc2libGUuXG4mIzQzO1dpdGhcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7aXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBvYnRhaW4gYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCByZWZlcnNcbiYjNDM7ZGlyZWN0bHkgdG8gdGhlIGZpbGVzeXN0ZW0gaW5vZGUgZm9yIHNwZWNpYWwgZmlsZXMuXG4mIzQzOy5QXG4mIzQzO0FzIHdpdGhcbiYjNDM7LkJSIG9wZW5hdCAoMiksXG4mIzQzO2lmXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHJlbGF0aXZlLFxuJiM0Mzt0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnlcbiYjNDM7cmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxuJiM0MzsuSSBkaXJmZFxuJiM0Mzsob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcyxcbiYjNDM7aWZcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgdGhlIHNwZWNpYWwgdmFsdWVcbiYjNDM7LkJSIEFUX0ZEQ1dEICkuXG4mIzQzO0lmXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIGFic29sdXRlLFxuJiM0Mzt0aGVuXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGlnbm9yZWQuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBmYXR0clxuJiM0Mzthcmd1bWVudCBpcyBhIHBvaW50ZXIgdG8gYVxuJiM0MzsuSSBmaWxlX2F0dHJcbiYjNDM7c3RydWN0dXJlLFxuJiM0Mzt3aGljaCBzcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdG8gc2V0IG9uIHRoZSBmaWxlLlxuJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cbiYjNDM7LkJSIGZpbGVfYXR0ciAoMnR5cGUpLlxuJiM0MztVc2VyLXNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlXG4mIzQzOy5CIGZpbGVfZ2V0YXR0cigyKVxuJiM0Mzt0byBpbml0aWFsaXplXG4mIzQzOy5JIHN0cnVjdCBmYXR0clxuJiM0MztiZWZvcmVoYW5kLlxuJiM0MzsuUFxuJiM0MztUaGVcbiYjNDM7Lkkgc2l6ZVxuJiM0Mzthcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4mIzQzOy5JUiBmYXR0ciAuXG4mIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xuJiM0MzsuQiBmaWxlX2F0dHIoMnR5cGUpXG4mIzQzO2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXG4mIzQzOy5QXG4mIzQzO1RoZVxuJiM0MzsuSSBmbGFnc1xuJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfRU1QVFlfUEFUSFxuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcsXG4mIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnlcbiYjNDM7LkkgZGlyZmRcbiYjNDM7KHdoaWNoIG1heSBoYXZlIGJlZW4gb2J0YWluZWQgdXNpbmcgdGhlXG4mIzQzOy5CUiBvcGVuICgyKVxuJiM0MzsuQiBPX1BBVEhcbiYjNDM7ZmxhZykuXG4mIzQzO0luIHRoaXMgY2FzZSxcbiYjNDM7LkkgZGlyZmRcbiYjNDM7Y2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXG4mIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgQVRfU1lNTElOS19OT0ZPTExPV1xuJiM0MztJZlxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhIHN5bWJvbGljIGxpbmssXG4mIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDpcbiYjNDM7aW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4mIzQzO0J5IGRlZmF1bHQgKGkuZS4sIGlmIHRoaXMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkKSxcbiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC5cbiYjNDM7LlNIIFJFVFVSTiBWQUxVRVxuJiM0MztPbiBzdWNjZXNzLFxuJiM0Mzt6ZXJvIGlzIHJldHVybmVkLlxuJiM0MztPbiBlcnJvcixcbiYjNDM7XFwtMSBpcyByZXR1cm5lZCxcbiYjNDM7YW5kXG4mIzQzOy5JIGVycm5vXG4mIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXG4mIzQzOy5TSCBFUlJPUlNcbiYjNDM7LlRQXG4mIzQzOy5CIEUyQklHXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgbGFyZ2VyIHRoYW5cbiYjNDM7LkJSIFBBR0VfU0laRSAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFMkJJR1xuJiM0MzsuSSBzaXplXG4mIzQzO2luZGljYXRlcyB0aGUgdmVyc2lvbiB3aGljaCBrZXJuZWwgZG9lc24mIzM5O3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4mIzQzO2tlcm5lbCBleHBlY3RzKSBhbmQgbmV3IGZpZWxkcyBhcmUgbm9uLXplcm8uXG4mIzQzOy5UUFxuJiM0MzsuQiBFQUNDRVNcbiYjNDM7U2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXG4mIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZlxuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsoU2VlIGFsc29cbiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKVxuJiM0MzsuVFBcbiYjNDM7LkIgRUJBREZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgcmVsYXRpdmUgYnV0XG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIG5laXRoZXJcbiYjNDM7LkIgQVRfRkRDV0RcbiYjNDM7bm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUJBREZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLFxuJiM0MzsuQiBBVF9FTVBUWV9QQVRIXG4mIzQzO3dhcyBzcGVjaWZpZWQgaW5cbiYjNDM7LklSIGZsYWdzICxcbiYjNDM7YW5kXG4mIzQzOy5JIGRpcmZkXG4mIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUZBVUxUXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO29yXG4mIzQzOy5JIGZhdHRyXG4mIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci5cbiYjNDM7LlRQXG4mIzQzOy5CIEVJTlZBTFxuJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXG4mIzQzOy5JUiBmbGFncyAuXG4mIzQzOy5UUFxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7Lkkgc2l6ZVxuJiM0MztpcyBzbWFsbGVyIHRoYW5cbiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRUlOVkFMXG4mIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpblxuJiM0MzsuSSBmYXR0clxuJiM0Mztmb3IgdGhpcyB0eXBlIG9mIGZpbGUgb3IgZmlsZXN5c3RlbS5cbiYjNDM7LlRQXG4mIzQzOy5CIEVMT09QXG4mIzQzO1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZ1xuJiM0MzsuSVIgcGF0aG5hbWUgLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5BTUVUT09MT05HXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2lzIHRvbyBsb25nLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PRU5UXG4mIzQzO0EgY29tcG9uZW50IG9mXG4mIzQzOy5JIHBhdGhuYW1lXG4mIzQzO2RvZXMgbm90IGV4aXN0LFxuJiM0MztvclxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXG4mIzQzOy5CIEFUX0VNUFRZX1BBVEhcbiYjNDM7d2FzIG5vdCBzcGVjaWZpZWQgaW5cbiYjNDM7LklSIGZsYWdzIC5cbiYjNDM7LlRQXG4mIzQzOy5CIEVOT01FTVxuJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRU5PVERJUlxuJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcbiYjNDM7LkkgcGF0aG5hbWVcbiYjNDM7aXMgbm90IGEgZGlyZWN0b3J5IG9yLFxuJiM0MzsuSSBwYXRobmFtZVxuJiM0MztpcyByZWxhdGl2ZSBhbmRcbiYjNDM7LkkgZGlyZmRcbiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgRU9QTk9UU1VQUFxuJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBFUEVSTVxuJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9uc1xuJiM0Mzt0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbiYjNDM7LlRQXG4mIzQzOy5CIEVST0ZTXG4mIzQzO1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4mIzQzOy5TSCBISVNUT1JZXG4mIzQzOy5TUyBMaW51eCA2LjE3XG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4mIzQzO0ZTX0lPQ19GU1NFVFhBVFRSXG4mIzQzOy5CUiBpb2N0bCAoMilcbiYjNDM7d2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbiYjNDM7LlNIIE5PVEVTXG4mIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cbiYjNDM7VGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXG4mIzQzO3doaWNoIHZlcnNpb24gb2YgdGhlXG4mIzQzOy5JIGZpbGVfYXR0clxuJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXG4mIzQzO2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4mIzQzO29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4mIzQzOy5QXG4mIzQzO0lmXG4mIzQzOy5JIHNpemVcbiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXG4mIzQzO3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbiYjNDM7KHdoaWNoIGlzIGEgbm8tb3ApLlxuJiM0MztJZlxuJiM0MzsuSSBzaXplXG4mIzQzO2lzIGxhcmdlciB0aGFuIGV4cGVjdGVkLFxuJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87XG4mIzQzO2lmIG5vdCxcbiYjNDM7dGhlIGNhbGwgZmFpbHMgd2l0aFxuJiM0MzsuQlIgRTJCSUcgLlxuJiM0MzsuU0ggRVhBTVBMRVNcbiYjNDM7VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKVxuJiM0Mzt0byBzZXQgdGhlXG4mIzQzOy5CIEZTX1hGTEFHX05PRFVNUFxuJiM0MztmbGFnIG9uIGEgZmlsZS5cbiYjNDM7LlBcbiYjNDM7LmluICYjNDM7NG5cbiYjNDM7LkVYXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2ZjbnRsLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZmNudGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY3N0ZGlvLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjc3lzL3N5c2NhbGwuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2N1bmlzdGQuaFx1MDAzZVxuJiM0MztcbiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG4mIzQzOyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MzsjaWZuZGVmIFNZU19maWxlX3NldGF0dHJcbiYjNDM7I2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuJiM0MzsjZW5kaWZcbiYjNDM7XG4mIzQzO2ludFxuJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4mIzQzO3tcbiYjNDM7ICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbiYjNDM7ICAgIGludCBkZmQ7XG4mIzQzOyAgICBsb25nIHJldDtcbiYjNDM7XG4mIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7XG4mIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwmIzM0O1VzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCYjMzQ7LCBhcmd2WzBdKTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgZGZkID0gb3Blbihhcmd2WzFdLCBPX1JET05MWSk7XG4mIzQzOyAgICBpZiAoZGZkID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7b3BlblwmIzM0Oyk7XG4mIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbiYjNDM7ICAgIGlmIChyZXQgPT0gXFwtMSkge1xuJiM0MzsgICAgICAgIHBlcnJvcihcJiMzNDtmaWxlX2dldGF0dHJcJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICBwcmludGYoXCYjMzQ7Q3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cJiMzNDssICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbiYjNDM7XG4mIzQzOyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuJiM0MztcbiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbiYjNDM7ICAgIGlmIChyZXQgPT0gXFwtMSkge1xuJiM0MzsgICAgICAgIHBlcnJvcihcJiMzNDtmaWxlX3NldGF0dHJcJiMzNDspO1xuJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbiYjNDM7ICAgIH1cbiYjNDM7XG4mIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCYjMzQ7XCYjMzQ7LCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XG4mIzQzOyAgICBpZiAocmV0ID09IFxcLTEpIHtcbiYjNDM7ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuJiM0MzsgICAgICAgIHByaW50ZihcJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwmIzM0OyxcbiYjNDM7ICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuJiM0MztcbiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcbiYjNDM7fVxuJiM0MzsuRUVcbiYjNDM7LmluXG4mIzQzOy5TSCBTRUUgQUxTT1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKSxcbiYjNDM7LkJSIGlvY3RsICgyKSxcbiYjNDM7LkJSIGlvY3RsX2ZzICgyKSxcbiYjNDM7LkJSIG9wZW5hdCAoMiksXG4mIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSxcbiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNylcbmRpZmYgLS1naXQgYS9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlIGIvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZVxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmZkNDI2YzE5ZjVmMGJcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbkBAIC0wLDAgJiM0MzsxLDE4NyBAQFxuJiM0MzsuXFxcJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcbiYjNDM7LlxcXCYjMzQ7XG4mIzQzOy5cXFwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4mIzQzOy5cXFwmIzM0O1xuJiM0MzsuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXCYjMzQ7XG4mIzQzOy5TSCBOQU1FXG4mIzQzO2ZpbGVfYXR0ciBcXC0gZGVzY3JpYmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMgdG8gZ2V0IG9yIHNldFxuJiM0MzsuU0ggU1lOT1BTSVNcbiYjNDM7LkVYXG4mIzQzOy5CICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiYjNDM7LlBcbiYjNDM7LkIgc3RydWN0IGZpbGVfYXR0ciB7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7XCYjMzQ7IFwmIzM0OyAgICAgLyogRXh0ZW5kZWQgZmxhZ3MgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX2V4dHNpemU7XCYjMzQ7IFwmIzM0OyAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCYjMzQ7XG4mIzQzOy5CUiBcJiMzNDsgICAgdTMyICBmYV9uZXh0ZW50cztcJiMzNDsgXCYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDtcJiMzNDsgXCYjMzQ7ICAgICAvKiBQcm9qZWN0IGlkZW50aWZpZXIgKi9cJiMzNDtcbiYjNDM7LkJSIFwmIzM0OyAgICB1MzIgIGZhX2Nvd2V4dHNpemU7XCYjMzQ7IFwmIzM0OyAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wmIzM0O1xuJiM0MzsuQiB9O1xuJiM0MzsuRUVcbiYjNDM7LlNIIERFU0NSSVBUSU9OXG4mIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuJiM0Mztmb3IgdXNlIHdpdGggdGhlXG4mIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpXG4mIzQzO2FuZFxuJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKVxuJiM0MztzeXN0ZW0gY2FsbHMuXG4mIzQzOy5QXG4mIzQzO1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4mIzQzOy5UUFxuJiM0MzsuSSBmYV94ZmxhZ3NcbiYjNDM7VGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbiYjNDM7SXQgaXMgYSBiaXQgbWFzayBjb25zaXN0aW5nIG9mIHplcm8gb3IgbW9yZSBvZiB0aGVcbiYjNDM7LkIgRlNfWEZMQUdfKlxuJiM0MztmbGFncy5cbiYjNDM7UmVmZXIgdG8gdGhlIHNlY3Rpb25cbiYjNDM7LkIgRkxBR1NcbiYjNDM7YmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9leHRzaXplXG4mIzQzO0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplXG4mIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkkgZmFfbmV4dGVudHNcbiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS5cbiYjNDM7VGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMilcbiYjNDM7YW5kIGlzIGlnbm9yZWQgYnlcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikuXG4mIzQzOy5UUFxuJiM0MzsuSSBmYV9wcm9qaWRcbiYjNDM7UHJvamVjdCBpZGVudGlmaWVyLlxuJiM0MztVc2VkIGJ5IHF1b3RhIHN5c3RlbXMgdG8gZ3JvdXAgcmVsYXRlZCBmaWxlcy5cbiYjNDM7LlRQXG4mIzQzOy5JIGZhX2Nvd2V4dHNpemVcbiYjNDM7Q29weS1vbi1Xcml0ZSAoQ29XKSBleHRlbnQgc2l6ZSBoaW50IGluIGJ5dGVzLlxuJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplXG4mIzQzO2ZvciBDb1cgb3BlcmF0aW9ucy5cbiYjNDM7LlNIIEZMQUdTXG4mIzQzO0ZsYWdzIGNhbiBiZTpcbiYjNDM7LlJTXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRVxuJiM0MztEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRVxuJiM0MztGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0FQUEVORFxuJiM0MztBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19TWU5DXG4mIzQzO0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRVxuJiM0MztEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT0RVTVBcbiYjNDM7RG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfREFYXG4mIzQzO1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHXG4mIzQzO0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNXG4mIzQzO1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRVxuJiM0MztVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbiYjNDM7LkkgZmFfZXh0c2l6ZVxuJiM0MztmaWVsZC5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0NPV0VYVFNJWkVcbiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZVxuJiM0MzsuSSBmYV9jb3dleHRzaXplXG4mIzQzO2ZpZWxkLlxuJiM0MzsuUkVcbiYjNDM7LlBcbiYjNDM7RGlyZWN0b3J5IG9ubHkgZmxhZ3M6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUlRJTkhFUklUXG4mIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19OT1NZTUxJTktTXG4mIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LlxuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfRVhUU1pJTkhFUklUXG4mIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19QUk9KSU5IRVJJVFxuJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuXG4mIzQzOy5SRVxuJiM0MzsuUFxuJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6XG4mIzQzOy5SU1xuJiM0MzsuVFBcbiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0NcbiYjNDM7RmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSXG4mIzQzO0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19WRVJJVFlcbiYjNDM7RmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4mIzQzOy5UUFxuJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRFxuJiM0MztUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4mIzQzO2NvbXBhcmlzb25zIGlnbm9yZSBjYXNlKS5cbiYjNDM7LlRQXG4mIzQzOy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4mIzQzO1RoZSBmaWxlc3lzdGVtIGRvZXMgbm90IHByZXNlcnZlIHRoZSBjYXNlIG9mIGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lcy5cbiYjNDM7LlJFXG4mIzQzOy5QXG4mIzQzO05vdCBhbGwgZmlsZXN5c3RlbXMgc3VwcG9ydCBhbGwgZmxhZ3MuXG4mIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhblxuJiM0MzsuQiBFSU5WQUxcbiYjNDM7b3JcbiYjNDM7LkIgRU9QTk9UU1VQUFxuJiM0MztlcnJvci5cbiYjNDM7LlNIIFZFUlNJT05TXG4mIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZVxuJiM0MztUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuJiM0MzsuQiBGSUxFX0FUVFJfU0laRV9WRVIqXG4mIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC5cbiYjNDM7VGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0b1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKVxuJiM0MzthbmRcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4mIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHJcXGZQLlxuJiM0MzsuU1MgRklMRV9BVFRSX1NJWkVfVkVSMFxuJiM0MztTaXplIGlzIDI0IGJ5dGVzLlxuJiM0MzsuU0ggSElTVE9SWVxuJiM0MzsuU1MgTGludXggdjYuMTdcbiYjNDM7VGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbiYjNDM7VGhlXG4mIzQzOy5JIHN0cnVjdCBmaWxlX2F0dHJcbiYjNDM7cHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4mIzQzOy5JIHN0cnVjdCBmc3hhdHRyXG4mIzQzO3VzZWQgYnkgdGhlXG4mIzQzOy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4mIzQzO2FuZFxuJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUlxuJiM0MzsuQlIgaW9jdGwgKDIpXG4mIzQzO29wZXJhdGlvbnMsXG4mIzQzO2J1dCBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlIHRocm91Z2ggdGhlXG4mIzQzOy5JIHNpemVcbiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuXG4mIzQzOy5QXG4mIzQzO0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3NcbiYjNDM7Zm9yIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBzdHJ1Y3R1cmUuXG4mIzQzO1RoZXJlZm9yZSwgYSB1c2VyXG4mIzQzOy5JIG11c3RcbiYjNDM7emVyby1maWxsIHRoZSBzdHJ1Y3R1cmUgb24gaW5pdGlhbGl6YXRpb24gdG8ga2VlcCBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXJcbiYjNDM7a2VybmVscy5cbiYjNDM7LlNTIExpbnV4IHY3LjJcbiYjNDM7VGhlIEZTX1hGTEFHX0NBU0VGT0xEIGFuZCBGU19YRkxBR19DQVNFTk9OUFJFU0VSVklORyBhcmUgaW50cm9kdWNlZCB0byBlbmFibGVcbiYjNDM7dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4mIzQzOy5TSCBTRUUgQUxTT1xuJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKSxcbiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZGEyOWM2MmFlYmNjNzYzNjcxNWZjOGQ5ZDMwMDY2ZTJjNzRjOTgwMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi4yZDlhNmQzMzhhNWU5Ci0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIKQEAgLTAsMCAmIzQzOzEsMjc5IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfZ2V0YXR0ciAyIChkYXRlKSAmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZCkmIzM0OwomIzQzOy5TSCBOQU1FCiYjNDM7ZmlsZV9nZXRhdHRyIFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXMKJiM0MzsuU0ggU1lOT1BTSVMKJiM0MzsubmYKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZmNudGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qICYjMzQ7IEFUXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsmIzM0OyAmIzM0OyAgICAgICAgIC8qIHN0cnVjdCAmIzM0OyBmaWxlX2F0dHIgJiMzNDsgYW5kICYjMzQ7IEZTX1hGTEFHXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsmIzM0OyAmIzM0OyAgICAgIC8qICYjMzQ7IFNZU18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkIgI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOy5QCiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgaW50ICYjMzQ7IGRpcmZkICYjMzQ7LCBjb25zdCBjaGFyIComIzM0OyBwYXRobmFtZSAsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqJiMzNDsgZmF0dHIgJiMzNDssIHNpemVfdCAmIzM0OyBzaXplICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgJiMzNDsgZmxhZ3MgKTsKJiM0MzsuZmkKJiM0MzsuUAomIzQzOy5JUiBOb3RlIDoKJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvcgomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCksCiYjNDM7dXNlCiYjNDM7LkJSIHN5c2NhbGwgKDIpCiYjNDM7aW5zdGVhZC4KJiM0MzsuU0ggREVTQ1JJUFRJT04KJiM0MztUaGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgpCiYjNDM7c3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzCiYjNDM7ZnJvbSB0aGUgZmlsZSBzcGVjaWZpZWQgYnkKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5QCiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlCiYjNDM7LkIgRlNfSU9DX0ZTR0VUWEFUVFIKJiM0MzsuQlIgaW9jdGwgKDIpCiYjNDM7b3BlcmF0aW9uLAomIzQzO2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC4KJiM0MztCeSB1c2luZyBhIHBhdGhuYW1lLAomIzQzOy5CUiBmaWxlX2dldGF0dHIgKCkKJiM0MztjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXMKJiM0Mztmcm9tIGFsbCBmaWxlIHR5cGVzLAomIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIHN1Y2ggYXMgRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlcgomIzQzO2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS4KJiM0MzsuUAomIzQzO0FzIHdpdGgKJiM0MzsuQlIgb3BlbmF0ICgyKSwKJiM0MztpZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUsCiYjNDM7dGhlbiBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5CiYjNDM7cmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvcgomIzQzOy5JUiBkaXJmZCAuCiYjNDM7VGhlIHNwZWNpYWwgdmFsdWUKJiM0MzsuQiBBVF9GRENXRAomIzQzO2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYWJzb2x1dGUsCiYjNDM7dGhlbgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgaWdub3JlZC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZhdHRyCiYjNDM7YXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUuCiYjNDM7VGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBmaWxsZWQgd2l0aCBmaWxlIGF0dHJpYnV0ZXMuCiYjNDM7VGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluCiYjNDM7LkJSIGZpbGVfYXR0cigydHlwZSkgLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKJiM0MzsuSVIgZmF0dHIgLgomIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0bwomIzQzOy5CIGZpbGVfYXR0cigydHlwZSkKJiM0Mztmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLgomIzQzOy5QCiYjNDM7VXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBzaG91bGQgemVyby1pbml0aWFsaXplCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO2JlZm9yZSBjYWxsaW5nCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO3RvIGVuc3VyZSB0aGF0IGZpZWxkcyBub3QgZmlsbGVkIGluIGJ5IG9sZGVyIGtlcm5lbHMKJiM0Mzt3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrLCBhdmFpbGFibGUgZmxhZ3MgYXJlOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSVIgZGlyZmQgLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDsKJiM0MztpbnN0ZWFkIGdldCBhdHRyaWJ1dGVzIG9mIHRoZSBzeW1ib2xpYyBsaW5rIGlub2RlIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0LCBzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLgomIzQzOy5TSCBSRVRVUk4gVkFMVUUKJiM0MztPbiBzdWNjZXNzLAomIzQzO3plcm8gaXMgcmV0dXJuZWQuCiYjNDM7T24gZXJyb3IsCiYjNDM7XC0xIGlzIHJldHVybmVkLAomIzQzO2FuZAomIzQzOy5JIGVycm5vCiYjNDM7aXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4KJiM0MzsuU0ggRVJST1JTCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aXMgdG9vIGJpZyAobGFyZ2VyIHRoYW4KJiM0MzsuQlIgUEFHRV9TSVpFICkuCiYjNDM7LlRQCiYjNDM7LkIgRUFDQ0VTCiYjNDM7U2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzCiYjNDM7aW4gdGhlIHBhdGggcHJlZml4IG9mCiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgcmVsYXRpdmUgYnV0CiYjNDM7LkkgZGlyZmQKJiM0MztpcyBuZWl0aGVyCiYjNDM7LkIgQVRfRkRDV0QKJiM0Mztub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuCiYjNDM7LlRQCiYjNDM7LkIgRUJBREYKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIGFuIGVtcHR5IHN0cmluZywKJiM0MzsuQiBBVF9FTVBUWV9QQVRICiYjNDM7d2FzIHNwZWNpZmllZCwKJiM0MztidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVMT09QCiYjNDM7VG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nCiYjNDM7LklSIHBhdGhuYW1lIC4KJiM0MzsuVFAKJiM0MzsuQiBFTkFNRVRPT0xPTkcKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHRvbyBsb25nLgomIzQzOy5UUAomIzQzOy5CIEVOT0VOVAomIzQzO0EgY29tcG9uZW50IG9mCiYjNDM7LkkgcGF0aG5hbWUKJiM0Mztkb2VzIG5vdCBleGlzdCwKJiM0MztvcgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nIGFuZAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgbm90IHNwZWNpZmllZCBpbgomIzQzOy5JUiBmbGFncyAuCiYjNDM7LlRQCiYjNDM7LkIgRU5PTUVNCiYjNDM7SW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS4KJiM0MzsuVFAKJiM0MzsuQiBFTk9URElSCiYjNDM7QSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBub3QgYSBkaXJlY3Rvcnkgb3IsCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBhbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS4KJiM0MzsuVFAKJiM0MzsuQiBFT1BOT1RTVVBQCiYjNDM7VGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLgomIzQzOy5TSCBISVNUT1JZCiYjNDM7LlNTIExpbnV4IDYuMTcKJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZQomIzQzO0ZTX0lPQ19GU0dFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZS4KJiM0MzsuU0ggTk9URVMKJiM0MztUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IGFsbG93cyB1c2Vyc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7b25seSB0aGUgZmllbGRzIHRoYXQgZml0IHdpdGhpbgomIzQzOy5JIHNpemUKJiM0Mzt3aWxsIGJlIGZpbGxlZCBpbi4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiB0aGUga2VybmVsJiMzOTtzIHN0cnVjdHVyZSBzaXplLAomIzQzO3RoZSBleHRyYSBieXRlcyBhcmUgemVyb2VkLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoKQomIzQzO3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzeXMvc3lzY2FsbC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDt1bmlzdGQuaCZndDsKJiM0MzsKJiM0MzsjaWZuZGVmIFNZU19maWxlX2dldGF0dHIKJiM0MzsjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3CiYjNDM7I2VuZGlmCiYjNDM7CiYjNDM7aW50CiYjNDM7bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQomIzQzO3sKJiM0MzsgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9OwomIzQzOyAgICBsb25nIHJldDsKJiM0MzsKJiM0MzsgICAgaWYgKGFyZ2MgIT0gMikgewomIzQzOyAgICAgICAgZnByaW50ZihzdGRlcnIsICYjMzQ7VXNhZ2U6ICVzICZsdDtmaWxlbmFtZSZndDtcXG4mIzM0OywgYXJndlswXSk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgMCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7RmlsZSBhdHRyaWJ1dGVzOlxcbiYjMzQ7KTsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7ICB4ZmxhZ3M6ICAgICAweCVsbHhcXG4mIzM0OywgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIGV4dHNpemU6ICAgICV1XFxuJiMzNDssIGZhLmZhX2V4dHNpemUpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIG5leHRlbnRzOiAgICV1XFxuJiMzNDssIGZhLmZhX25leHRlbnRzKTsKJiM0MzsgICAgcHJpbnRmKCYjMzQ7ICBwcm9qaWQ6ICAgICAldVxcbiYjMzQ7LCBmYS5mYV9wcm9qaWQpOwomIzQzOyAgICBwcmludGYoJiMzNDsgIGNvd2V4dHNpemU6ICV1XFxuJiMzNDssIGZhLmZhX2Nvd2V4dHNpemUpOwomIzQzOwomIzQzOyAgICAvKgomIzQzOyAgICAgKiBUcnkgc2V0dGluZyBOT0RVTVAgZmxhZyB3aXRoIGNoYXR0ciAmIzQzO2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlCiYjNDM7ICAgICAqLwomIzQzOyAgICBpZiAoZmEuZmFfeGZsYWdzICZhbXA7IEZTX1hGTEFHX05PRFVNUCkKJiM0MzsgICAgICAgIHByaW50ZigmIzM0OyAgTk9EVU1QIGZsYWcgaXMgc2V0XFxuJiMzNDspOwomIzQzOwomIzQzOyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7CiYjNDM7fQomIzQzOy5FRQomIzQzOy5pbgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgaW9jdGwgKDIpLAomIzQzOy5CUiBpb2N0bF9mcyAoMiksCiYjNDM7LkJSIG9wZW5hdCAoMikKZGlmZiAtLWdpdCBhL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yIGIvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYzM0MGJkY2FiMDY1NAotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yCkBAIC0wLDAgJiM0MzsxLDMzMyBAQAomIzQzOy5cJiMzNDsgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QKJiM0MzsuXCYjMzQ7CiYjNDM7LlwmIzM0OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0CiYjNDM7LlwmIzM0OwomIzQzOy5USCBmaWxlX3NldGF0dHIgMiAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfc2V0YXR0ciBcLSBzZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzCiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7Lm5mCiYjNDM7LkJSICYjMzQ7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7JiMzNDsgJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mICYjMzQ7IEFUXyogJiMzNDsgY29uc3RhbnRzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsjaW5jbHVkZSAmbHQ7bGludXgvZnMuaCZndDsmIzM0OyAmIzM0OyAgICAgICAgIC8qIERlZmluaXRpb24gb2YgJiMzNDsgRklMRV9BVFRSXyogXAomIzQzOyYjMzQ7IGFuZCAmIzM0OyBGU19YRkxBR18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkJSICYjMzQ7I2luY2x1ZGUgJmx0O3N5cy9zeXNjYWxsLmgmZ3Q7JiMzNDsgJiMzNDsgICAgICAvKiBEZWZpbml0aW9uIG9mICYjMzQ7IFNZU18qICYjMzQ7IGNvbnN0YW50cyAqLyYjMzQ7CiYjNDM7LkIgI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwomIzQzOy5QCiYjNDM7LkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgaW50ICYjMzQ7IGRpcmZkICYjMzQ7LCBjb25zdCBjaGFyIComIzM0OyBwYXRobmFtZSAsCiYjNDM7LkJJICYjMzQ7ICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqJiMzNDsgZmF0dHIgJiMzNDssIHNpemVfdCAmIzM0OyBzaXplICwKJiM0MzsuQkkgJiMzNDsgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgJiMzNDsgZmxhZ3MgKTsKJiM0MzsuZmkKJiM0MzsuUAomIzQzOy5JUiBOb3RlIDoKJiM0MztnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvcgomIzQzOy5CUiBmaWxlX3NldGF0dHIgKCksCiYjNDM7bmVjZXNzaXRhdGluZyB0aGUgdXNlIG9mCiYjNDM7LkJSIHN5c2NhbGwgKDIpLgomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO1RoZQomIzQzOy5CUiBmaWxlX3NldGF0dHIgKCkKJiM0MztzeXN0ZW0gY2FsbCBzZXRzIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzO29uIHRoZSBmaWxlIHNwZWNpZmllZCBieQomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7LlAKJiM0MztUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUKJiM0MzsuQiBGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0MztvcGVyYXRpb24sCiYjNDM7YnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLgomIzQzO0J5IHVzaW5nIGEgcGF0aG5hbWUgaW5zdGVhZCBvZiByZXF1aXJpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlcwomIzQzO29uIGFsbCBmaWxlIHR5cGVzLAomIzQzO2luY2x1ZGluZyBzcGVjaWFsIGZpbGVzIChGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyIGRldmljZXMpCiYjNDM7d2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS4KJiM0MztXaXRoCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MztpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVycwomIzQzO2RpcmVjdGx5IHRvIHRoZSBmaWxlc3lzdGVtIGlub2RlIGZvciBzcGVjaWFsIGZpbGVzLgomIzQzOy5QCiYjNDM7QXMgd2l0aAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzO2lmCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSwKJiM0Mzt0aGVuIGl0IGlzIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKJiM0MztyZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yCiYjNDM7LkkgZGlyZmQKJiM0Mzsob3IgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2VzcywKJiM0MztpZgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgdGhlIHNwZWNpYWwgdmFsdWUKJiM0MzsuQlIgQVRfRkRDV0QgKS4KJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYWJzb2x1dGUsCiYjNDM7dGhlbgomIzQzOy5JIGRpcmZkCiYjNDM7aXMgaWdub3JlZC4KJiM0MzsuUAomIzQzO1RoZQomIzQzOy5JIGZhdHRyCiYjNDM7YXJndW1lbnQgaXMgYSBwb2ludGVyIHRvIGEKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUsCiYjNDM7d2hpY2ggc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRvIHNldCBvbiB0aGUgZmlsZS4KJiM0MztUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW4KJiM0MzsuQlIgZmlsZV9hdHRyICgydHlwZSkuCiYjNDM7VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZQomIzQzOy5CIGZpbGVfZ2V0YXR0cigyKQomIzQzO3RvIGluaXRpYWxpemUKJiM0MzsuSSBzdHJ1Y3QgZmF0dHIKJiM0MztiZWZvcmVoYW5kLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7Lkkgc2l6ZQomIzQzO2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKJiM0MzsuSVIgZmF0dHIgLgomIzQzO1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0bwomIzQzOy5CIGZpbGVfYXR0cigydHlwZSkKJiM0Mztmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB2ZXJzaW9uaW5nLgomIzQzOy5QCiYjNDM7VGhlCiYjNDM7LkkgZmxhZ3MKJiM0Mzthcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGluY2x1ZGUgemVybyBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgomIzQzOy5UUAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzO29wZXJhdGUgb24gdGhlIGZpbGUgcmVmZXJyZWQgdG8gYnkKJiM0MzsuSSBkaXJmZAomIzQzOyh3aGljaCBtYXkgaGF2ZSBiZWVuIG9idGFpbmVkIHVzaW5nIHRoZQomIzQzOy5CUiBvcGVuICgyKQomIzQzOy5CIE9fUEFUSAomIzQzO2ZsYWcpLgomIzQzO0luIHRoaXMgY2FzZSwKJiM0MzsuSSBkaXJmZAomIzQzO2NhbiByZWZlciB0byBhbnkgdHlwZSBvZiBmaWxlLAomIzQzO25vdCBqdXN0IGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEFUX1NZTUxJTktfTk9GT0xMT1cKJiM0MztJZgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYSBzeW1ib2xpYyBsaW5rLAomIzQzO2RvIG5vdCBkZXJlZmVyZW5jZSBpdDoKJiM0MztpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi4KJiM0MztCeSBkZWZhdWx0IChpLmUuLCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCksCiYjNDM7c3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC4KJiM0MzsuU0ggUkVUVVJOIFZBTFVFCiYjNDM7T24gc3VjY2VzcywKJiM0Mzt6ZXJvIGlzIHJldHVybmVkLgomIzQzO09uIGVycm9yLAomIzQzO1wtMSBpcyByZXR1cm5lZCwKJiM0MzthbmQKJiM0MzsuSSBlcnJubwomIzQzO2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuCiYjNDM7LlNIIEVSUk9SUwomIzQzOy5UUAomIzQzOy5CIEUyQklHCiYjNDM7Lkkgc2l6ZQomIzQzO2lzIGxhcmdlciB0aGFuCiYjNDM7LkJSIFBBR0VfU0laRSAuCiYjNDM7LlRQCiYjNDM7LkIgRTJCSUcKJiM0MzsuSSBzaXplCiYjNDM7aW5kaWNhdGVzIHRoZSB2ZXJzaW9uIHdoaWNoIGtlcm5lbCBkb2VzbiYjMzk7dCBzdXBwb3J0ICh0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUKJiM0MztrZXJuZWwgZXhwZWN0cykgYW5kIG5ldyBmaWVsZHMgYXJlIG5vbi16ZXJvLgomIzQzOy5UUAomIzQzOy5CIEVBQ0NFUwomIzQzO1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3RvcmllcwomIzQzO2luIHRoZSBwYXRoIHByZWZpeCBvZgomIzQzOy5JUiBwYXRobmFtZSAuCiYjNDM7KFNlZSBhbHNvCiYjNDM7LkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKQomIzQzOy5UUAomIzQzOy5CIEVCQURGCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyByZWxhdGl2ZSBidXQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIG5laXRoZXIKJiM0MzsuQiBBVF9GRENXRAomIzQzO25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci4KJiM0MzsuVFAKJiM0MzsuQiBFQkFERgomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgYW4gZW1wdHkgc3RyaW5nLAomIzQzOy5CIEFUX0VNUFRZX1BBVEgKJiM0Mzt3YXMgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzICwKJiM0MzthbmQKJiM0MzsuSSBkaXJmZAomIzQzO2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLgomIzQzOy5UUAomIzQzOy5CIEVGQVVMVAomIzQzOy5JIHBhdGhuYW1lCiYjNDM7b3IKJiM0MzsuSSBmYXR0cgomIzQzO2lzIGFuIGludmFsaWQgcG9pbnRlci4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MztJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFSU5WQUwKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuCiYjNDM7LkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLgomIzQzOy5UUAomIzQzOy5CIEVJTlZBTAomIzQzO0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpbgomIzQzOy5JIGZhdHRyCiYjNDM7Zm9yIHRoaXMgdHlwZSBvZiBmaWxlIG9yIGZpbGVzeXN0ZW0uCiYjNDM7LlRQCiYjNDM7LkIgRUxPT1AKJiM0MztUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmcKJiM0MzsuSVIgcGF0aG5hbWUgLgomIzQzOy5UUAomIzQzOy5CIEVOQU1FVE9PTE9ORwomIzQzOy5JIHBhdGhuYW1lCiYjNDM7aXMgdG9vIGxvbmcuCiYjNDM7LlRQCiYjNDM7LkIgRU5PRU5UCiYjNDM7QSBjb21wb25lbnQgb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2RvZXMgbm90IGV4aXN0LAomIzQzO29yCiYjNDM7LkkgcGF0aG5hbWUKJiM0MztpcyBhbiBlbXB0eSBzdHJpbmcgYW5kCiYjNDM7LkIgQVRfRU1QVFlfUEFUSAomIzQzO3dhcyBub3Qgc3BlY2lmaWVkIGluCiYjNDM7LklSIGZsYWdzIC4KJiM0MzsuVFAKJiM0MzsuQiBFTk9NRU0KJiM0MztJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLgomIzQzOy5UUAomIzQzOy5CIEVOT1RESVIKJiM0MztBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2YKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIG5vdCBhIGRpcmVjdG9yeSBvciwKJiM0MzsuSSBwYXRobmFtZQomIzQzO2lzIHJlbGF0aXZlIGFuZAomIzQzOy5JIGRpcmZkCiYjNDM7aXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEVPUE5PVFNVUFAKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuCiYjNDM7LlRQCiYjNDM7LkIgRVBFUk0KJiM0MztUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucwomIzQzO3RvIGNoYW5nZSB0aGUgZmlsZSBhdHRyaWJ1dGVzLgomIzQzOy5UUAomIzQzOy5CIEVST0ZTCiYjNDM7VGhlIGZpbGUgaXMgb24gYSByZWFkLW9ubHkgZmlsZXN5c3RlbS4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCA2LjE3CiYjNDM7VGhpcyBzeXN0ZW0gY2FsbCBpcyBpbnRyb2R1Y2VkIGFzIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZSB0byB0aGUKJiM0MztGU19JT0NfRlNTRVRYQVRUUgomIzQzOy5CUiBpb2N0bCAoMikKJiM0Mzt3aGljaCBjb3VsZCB3b3JrIG9uIGFueSB0eXBlIG9mIGZpbGVzLgomIzQzOy5TSCBOT1RFUwomIzQzO1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7YXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlCiYjNDM7d2hpY2ggdmVyc2lvbiBvZiB0aGUKJiM0MzsuSSBmaWxlX2F0dHIKJiM0MztzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsCiYjNDM7ZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnMKJiM0MztvZiB0aGUgc3RydWN0dXJlIHNpbXVsdGFuZW91c2x5LgomIzQzOy5QCiYjNDM7SWYKJiM0MzsuSSBzaXplCiYjNDM7aXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsCiYjNDM7dGhlIGtlcm5lbCB0cmVhdHMgdGhlIG1pc3NpbmcgZmllbGRzIGFzIGhhdmluZyB6ZXJvIHZhbHVlcwomIzQzOyh3aGljaCBpcyBhIG5vLW9wKS4KJiM0MztJZgomIzQzOy5JIHNpemUKJiM0MztpcyBsYXJnZXIgdGhhbiBleHBlY3RlZCwKJiM0Mzt0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87CiYjNDM7aWYgbm90LAomIzQzO3RoZSBjYWxsIGZhaWxzIHdpdGgKJiM0MzsuQlIgRTJCSUcgLgomIzQzOy5TSCBFWEFNUExFUwomIzQzO1RoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoKQomIzQzO3RvIHNldCB0aGUKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztmbGFnIG9uIGEgZmlsZS4KJiM0MzsuUAomIzQzOy5pbiAmIzQzOzRuCiYjNDM7LkVYCiYjNDM7I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZjbnRsLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGlvLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O3N0ZGxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7c3lzL3N5c2NhbGwuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7dW5pc3RkLmgmZ3Q7CiYjNDM7CiYjNDM7I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyCiYjNDM7I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2NwomIzQzOyNlbmRpZgomIzQzOwomIzQzOyNpZm5kZWYgU1lTX2ZpbGVfc2V0YXR0cgomIzQzOyNkZWZpbmUgU1lTX2ZpbGVfc2V0YXR0ciA0NjgKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MztpbnQKJiM0MzttYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiYjNDM7ewomIzQzOyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07CiYjNDM7ICAgIGludCBkZmQ7CiYjNDM7ICAgIGxvbmcgcmV0OwomIzQzOwomIzQzOyAgICBpZiAoYXJnYyAhPSAyKSB7CiYjNDM7ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgJiMzNDtVc2FnZTogJXMgJmx0O2ZpbGVuYW1lJmd0O1xcbiYjMzQ7LCBhcmd2WzBdKTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTsKJiM0MzsgICAgaWYgKGRmZCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O29wZW4mIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsICYjMzQ7JiMzNDssICZhbXA7ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpOwomIzQzOyAgICBpZiAocmV0ID09IFwtMSkgewomIzQzOyAgICAgICAgcGVycm9yKCYjMzQ7ZmlsZV9nZXRhdHRyJiMzNDspOwomIzQzOyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOwomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIHByaW50ZigmIzM0O0N1cnJlbnQgZmxhZ3M6IDB4JWxseFxcbiYjMzQ7LCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGZhLmZhX3hmbGFncyB8PSBGU19YRkxBR19OT0RVTVA7CiYjNDM7CiYjNDM7ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfc2V0YXR0ciwgZGZkLCAmIzM0OyYjMzQ7LCAmYW1wO2ZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTsKJiM0MzsgICAgaWYgKHJldCA9PSBcLTEpIHsKJiM0MzsgICAgICAgIHBlcnJvcigmIzM0O2ZpbGVfc2V0YXR0ciYjMzQ7KTsKJiM0MzsgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgJiMzNDsmIzM0OywgJmFtcDtmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7CiYjNDM7ICAgIGlmIChyZXQgPT0gXC0xKSB7CiYjNDM7ICAgICAgICBwZXJyb3IoJiMzNDtmaWxlX2dldGF0dHImIzM0Oyk7CiYjNDM7ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgaWYgKGZhLmZhX3hmbGFncyAmYW1wOyBGU19YRkxBR19OT0RVTVApCiYjNDM7ICAgICAgICBwcmludGYoJiMzNDtmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXG4mIzM0OywKJiM0MzsgICAgICAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7CiYjNDM7CiYjNDM7ICAgIGV4aXQoRVhJVF9TVUNDRVNTKTsKJiM0Mzt9CiYjNDM7LkVFCiYjNDM7LmluCiYjNDM7LlNIIFNFRSBBTFNPCiYjNDM7LkJSIGZpbGVfZ2V0YXR0ciAoMiksCiYjNDM7LkJSIGlvY3RsICgyKSwKJiM0MzsuQlIgaW9jdGxfZnMgKDIpLAomIzQzOy5CUiBvcGVuYXQgKDIpLAomIzQzOy5CUiBmaWxlX2F0dHIgKDJ0eXBlKSwKJiM0MzsuQlIgcGF0aF9yZXNvbHV0aW9uICg3KQpkaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uZmQ0MjZjMTlmNWYwYgotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUKQEAgLTAsMCAmIzQzOzEsMTg3IEBACiYjNDM7LlwmIzM0OyBDb3B5cmlnaHQsIHRoZSBhdXRob3JzIG9mIHRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdAomIzQzOy5cJiMzNDsKJiM0MzsuXCYjMzQ7IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMaW51eC1tYW4tcGFnZXMtY29weWxlZnQKJiM0MzsuXCYjMzQ7CiYjNDM7LlRIIGZpbGVfYXR0ciAydHlwZSAoZGF0ZSkgJiMzNDtMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpJiMzNDsKJiM0MzsuU0ggTkFNRQomIzQzO2ZpbGVfYXR0ciBcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0CiYjNDM7LlNIIFNZTk9QU0lTCiYjNDM7LkVYCiYjNDM7LkIgI2luY2x1ZGUgJmx0O2xpbnV4L2ZzLmgmZ3Q7CiYjNDM7LlAKJiM0MzsuQiBzdHJ1Y3QgZmlsZV9hdHRyIHsKJiM0MzsuQlIgJiMzNDsgICAgdTY0ICBmYV94ZmxhZ3M7JiMzNDsgJiMzNDsgICAgIC8qIEV4dGVuZGVkIGZsYWdzICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9leHRzaXplOyYjMzQ7ICYjMzQ7ICAgIC8qIEV4dGVudCBzaXplIGhpbnQgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX25leHRlbnRzOyYjMzQ7ICYjMzQ7ICAgLyogTnVtYmVyIG9mIGV4dGVudHMgKHJlYWQtb25seSkgKi8mIzM0OwomIzQzOy5CUiAmIzM0OyAgICB1MzIgIGZhX3Byb2ppZDsmIzM0OyAmIzM0OyAgICAgLyogUHJvamVjdCBpZGVudGlmaWVyICovJiMzNDsKJiM0MzsuQlIgJiMzNDsgICAgdTMyICBmYV9jb3dleHRzaXplOyYjMzQ7ICYjMzQ7IC8qIENvVyBleHRlbnQgc2l6ZSBoaW50ICovJiMzNDsKJiM0MzsuQiB9OwomIzQzOy5FRQomIzQzOy5TSCBERVNDUklQVElPTgomIzQzO0Rlc2NyaWJlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcwomIzQzO2ZvciB1c2Ugd2l0aCB0aGUKJiM0MzsuQlIgZmlsZV9nZXRhdHRyICgyKQomIzQzO2FuZAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCiYjNDM7c3lzdGVtIGNhbGxzLgomIzQzOy5QCiYjNDM7VGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czoKJiM0MzsuVFAKJiM0MzsuSSBmYV94ZmxhZ3MKJiM0MztUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLgomIzQzO0l0IGlzIGEgYml0IG1hc2sgY29uc2lzdGluZyBvZiB6ZXJvIG9yIG1vcmUgb2YgdGhlCiYjNDM7LkIgRlNfWEZMQUdfKgomIzQzO2ZsYWdzLgomIzQzO1JlZmVyIHRvIHRoZSBzZWN0aW9uCiYjNDM7LkIgRkxBR1MKJiM0MztiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy4KJiM0MzsuVFAKJiM0MzsuSSBmYV9leHRzaXplCiYjNDM7RXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuCiYjNDM7VGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZQomIzQzO2ZvciBuZXcgYWxsb2NhdGlvbnMgdG8gdGhpcyBmaWxlLgomIzQzOy5UUAomIzQzOy5JIGZhX25leHRlbnRzCiYjNDM7TnVtYmVyIG9mIGRhdGEgZXh0ZW50cyBpbiB0aGUgZmlsZSAocmVhZC1vbmx5KS4KJiM0MztUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieQomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kIGlzIGlnbm9yZWQgYnkKJiM0MzsuQlIgZmlsZV9zZXRhdHRyICgyKS4KJiM0MzsuVFAKJiM0MzsuSSBmYV9wcm9qaWQKJiM0MztQcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7VXNlZCBieSBxdW90YSBzeXN0ZW1zIHRvIGdyb3VwIHJlbGF0ZWQgZmlsZXMuCiYjNDM7LlRQCiYjNDM7LkkgZmFfY293ZXh0c2l6ZQomIzQzO0NvcHktb24tV3JpdGUgKENvVykgZXh0ZW50IHNpemUgaGludCBpbiBieXRlcy4KJiM0MztUaGlzIHZhbHVlIHN1Z2dlc3RzIGEgcHJlZmVycmVkIGV4dGVudCBzaXplCiYjNDM7Zm9yIENvVyBvcGVyYXRpb25zLgomIzQzOy5TSCBGTEFHUwomIzQzO0ZsYWdzIGNhbiBiZToKJiM0MzsuUlMKJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19SRUFMVElNRQomIzQzO0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0lNTVVUQUJMRQomIzQzO0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0FQUEVORAomIzQzO0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19TWU5DCiYjNDM7QWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9BVElNRQomIzQzO0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19OT0RVTVAKJiM0MztEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfREFYCiYjNDM7VXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX05PREVGUkFHCiYjNDM7RXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19GSUxFU1RSRUFNCiYjNDM7VXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfRVhUU0laRQomIzQzO1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DT1dFWFRTSVpFCiYjNDM7VXNlIHRoZSBDb1cgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZQomIzQzOy5JIGZhX2Nvd2V4dHNpemUKJiM0MztmaWVsZC4KJiM0MzsuUkUKJiM0MzsuUAomIzQzO0RpcmVjdG9yeSBvbmx5IGZsYWdzOgomIzQzOy5SUwomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX1JUSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHJlYWx0aW1lIGZsYWcuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfTk9TWU1MSU5LUwomIzQzO0Rpc2FsbG93IGNyZWF0aW9uIG9mIHN5bWJvbGljIGxpbmtzIGluIHRoaXMgZGlyZWN0b3J5LgomIzQzOy5UUAomIzQzOy5CIEZTX1hGTEFHX0VYVFNaSU5IRVJJVAomIzQzO05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIGV4dGVudCBzaXplIGhpbnQuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJPSklOSEVSSVQKJiM0MztOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBwcm9qZWN0IGlkZW50aWZpZXIuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSByZWFkLW9ubHk6CiYjNDM7LlJTCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfUFJFQUxMT0MKJiM0MztGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19IQVNBVFRSCiYjNDM7RmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19WRVJJVFkKJiM0MztGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC4KJiM0MzsuVFAKJiM0MzsuQiBGU19YRkxBR19DQVNFRk9MRAomIzQzO1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWUKJiM0Mztjb21wYXJpc29ucyBpZ25vcmUgY2FzZSkuCiYjNDM7LlRQCiYjNDM7LkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcKJiM0MztUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgY2FzZSBvZiBmaWxlIGFuZCBkaXJlY3RvcnkgbmFtZXMuCiYjNDM7LlJFCiYjNDM7LlAKJiM0MztOb3QgYWxsIGZpbGVzeXN0ZW1zIHN1cHBvcnQgYWxsIGZsYWdzLgomIzQzO1NldHRpbmcgdW5zdXBwb3J0ZWQgZmxhZ3MgbWF5IHJlc3VsdCBpbiBhbgomIzQzOy5CIEVJTlZBTAomIzQzO29yCiYjNDM7LkIgRU9QTk9UU1VQUAomIzQzO2Vycm9yLgomIzQzOy5TSCBWRVJTSU9OUwomIzQzOy5TUyBTdHJ1Y3R1cmUgc2l6ZQomIzQzO1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5CiYjNDM7LkIgRklMRV9BVFRSX1NJWkVfVkVSKgomIzQzO3doaWNoIGlzIGFsc28gYSB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgYmVpbmcgdXNlZC4KJiM0MztUaGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIHBhc3NlZCB0bwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpCiYjNDM7YW5kCiYjNDM7LkJSIGZpbGVfc2V0YXR0ciAoMikKJiM0MztpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YKJiM0MzsuSSBzdHJ1Y3QgZmlsZV9hdHRyXGZQLgomIzQzOy5TUyBGSUxFX0FUVFJfU0laRV9WRVIwCiYjNDM7U2l6ZSBpcyAyNCBieXRlcy4KJiM0MzsuU0ggSElTVE9SWQomIzQzOy5TUyBMaW51eCB2Ni4xNwomIzQzO1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuCiYjNDM7VGhlCiYjNDM7Lkkgc3RydWN0IGZpbGVfYXR0cgomIzQzO3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0bwomIzQzOy5JIHN0cnVjdCBmc3hhdHRyCiYjNDM7dXNlZCBieSB0aGUKJiM0MzsuQiBGU19JT0NfRlNHRVRYQVRUUgomIzQzO2FuZAomIzQzOy5CIEZTX0lPQ19GU1NFVFhBVFRSCiYjNDM7LkJSIGlvY3RsICgyKQomIzQzO29wZXJhdGlvbnMsCiYjNDM7YnV0IGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUgdGhyb3VnaCB0aGUKJiM0MzsuSSBzaXplCiYjNDM7cGFyYW1ldGVyIG9mIHRoZSBzeXN0ZW0gY2FsbHMuCiYjNDM7LlAKJiM0MztFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy4KJiM0MztUaGUga2VybmVsIHdpbGwgZXhwZWN0IG5ldyBmaWVsZHMgdG8gYmUgemVyb3MKJiM0Mztmb3Igb2xkZXIgdmVyc2lvbnMgb2YgdGhlIHN0cnVjdHVyZS4KJiM0MztUaGVyZWZvcmUsIGEgdXNlcgomIzQzOy5JIG11c3QKJiM0Mzt6ZXJvLWZpbGwgdGhlIHN0cnVjdHVyZSBvbiBpbml0aWFsaXphdGlvbiB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlcgomIzQzO2tlcm5lbHMuCiYjNDM7LlNTIExpbnV4IHY3LjIKJiM0MztUaGUgRlNfWEZMQUdfQ0FTRUZPTEQgYW5kIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HIGFyZSBpbnRyb2R1Y2VkIHRvIGVuYWJsZQomIzQzO3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLgomIzQzOy5TSCBTRUUgQUxTTwomIzQzOy5CUiBmaWxlX2dldGF0dHIgKDIpLAomIzQzOy5CUiBmaWxlX3NldGF0dHIgKDIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5OTIKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWVwIERpdmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIHBhdGNoIGl0c2VsZi4gSG93ZXZlciwgaG9sZCBvbiBhIHNlY29uZDsgSSBuZWVkIHRvIGFwcHJvYWNoIHRoaXMgbWV0aG9kaWNhbGx5LiBGaXJzdCwgbGV0JiMzOTtzIHBpbnBvaW50IHdoYXQmIzM5O3MgKmFjdHVhbGx5KiBiZWVuIG1vZGlmaWVkLiBUaGUgZGlmZiByZXZlYWxzIGNoYW5nZXMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gSW50ZXJlc3RpbmcuCgpOb3csIGEgY3JpdGljYWwgc3RlcDogSSBuZWVkIGNvbnRleHQuIFRoaXMgZGlmZiBjb3VsZCBiZSBwYXJ0IG9mIGEgbGFyZ2VyIGNoYW5nZS4gSSBoYXZlIHRvIHZlcmlmeSBpZiB0aGlzIHJlcHJlc2VudHMgdGhlIHdob2xlIHN0b3J5LiBJJiMzOTtkIHVzdWFsbHkgcmVhY2ggZm9yIGBnaXQgbG9nYCBvciBhIGBnaXQgZGlmZmAgd2l0aGluIHRoZSB3b3Jrc3BhY2UgdG8gY29uZmlybSB0aGlzLCBidXQgaXQgc2VlbXMgdGhvc2UgdG9vbHMgYXJlbiYjMzk7dCByZWFkaWx5IGF2YWlsYWJsZSBoZXJlLiBObyBwcm9ibGVtLiBMZXQmIzM5O3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFsbCBmaWxlcyBpbiBgbWFuL2Agb3IgYW55IGtlcm5lbCBzb3VyY2UgZmlsZXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQuIEkmIzM5O2xsIHV0aWxpemUgYGdyZXBwZXJgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzaXR1YXRpb24uIFRoaXMgaXMgYWxsIGFib3V0IGdhaW5pbmcgYSBjb21wcmVoZW5zaXZlIHBlcnNwZWN0aXZlIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZpbGVfZ2V0YXR0ciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdD0zNTA9cGFyYW1ldGVycy4gU2VlIEZTX0lPQ19FTkFCTEVfVkVSSVRZLlxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzUyOmZpbGVfZ2V0YXR0clxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUzLS0tLS0tLS0tLS0tLVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3Q6MzU1OlNpbmNlIExpbnV4IHY3LjAsIHRoZSBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIHNldHMgRlNfWEZMQUdfVkVSSVRZICgweDAwMDIwMDAwKVxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU2LWluIHRoZSByZXR1cm5lZCBmbGFncyB3aGVuIHRoZSBmaWxlIGhhcyB2ZXJpdHkgZW5hYmxlZC4gTm90ZSB0aGF0IHRoaXMgYXR0cmlidXRlXG4tLVxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTA5LTU3N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTEwOjU3OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL2FscGhhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTEtNTc5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibC00ODQtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL2FybS90b29scy9zeXNjYWxsLnRibDo0ODU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjktNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL202OGsva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3MDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NzEtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3NS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pY3JvYmxhemUva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3Ny00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcdG4zMlx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcdG4zMlx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVx0bjMyXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg0LTQ2N1x0bjY0XHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODYtNDY5XHRuNjRcdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibC00NTctNDY3XHRvMzJcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL21pcHMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGxfbzMyLnRibDo0NTg6NDY4XHRvMzJcdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1OS00NjlcdG8zMlx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3Bvd2VycGMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6Mzk3OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3MzOTAva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE1LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3NwYXJjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzUtNDY3XHRpMzg2XHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsOjQ3Njo0NjhcdGkzODZcdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRzeXNfZmlsZV9nZXRhdHRyXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuYXJjaC94dGVuc2Eva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ0MC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG5mcy9leHQ0L2V4dDQuaD0zMTg4PWV4dGVybiB2b2lkIGV4dDRfY2xlYXJfaW5vZGUoc3RydWN0IGlub2RlICopO1xuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXG5mcy9leHQ0L2V4dDQuaC0zMTkwLVx0XHRcdCAgICAgIHN0cnVjdCBrc3RhdCAqLCB1MzIsIHVuc2lnbmVkIGludCk7XG4tLVxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2V4dDQvZmlsZS5jLTEwNTktXHQuc2V0YXR0clx0PSBleHQ0X3NldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYzoxMDYwOlx0LmdldGF0dHJcdD0gZXh0NF9maWxlX2dldGF0dHIsXG5mcy9leHQ0L2ZpbGUuYy0xMDYxLVx0Lmxpc3R4YXR0clx0PSBleHQ0X2xpc3R4YXR0cixcbi0tXG5mcy9leHQ0L2lub2RlLmM9NjI2Nj1pbnQgZXh0NF9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCxcbi0tXG5mcy9leHQ0L2lub2RlLmMtNjMzNC1cbmZzL2V4dDQvaW5vZGUuYzo2MzM1OmludCBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IGtzdGF0ICpzdGF0LFxuLS1cbmZzL2ZpbGVfYXR0ci5jPTg2PWludCB2ZnNfZmlsZWF0dHJfZ2V0KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmZzL2ZpbGVfYXR0ci5jLTkzLVxuZnMvZmlsZV9hdHRyLmM6OTQ6XHRlcnJvciA9IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihkZW50cnksIGZhKTtcbmZzL2ZpbGVfYXR0ci5jLTk1LVx0aWYgKGVycm9yKVxuLS1cbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXG4tLVxuZnMvZmlsZV9hdHRyLmMtMzczLVxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcbmZzL2ZpbGVfYXR0ci5jLTM3NS1cdFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxuLS1cbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oPTIyPV9fTlJfcmVhZGxpbmthdCxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg6MjQ6I2lmZGVmIF9fTlJfZmlsZV9nZXRhdHRyXG5pbmNsdWRlL2FzbS1nZW5lcmljL2F1ZGl0X3JlYWQuaDoyNTpfX05SX2ZpbGVfZ2V0YXR0cixcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxuLS1cbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oPTE2MD1MU01fSE9PSyhpbnQsIDAsIGlub2RlX2ZpbGVfc2V0YXR0ciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmgtMTYyLUxTTV9IT09LKGludCwgMCwgaW5vZGVfc2V0X2FjbCwgc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaC00NTMtXHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKTtcbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDo0NTQ6aW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVx0XHRcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XG4tLVxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTEwNjQ9c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbi0tXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA2OS1cbmluY2x1ZGUvbGludXgvc2VjdXJpdHkuaDoxMDcwOnN0YXRpYyBpbmxpbmUgaW50IHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cdFx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaD0zNzg9YXNtbGlua2FnZSBsb25nIHN5c19mcmVtb3ZleGF0dHIoaW50IGZkLCBjb25zdCBjaGFyIF9fdXNlciAqbmFtZSk7XG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg6Mzc5OmFzbWxpbmthZ2UgbG9uZyBzeXNfZmlsZV9nZXRhdHRyKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2VyICpmaWxlbmFtZSxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXHRcdFx0XHQgc3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKmF0dHIsIHNpemVfdCB1c2l6ZSxcbi0tXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbmluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi00LS5cXFwmIzM0O1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6NTouVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwmIzM0O0xpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcJiMzNDtcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTYtLlNIIE5BTUVcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcLSBnZXQgZmlsZXN5c3RlbSBpbm9kZSBhdHRyaWJ1dGVzXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE0LS5QXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTE2LS5CSSBcJiMzNDsgICAgICAgICAgICAgICBpbnQgXCYjMzQ7IGRpcmZkIFwmIzM0OywgY29uc3QgY2hhciAqXCYjMzQ7IHBhdGhuYW1lICxcbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMj1nbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoKSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI4PVRoZVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMzAtc3lzdGVtIGNhbGwgcmV0cmlldmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjQwOi5CUiBmaWxlX2dldGF0dHIgKClcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTQxLWNhbiByZXRyaWV2ZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTgzPWJlZm9yZSBjYWxsaW5nXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo4NDouQlIgZmlsZV9nZXRhdHRyICgpXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjIzPVRoZSBwcm9ncmFtIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMjQ6LkJSIGZpbGVfZ2V0YXR0ciAoKVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjI1LXRvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cbi0tXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzUtXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzY6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzc6I2RlZmluZSBTWVNfZmlsZV9nZXRhdHRyIDQ2N1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjM4LSNlbmRpZlxuLS1cbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yPTI0MT1tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXG4tLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjUwLVxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjUxOiAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTItICAgIGlmIChyZXQgPT0gXFwtMSkge1xubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjUzOiAgICAgICAgcGVycm9yKFwmIzM0O2ZpbGVfZ2V0YXR0clwmIzM0Oyk7XG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yNTQtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Nzg9VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6Nzk6LkIgZmlsZV9nZXRhdHRyKDIpXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi04MC10byBpbml0aWFsaXplXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjU4PWZsYWcgb24gYSBmaWxlLlxuLS1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3MC1cbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3MTojaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI3MjojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yNzMtI2VuZGlmXG4tLVxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9MjgwPW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yOTYtXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTc6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI5OC0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTk6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwMC0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTItXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTM6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcJiMzNDtcJiMzNDssIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxNC0gICAgaWYgKHJldCA9PSBcXC0xKSB7XG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTU6ICAgICAgICBwZXJyb3IoXCYjMzQ7ZmlsZV9nZXRhdHRyXCYjMzQ7KTtcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxNi0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbi0tXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjctLlNIIFNFRSBBTFNPXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMjg6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjktLkJSIGlvY3RsICgyKSxcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTIyPWZvciB1c2Ugd2l0aCB0aGVcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MjM6LkJSIGZpbGVfZ2V0YXR0ciAoMilcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXG4tLVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT00Nj1UaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS00OC1hbmQgaXMgaWdub3JlZCBieVxuLS1cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU6MTUxOi5CUiBmaWxlX2dldGF0dHIgKDIpXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE1Mi1hbmRcbi0tXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTE4ND11cHBlciBsYXllcnMsIHN1Y2ggYXMgTkZTRCwgdG8gcmV0cmlldmUgY2FzZSBzZW5zaXRpdml0eSBpbmZvcm1hdGlvbi5cbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTg1LS5TSCBTRUUgQUxTT1xubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlLTE4Ny0uQlIgZmlsZV9zZXRhdHRyICgyKVxuLS1cbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYz0yMTUzPWludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTU5OiAqIHNlY3VyaXR5X2lub2RlX2ZpbGVfZ2V0YXR0cigpIC0gY2hlY2sgaWYgcmV0cmlldmluZyBmc3hhdHRyIGlzIGFsbG93ZWRcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2MC0gKiBAZGVudHJ5OiBmaWxlIHRvIHJldHJpZXZlIGZpbGVzeXN0ZW0gZXh0ZW5kZWQgYXR0cmlidXRlcyBmcm9tXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYyLSAqXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNjM6ICogQ2FsbGVkIHdoZW4gZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBvciBGU19JT0NfRlNHRVRYQVRUUiBpb2N0bCgpIGlzIGNhbGxlZCBvblxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXG4tLVxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY3LSAqL1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjkte1xuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTcwOlx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE3MS19XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTM1NDktXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy0zNTUxLVx0XHRcdFx0ICAgICAgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxuLS1cbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYz03NTYwPXN0YXRpYyBzdHJ1Y3Qgc2VjdXJpdHlfaG9va19saXN0IHNlbGludXhfaG9va3NbXSBfX3JvX2FmdGVyX2luaXQgPSB7XG4tLVxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXHRMU01fSE9PS19JTklUKGlub2RlX3JlbW92ZXhhdHRyLCBzZWxpbnV4X2lub2RlX3JlbW92ZXhhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYzo3NjIwOlx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcbnNlY3VyaXR5L3NlbGludXgvaG9va3MuYy03NjIxLVx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX3NldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9zZXRhdHRyKSxcbi0tXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXG4tLVxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XG50b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU3Ol9fU1lTQ0FMTChfX05SX2ZpbGVfZ2V0YXR0ciwgc3lzX2ZpbGVfZ2V0YXR0cilcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0Njlcbi0tXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4NC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDg1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvYXJtL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ4Ni00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XHRuNjRcdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFx0bjY0XHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVx0bjY0XHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTYxOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvcG93ZXJwYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01NjItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC0zOTYtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvczM5MC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5OC00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVx0Y29tbW9uXHRmaWxlX3NldGF0dHJcdFx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3NwYXJjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo1MTY6NDY4XHRjb21tb25cdGZpbGVfZ2V0YXR0clx0XHRcdHN5c19maWxlX2dldGF0dHJcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTctNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9wZXJmL2FyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcdGkzODZcdG9wZW5fdHJlZV9hdHRyXHRcdHN5c19vcGVuX3RyZWVfYXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XHRpMzg2XHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XHRpMzg2XHRmaWxlX3NldGF0dHJcdFx0c3lzX2ZpbGVfc2V0YXR0clxuLS1cbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1x0Y29tbW9uXHRvcGVuX3RyZWVfYXR0clx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50Ymw6Mzk1OjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibC0zOTYtNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRzeXNfZmlsZV9zZXRhdHRyXG4tLVxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XHRjb21tb25cdG9wZW5fdHJlZV9hdHRyXHRcdFx0c3lzX29wZW5fdHJlZV9hdHRyXG50b29scy9wZXJmL2FyY2gveHRlbnNhL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ0MTo0NjhcdGNvbW1vblx0ZmlsZV9nZXRhdHRyXHRcdFx0c3lzX2ZpbGVfZ2V0YXR0clxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NDItNDY5XHRjb21tb25cdGZpbGVfc2V0YXR0clx0XHRcdHN5c19maWxlX3NldGF0dHJcbi0tXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMC00NjdcdGNvbW1vblx0b3Blbl90cmVlX2F0dHJcdFx0XHRzeXNfb3Blbl90cmVlX2F0dHJcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50Ymw6NDExOjQ2OFx0Y29tbW9uXHRmaWxlX2dldGF0dHJcdFx0XHRzeXNfZmlsZV9nZXRhdHRyXG50b29scy9zY3JpcHRzL3N5c2NhbGwudGJsLTQxMi00NjlcdGNvbW1vblx0ZmlsZV9zZXRhdHRyXHRcdFx0c3lzX2ZpbGVfc2V0YXR0clxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDEyOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDQ1CgkJCQkJCQlvdXRwdXQ6IDEwNAoJCQkJCQkJdGhvdWdodHM6IDc5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdpdCBEaWZmIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCB0aGlzIGBIRUFEYCBjb21taXQmIzM5O3MgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY2hhbmdlZCBpbiBjb21taXQgYGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJgLiBUaGUgZGlmZiBzaG93cyBhZGRpdGlvbnMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gUmlnaHQsIHRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgcmluZ2luZyBiZWxscyDigJMgdGhlc2UgYXJlIG1hbiBwYWdlcywgZG9jdW1lbnRhdGlvbi4KCk5vdywgSSBoYXZlIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGRvZXNuJiMzOTt0IHdhcnJhbnQgZnV6emluZyBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIEkgcmVjYWxsIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBJiMzNDsg4oCTIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGZ1enppbmcgKnNob3VsZG4mIzM5O3QqIGJlIGVuYWJsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGZvciBub24ta2VybmVsIGNoYW5nZXMsIGxpa2UgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBhbmQgdGhpcyBwcm92aWRlZCBkaWZmLCB0aGVzZSBjaGFuZ2VzIGZhbGwgc3F1YXJlbHkgaW50byB0aGUgZG9jdW1lbnRhdGlvbiBjYXRlZ29yeS4gVGhlIGRpZmYgb25seSB0b3VjaGVzIG1hbiBwYWdlcyAoZG9jdW1lbnRhdGlvbikgYW5kIHVzZXItc3BhY2UgZmlsZXMuIFRoZXJlJiMzOTtzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgY29kZSwgbm8gY2hhbmdlcyB0byBhbnkgQyBmaWxlcywgaGVhZGVyIGZpbGVzLCBvciBhbnkgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHZtbGludXguIFRoYXQmIzM5O3MgYSBrZXkgcG9pbnQuCgpUaGVyZWZvcmUsIGBXb3J0aEZ1enppbmdgIHNob3VsZCBiZSBgZmFsc2VgLiBUaGlzIGlzIHB1cmVseSBkb2N1bWVudGF0aW9uOyBpdCBkb2VzbiYjMzk7dCBpbXBhY3QgYW55IGV4ZWN1dGFibGUgY29kZSBvciBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBpbiB0aGUga2VybmVsIGl0c2VsZi4gQ29uc2VxdWVudGx5LCBib3RoIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGVtcHR5IGFycmF5cyDigJMgdGhlcmUmIzM5O3Mgbm90aGluZyB0byBmb2N1cyBvbiBvciBlbmFibGUgaGVyZSBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4KCkkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTttIGdvaW5nIHRvIHNldCB0aGUgcmVzdWx0cyBhczoKCi0gYEVuYWJsZUNvbmZpZ3NgOiBgW11gCi0gYEZvY3VzU3ltYm9sc2A6IGBbXWAKLSBgUmVhc29uaW5nYDogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gLyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgY29kZS4mIzM0OwotIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCgpMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxMjo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTI6NTY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAwLjkyOTcxNjE5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDU3OTgxOTMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIG1hbiBwYWdlcyAobWFuL21hbjIvZmlsZV9nZXRhdHRyLjIsIG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLCBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlKSBmb3IgdGhlIGZpbGVfZ2V0YXR0ciBhbmQgZmlsZV9zZXRhdHRyIHN5c2NhbGxzIGFuZCBzdHJ1Y3QgZmlsZV9hdHRyLiBJdCBkb2VzIG5vdCBtb2RpZnkgYW55IGtlcm5lbCBzb3VyY2UgY29kZSBvciBleGVjdXRhYmxlIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDAuOTI5NzIwNzk3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODMwOTA2MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkYTI5YzYyYWViY2M3NjM2NzE1ZmM4ZDlkMzAwNjZlMmM3NGM5ODAyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjJkOWE2ZDMzOGE1ZTlcXG4tLS0gL2Rldi9udWxsXFxuKysrIGIvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJcXG5AQCAtMCwwICsxLDI3OSBAQFxcbisuXFxcXFxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcXG4rLlxcXFxcXFwiXFxuKy5cXFxcXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XFxuKy5cXFxcXFxcIlxcbisuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFxcXCJMaW51eCBtYW4tcGFnZXMgKHVucmVsZWFzZWQpXFxcIlxcbisuU0ggTkFNRVxcbitmaWxlX2dldGF0dHIgXFxcXC0gZ2V0IGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbisuU0ggU1lOT1BTSVNcXG4rLm5mXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2ZjbnRsLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgLyogXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIHN0cnVjdCBcXFwiIGZpbGVfYXR0ciBcXFwiIGFuZCBcXFwiIEZTX1hGTEFHXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CUiBcXFwiI2luY2x1ZGUgXFx1MDAzY3N5cy9zeXNjYWxsLmhcXHUwMDNlXFxcIiBcXFwiICAgICAgLyogXFxcIiBTWVNfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkIgI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbisuUFxcbisuQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICBpbnQgXFxcIiBkaXJmZCBcXFwiLCBjb25zdCBjaGFyICpcXFwiIHBhdGhuYW1lICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICBzdHJ1Y3QgZmlsZV9hdHRyICpcXFwiIGZhdHRyIFxcXCIsIHNpemVfdCBcXFwiIHNpemUgLFxcbisuQkkgXFxcIiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBcXFwiIGZsYWdzICk7XFxuKy5maVxcbisuUFxcbisuSVIgTm90ZSA6XFxuK2dsaWJjIHByb3ZpZGVzIG5vIHdyYXBwZXIgZm9yXFxuKy5CUiBmaWxlX2dldGF0dHIgKCksXFxuK3VzZVxcbisuQlIgc3lzY2FsbCAoMilcXG4raW5zdGVhZC5cXG4rLlNIIERFU0NSSVBUSU9OXFxuK1RoZVxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbitmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieVxcbisuSVIgcGF0aG5hbWUgLlxcbisuUFxcbitUaGlzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGVcXG4rLkIgRlNfSU9DX0ZTR0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbitvcGVyYXRpb24sXFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cXG4rQnkgdXNpbmcgYSBwYXRobmFtZSxcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxcbitjYW4gcmV0cmlldmUgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcXG4rZnJvbSBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgc3VjaCBhcyBGSUZPcywgc29ja2V0cywgYmxvY2sgZGV2aWNlcywgY2hhcmFjdGVyXFxuK2RldmljZXMsIGFuZCBzeW1saW5rcywgd2hlcmUgb3BlbmluZyB0aGUgdGFyZ2V0ZWQgaW5vZGUgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JUiBkaXJmZCAuXFxuK1RoZSBzcGVjaWFsIHZhbHVlXFxuKy5CIEFUX0ZEQ1dEXFxuK2NvdWxkIGJlIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUuXFxuK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxcbitUaGlzIHN0cnVjdHVyZSBpcyBkZXNjcmliZWQgaW5cXG4rLkJSIGZpbGVfYXR0cigydHlwZSkgLlxcbisuUFxcbitUaGVcXG4rLkkgc2l6ZVxcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XFxuKy5JUiBmYXR0ciAuXFxuK1RoZSBzaXplIGluZGljYXRlcyB2ZXJzaW9uIG9mIHRoZSBzdHJ1Y3R1cmUgaW4gdXNlLCByZWZlciB0b1xcbisuQiBmaWxlX2F0dHIoMnR5cGUpXFxuK2ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHZlcnNpb25pbmcuXFxuKy5QXFxuK1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK2JlZm9yZSBjYWxsaW5nXFxuKy5CUiBmaWxlX2dldGF0dHIgKClcXG4rdG8gZW5zdXJlIHRoYXQgZmllbGRzIG5vdCBmaWxsZWQgaW4gYnkgb2xkZXIga2VybmVsc1xcbit3aWxsIGhhdmUgcHJlZGljdGFibGUgdmFsdWVzLlxcbisuUFxcbitUaGVcXG4rLkkgZmxhZ3NcXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcXG4rLlRQXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XFxuKy5JUiBkaXJmZCAuXFxuK0luIHRoaXMgY2FzZSxcXG4rLkkgZGlyZmRcXG4rY2FuIHJlZmVyIHRvIGFueSB0eXBlIG9mIGZpbGUsXFxuK25vdCBqdXN0IGEgZGlyZWN0b3J5LlxcbisuVFBcXG4rLkIgQVRfU1lNTElOS19OT0ZPTExPV1xcbitJZlxcbisuSSBwYXRobmFtZVxcbitpcyBhIHN5bWJvbGljIGxpbmssXFxuK2RvIG5vdCBkZXJlZmVyZW5jZSBpdDtcXG4raW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXFxuK0J5IGRlZmF1bHQsIHN5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXFxuKy5TSCBSRVRVUk4gVkFMVUVcXG4rT24gc3VjY2VzcyxcXG4remVybyBpcyByZXR1cm5lZC5cXG4rT24gZXJyb3IsXFxuK1xcXFwtMSBpcyByZXR1cm5lZCxcXG4rYW5kXFxuKy5JIGVycm5vXFxuK2lzIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuXFxuKy5TSCBFUlJPUlNcXG4rLlRQXFxuKy5CIEUyQklHXFxuKy5JIHNpemVcXG4raXMgdG9vIGJpZyAobGFyZ2VyIHRoYW5cXG4rLkJSIFBBR0VfU0laRSApLlxcbisuVFBcXG4rLkIgRUFDQ0VTXFxuK1NlYXJjaCBwZXJtaXNzaW9uIGlzIGRlbmllZCBmb3Igb25lIG9mIHRoZSBkaXJlY3Rvcmllc1xcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcXG4rLklSIHBhdGhuYW1lIC5cXG4rLlRQXFxuKy5CIEVCQURGXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHJlbGF0aXZlIGJ1dFxcbisuSSBkaXJmZFxcbitpcyBuZWl0aGVyXFxuKy5CIEFUX0ZEQ1dEXFxuK25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cXG4rLlRQXFxuKy5CIEVCQURGXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rLkIgQVRfRU1QVFlfUEFUSFxcbit3YXMgc3BlY2lmaWVkLFxcbitidXRcXG4rLkkgZGlyZmRcXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXFxuKy5UUFxcbisuQiBFRkFVTFRcXG4rLkkgcGF0aG5hbWVcXG4rb3JcXG4rLkkgZmF0dHJcXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbisuSSBzaXplXFxuK2lzIHNtYWxsZXIgdGhhblxcbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXFxuKy5UUFxcbisuQiBFTE9PUFxcbitUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcXG4rLklSIHBhdGhuYW1lIC5cXG4rLlRQXFxuKy5CIEVOQU1FVE9PTE9OR1xcbisuSSBwYXRobmFtZVxcbitpcyB0b28gbG9uZy5cXG4rLlRQXFxuKy5CIEVOT0VOVFxcbitBIGNvbXBvbmVudCBvZlxcbisuSSBwYXRobmFtZVxcbitkb2VzIG5vdCBleGlzdCxcXG4rb3JcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK3dhcyBub3Qgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFTk9NRU1cXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cXG4rLlRQXFxuKy5CIEVOT1RESVJcXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXFxuKy5JIHBhdGhuYW1lXFxuK2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUgYW5kXFxuKy5JIGRpcmZkXFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cXG4rLlRQXFxuKy5CIEVPUE5PVFNVUFBcXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBnZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxcbisuU0ggSElTVE9SWVxcbisuU1MgTGludXggNi4xN1xcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGludHJvZHVjZWQgYXMgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlIHRvIHRoZVxcbitGU19JT0NfRlNHRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK3doaWNoIGNvdWxkIHdvcmsgb24gYW55IHR5cGUgb2YgZmlsZS5cXG4rLlNIIE5PVEVTXFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcXG4rd2hpY2ggdmVyc2lvbiBvZiB0aGVcXG4rLkkgZmlsZV9hdHRyXFxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcXG4rZW5hYmxpbmcgdGhlIGtlcm5lbCB0byBzdXBwb3J0IGJvdGggb2xkIGFuZCBuZXcgdmVyc2lvbnNcXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cXG4rLlBcXG4rSWZcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcXG4rb25seSB0aGUgZmllbGRzIHRoYXQgZml0IHdpdGhpblxcbisuSSBzaXplXFxuK3dpbGwgYmUgZmlsbGVkIGluLlxcbitJZlxcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUgc2l6ZSxcXG4rdGhlIGV4dHJhIGJ5dGVzIGFyZSB6ZXJvZWQuXFxuKy5TSCBFWEFNUExFU1xcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxcbisuQlIgZmlsZV9nZXRhdHRyICgpXFxuK3RvIHJldHJpZXZlIGFuZCBkaXNwbGF5IGZpbGUgYXR0cmlidXRlcy5cXG4rLlBcXG4rLmluICs0blxcbisuRVhcXG4rI2luY2x1ZGUgXFx1MDAzY2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3RkaW8uaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGxpYi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbitcXG4rI2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG4rI2VuZGlmXFxuK1xcbitpbnRcXG4rbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbit7XFxuKyAgICBzdHJ1Y3QgZmlsZV9hdHRyIGZhID0geyAwIH07XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIEFUX0ZEQ1dELCBhcmd2WzFdLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xcbisgICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG4rICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBwcmludGYoXFxcIkZpbGUgYXR0cmlidXRlczpcXFxcXFxcXG5cXFwiKTtcXG4rICAgIHByaW50ZihcXFwiICB4ZmxhZ3M6ICAgICAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuKyAgICBwcmludGYoXFxcIiAgZXh0c2l6ZTogICAgJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9leHRzaXplKTtcXG4rICAgIHByaW50ZihcXFwiICBuZXh0ZW50czogICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX25leHRlbnRzKTtcXG4rICAgIHByaW50ZihcXFwiICBwcm9qaWQ6ICAgICAldVxcXFxcXFxcblxcXCIsIGZhLmZhX3Byb2ppZCk7XFxuKyAgICBwcmludGYoXFxcIiAgY293ZXh0c2l6ZTogJXVcXFxcXFxcXG5cXFwiLCBmYS5mYV9jb3dleHRzaXplKTtcXG4rXFxuKyAgICAvKlxcbisgICAgICogVHJ5IHNldHRpbmcgTk9EVU1QIGZsYWcgd2l0aCBjaGF0dHIgK2QgLi9mb28gdG8gc2VlIHRoZSBkaWZmZXJlbmNlXFxuKyAgICAgKi9cXG4rICAgIGlmIChmYS5mYV94ZmxhZ3MgXFx1MDAyNiBGU19YRkxBR19OT0RVTVApXFxuKyAgICAgICAgcHJpbnRmKFxcXCIgIE5PRFVNUCBmbGFnIGlzIHNldFxcXFxcXFxcblxcXCIpO1xcbitcXG4rICAgIGV4aXQoRVhJVF9TVUNDRVNTKTtcXG4rfVxcbisuRUVcXG4rLmluXFxuKy5TSCBTRUUgQUxTT1xcbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxcbisuQlIgaW9jdGwgKDIpLFxcbisuQlIgaW9jdGxfZnMgKDIpLFxcbisuQlIgb3BlbmF0ICgyKVxcbmRpZmYgLS1naXQgYS9tYW4vbWFuMi9maWxlX3NldGF0dHIuMiBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5jMzQwYmRjYWIwNjU0XFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXFxuQEAgLTAsMCArMSwzMzMgQEBcXG4rLlxcXFxcXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XFxuKy5cXFxcXFxcIlxcbisuXFxcXFxcXCIgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExpbnV4LW1hbi1wYWdlcy1jb3B5bGVmdFxcbisuXFxcXFxcXCJcXG4rLlRIIGZpbGVfc2V0YXR0ciAyIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9zZXRhdHRyIFxcXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rLlNIIFNZTk9QU0lTXFxuKy5uZlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcXCIgXFxcIiAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBBVF8qIFxcXCIgY29uc3RhbnRzICovXFxcIlxcbisuQlIgXFxcIiNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcXCIgXFxcIiAgICAgICAgIC8qIERlZmluaXRpb24gb2YgXFxcIiBGSUxFX0FUVFJfKiBcXFxcXFxuK1xcXCIgYW5kIFxcXCIgRlNfWEZMQUdfKiBcXFwiIGNvbnN0YW50cyAqL1xcXCJcXG4rLkJSIFxcXCIjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXFwiIFxcXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFxcXCIgU1lTXyogXFxcIiBjb25zdGFudHMgKi9cXFwiXFxuKy5CICNpbmNsdWRlIFxcdTAwM2N1bmlzdGQuaFxcdTAwM2VcXG4rLlBcXG4rLkIgbG9uZyBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgaW50IFxcXCIgZGlyZmQgXFxcIiwgY29uc3QgY2hhciAqXFxcIiBwYXRobmFtZSAsXFxuKy5CSSBcXFwiICAgICAgICAgICAgICAgc3RydWN0IGZpbGVfYXR0ciAqXFxcIiBmYXR0ciBcXFwiLCBzaXplX3QgXFxcIiBzaXplICxcXG4rLkJJIFxcXCIgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgXFxcIiBmbGFncyApO1xcbisuZmlcXG4rLlBcXG4rLklSIE5vdGUgOlxcbitnbGliYyBwcm92aWRlcyBubyB3cmFwcGVyIGZvclxcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxcbituZWNlc3NpdGF0aW5nIHRoZSB1c2Ugb2ZcXG4rLkJSIHN5c2NhbGwgKDIpLlxcbisuU0ggREVTQ1JJUFRJT05cXG4rVGhlXFxuKy5CUiBmaWxlX3NldGF0dHIgKClcXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG4rb24gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XFxuKy5JUiBwYXRobmFtZSAuXFxuKy5QXFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxcbisuQiBGU19JT0NfRlNTRVRYQVRUUlxcbisuQlIgaW9jdGwgKDIpXFxuK29wZXJhdGlvbixcXG4rYnV0IHdpdGggdGhlIGFkdmFudGFnZSB0aGF0IHRoZSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gYmUgb3BlbmVkLlxcbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxcbisuQlIgZmlsZV9zZXRhdHRyICgpXFxuK2NhbiBtYW5pcHVsYXRlIGZpbGVzeXN0ZW0gaW5vZGUgYXR0cmlidXRlc1xcbitvbiBhbGwgZmlsZSB0eXBlcyxcXG4raW5jbHVkaW5nIHNwZWNpYWwgZmlsZXMgKEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXIgZGV2aWNlcylcXG4rd2hlcmUgb3BlbmluZyB0aGUgZmlsZSBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMgb3IgbWF5IG5vdCBiZSBwb3NzaWJsZS5cXG4rV2l0aFxcbisuQlIgaW9jdGwgKDIpLFxcbitpdCBpcyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIG9idGFpbiBhIGZpbGUgZGVzY3JpcHRvciB0aGF0IHJlZmVyc1xcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cXG4rLlBcXG4rQXMgd2l0aFxcbisuQlIgb3BlbmF0ICgyKSxcXG4raWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUsXFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxcbityZWZlcnJlZCB0byBieSB0aGUgZmlsZSBkZXNjcmlwdG9yXFxuKy5JIGRpcmZkXFxuKyhvciB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLFxcbitpZlxcbisuSSBkaXJmZFxcbitpcyB0aGUgc3BlY2lhbCB2YWx1ZVxcbisuQlIgQVRfRkRDV0QgKS5cXG4rSWZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYWJzb2x1dGUsXFxuK3RoZW5cXG4rLkkgZGlyZmRcXG4raXMgaWdub3JlZC5cXG4rLlBcXG4rVGhlXFxuKy5JIGZhdHRyXFxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUsXFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXFxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxcbisuQlIgZmlsZV9hdHRyICgydHlwZSkuXFxuK1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB1c2VcXG4rLkIgZmlsZV9nZXRhdHRyKDIpXFxuK3RvIGluaXRpYWxpemVcXG4rLkkgc3RydWN0IGZhdHRyXFxuK2JlZm9yZWhhbmQuXFxuKy5QXFxuK1RoZVxcbisuSSBzaXplXFxuK2FyZ3VtZW50IHNwZWNpZmllcyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnlcXG4rLklSIGZhdHRyIC5cXG4rVGhlIHNpemUgaW5kaWNhdGVzIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBpbiB1c2UsIHJlZmVyIHRvXFxuKy5CIGZpbGVfYXR0cigydHlwZSlcXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cXG4rLlBcXG4rVGhlXFxuKy5JIGZsYWdzXFxuK2FyZ3VtZW50IGlzIGEgYml0IG1hc2sgdGhhdCBjYW4gaW5jbHVkZSB6ZXJvIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6XFxuKy5UUFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGFuIGVtcHR5IHN0cmluZyxcXG4rb3BlcmF0ZSBvbiB0aGUgZmlsZSByZWZlcnJlZCB0byBieVxcbisuSSBkaXJmZFxcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcXG4rLkJSIG9wZW4gKDIpXFxuKy5CIE9fUEFUSFxcbitmbGFnKS5cXG4rSW4gdGhpcyBjYXNlLFxcbisuSSBkaXJmZFxcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcXG4rbm90IGp1c3QgYSBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXFxuK0lmXFxuKy5JIHBhdGhuYW1lXFxuK2lzIGEgc3ltYm9saWMgbGluayxcXG4rZG8gbm90IGRlcmVmZXJlbmNlIGl0OlxcbitpbnN0ZWFkIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZi5cXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxcbitzeW1ib2xpYyBsaW5rcyBhcmUgZGVyZWZlcmVuY2VkLlxcbisuU0ggUkVUVVJOIFZBTFVFXFxuK09uIHN1Y2Nlc3MsXFxuK3plcm8gaXMgcmV0dXJuZWQuXFxuK09uIGVycm9yLFxcbitcXFxcLTEgaXMgcmV0dXJuZWQsXFxuK2FuZFxcbisuSSBlcnJub1xcbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxcbisuU0ggRVJST1JTXFxuKy5UUFxcbisuQiBFMkJJR1xcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuXFxuKy5CUiBQQUdFX1NJWkUgLlxcbisuVFBcXG4rLkIgRTJCSUdcXG4rLkkgc2l6ZVxcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXFxuK2tlcm5lbCBleHBlY3RzKSBhbmQgbmV3IGZpZWxkcyBhcmUgbm9uLXplcm8uXFxuKy5UUFxcbisuQiBFQUNDRVNcXG4rU2VhcmNoIHBlcm1pc3Npb24gaXMgZGVuaWVkIGZvciBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzXFxuK2luIHRoZSBwYXRoIHByZWZpeCBvZlxcbisuSVIgcGF0aG5hbWUgLlxcbisoU2VlIGFsc29cXG4rLkJSIHBhdGhfcmVzb2x1dGlvbiAoNykuKVxcbisuVFBcXG4rLkIgRUJBREZcXG4rLkkgcGF0aG5hbWVcXG4raXMgcmVsYXRpdmUgYnV0XFxuKy5JIGRpcmZkXFxuK2lzIG5laXRoZXJcXG4rLkIgQVRfRkRDV0RcXG4rbm9yIGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUJBREZcXG4rLkkgcGF0aG5hbWVcXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxcbisuQiBBVF9FTVBUWV9QQVRIXFxuK3dhcyBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzICxcXG4rYW5kXFxuKy5JIGRpcmZkXFxuK2lzIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yLlxcbisuVFBcXG4rLkIgRUZBVUxUXFxuKy5JIHBhdGhuYW1lXFxuK29yXFxuKy5JIGZhdHRyXFxuK2lzIGFuIGludmFsaWQgcG9pbnRlci5cXG4rLlRQXFxuKy5CIEVJTlZBTFxcbitJbnZhbGlkIGZsYWcgc3BlY2lmaWVkIGluXFxuKy5JUiBmbGFncyAuXFxuKy5UUFxcbisuQiBFSU5WQUxcXG4rLkkgc2l6ZVxcbitpcyBzbWFsbGVyIHRoYW5cXG4rLkJSIEZJTEVfQVRUUl9TSVpFX1ZFUjAgLlxcbisuVFBcXG4rLkIgRUlOVkFMXFxuK0ludmFsaWQgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBwcm92aWRlZCBpblxcbisuSSBmYXR0clxcbitmb3IgdGhpcyB0eXBlIG9mIGZpbGUgb3IgZmlsZXN5c3RlbS5cXG4rLlRQXFxuKy5CIEVMT09QXFxuK1RvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIHdoaWxlIHJlc29sdmluZ1xcbisuSVIgcGF0aG5hbWUgLlxcbisuVFBcXG4rLkIgRU5BTUVUT09MT05HXFxuKy5JIHBhdGhuYW1lXFxuK2lzIHRvbyBsb25nLlxcbisuVFBcXG4rLkIgRU5PRU5UXFxuK0EgY29tcG9uZW50IG9mXFxuKy5JIHBhdGhuYW1lXFxuK2RvZXMgbm90IGV4aXN0LFxcbitvclxcbisuSSBwYXRobmFtZVxcbitpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXFxuKy5CIEFUX0VNUFRZX1BBVEhcXG4rd2FzIG5vdCBzcGVjaWZpZWQgaW5cXG4rLklSIGZsYWdzIC5cXG4rLlRQXFxuKy5CIEVOT01FTVxcbitJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxcbisuVFBcXG4rLkIgRU5PVERJUlxcbitBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcXG4rLkkgcGF0aG5hbWVcXG4raXMgbm90IGEgZGlyZWN0b3J5IG9yLFxcbisuSSBwYXRobmFtZVxcbitpcyByZWxhdGl2ZSBhbmRcXG4rLkkgZGlyZmRcXG4raXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxcbisuVFBcXG4rLkIgRU9QTk9UU1VQUFxcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXFxuKy5UUFxcbisuQiBFUEVSTVxcbitUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBwZXJtaXNzaW9uc1xcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cXG4rLlRQXFxuKy5CIEVST0ZTXFxuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXFxuKy5TSCBISVNUT1JZXFxuKy5TUyBMaW51eCA2LjE3XFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXFxuK0ZTX0lPQ19GU1NFVFhBVFRSXFxuKy5CUiBpb2N0bCAoMilcXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cXG4rLlNIIE5PVEVTXFxuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cXG4rVGhlXFxuKy5JIHNpemVcXG4rYXJndW1lbnQgYWxsb3dzIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRvIGluZGljYXRlXFxuK3doaWNoIHZlcnNpb24gb2YgdGhlXFxuKy5JIGZpbGVfYXR0clxcbitzdHJ1Y3R1cmUgdGhleSBhcmUgdXNpbmcsXFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXFxuK29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXFxuKy5QXFxuK0lmXFxuKy5JIHNpemVcXG4raXMgc21hbGxlciB0aGFuIHRoZSBzdHJ1Y3R1cmUgc2l6ZSB0aGUga2VybmVsIGV4cGVjdHMsXFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcXG4rKHdoaWNoIGlzIGEgbm8tb3ApLlxcbitJZlxcbisuSSBzaXplXFxuK2lzIGxhcmdlciB0aGFuIGV4cGVjdGVkLFxcbit0aGUga2VybmVsIGNoZWNrcyB0aGF0IGFsbCB1bmtub3duICh0byB0aGUga2VybmVsKSBmaWVsZHMgYXJlIHplcm87XFxuK2lmIG5vdCxcXG4rdGhlIGNhbGwgZmFpbHMgd2l0aFxcbisuQlIgRTJCSUcgLlxcbisuU0ggRVhBTVBMRVNcXG4rVGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcXG4rLkJSIGZpbGVfc2V0YXR0ciAoKVxcbit0byBzZXQgdGhlXFxuKy5CIEZTX1hGTEFHX05PRFVNUFxcbitmbGFnIG9uIGEgZmlsZS5cXG4rLlBcXG4rLmluICs0blxcbisuRVhcXG4rI2luY2x1ZGUgXFx1MDAzY2ZjbnRsLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9mY250bC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0ZGlvLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NzdGRsaWIuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3N0cmluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjc3lzL3N5c2NhbGwuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY3VuaXN0ZC5oXFx1MDAzZVxcbitcXG4rI2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxuKyNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG4rI2VuZGlmXFxuK1xcbisjaWZuZGVmIFNZU19maWxlX3NldGF0dHJcXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxcbisjZW5kaWZcXG4rXFxuK2ludFxcbittYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pXFxuK3tcXG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcXG4rICAgIGludCBkZmQ7XFxuKyAgICBsb25nIHJldDtcXG4rXFxuKyAgICBpZiAoYXJnYyAhPSAyKSB7XFxuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFxcXCJVc2FnZTogJXMgXFx1MDAzY2ZpbGVuYW1lXFx1MDAzZVxcXFxcXFxcblxcXCIsIGFyZ3ZbMF0pO1xcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4rICAgIH1cXG4rXFxuKyAgICBkZmQgPSBvcGVuKGFyZ3ZbMV0sIE9fUkRPTkxZKTtcXG4rICAgIGlmIChkZmQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJvcGVuXFxcIik7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgcHJpbnRmKFxcXCJDdXJyZW50IGZsYWdzOiAweCVsbHhcXFxcXFxcXG5cXFwiLCAodW5zaWduZWQgbG9uZyBsb25nKWZhLmZhX3hmbGFncyk7XFxuK1xcbisgICAgZmEuZmFfeGZsYWdzIHw9IEZTX1hGTEFHX05PRFVNUDtcXG4rXFxuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXFxcIlxcXCIsIFxcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgQVRfRU1QVFlfUEFUSCk7XFxuKyAgICBpZiAocmV0ID09IFxcXFwtMSkge1xcbisgICAgICAgIHBlcnJvcihcXFwiZmlsZV9zZXRhdHRyXFxcIik7XFxuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbisgICAgfVxcbitcXG4rICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG4rICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxuKyAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuKyAgICB9XFxuK1xcbisgICAgaWYgKGZhLmZhX3hmbGFncyBcXHUwMDI2IEZTX1hGTEFHX05PRFVNUClcXG4rICAgICAgICBwcmludGYoXFxcImZsYWdzIDB4JWxseCAoTk9EVU1QIGZsYWcgaXMgc2V0KVxcXFxcXFxcblxcXCIsXFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcXG4rXFxuKyAgICBleGl0KEVYSVRfU1VDQ0VTUyk7XFxuK31cXG4rLkVFXFxuKy5pblxcbisuU0ggU0VFIEFMU09cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxuKy5CUiBpb2N0bCAoMiksXFxuKy5CUiBpb2N0bF9mcyAoMiksXFxuKy5CUiBvcGVuYXQgKDIpLFxcbisuQlIgZmlsZV9hdHRyICgydHlwZSksXFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXFxuZGlmZiAtLWdpdCBhL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXFxubmV3IGZpbGUgbW9kZSAxMDA2NDRcXG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXFxuLS0tIC9kZXYvbnVsbFxcbisrKyBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcXG5AQCAtMCwwICsxLDE4NyBAQFxcbisuXFxcXFxcXCIgQ29weXJpZ2h0LCB0aGUgYXV0aG9ycyBvZiB0aGUgTGludXggbWFuLXBhZ2VzIHByb2plY3RcXG4rLlxcXFxcXFwiXFxuKy5cXFxcXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XFxuKy5cXFxcXFxcIlxcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcXFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVxcXCJcXG4rLlNIIE5BTUVcXG4rZmlsZV9hdHRyIFxcXFwtIGRlc2NyaWJlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzIHRvIGdldCBvciBzZXRcXG4rLlNIIFNZTk9QU0lTXFxuKy5FWFxcbisuQiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZnMuaFxcdTAwM2VcXG4rLlBcXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XFxuKy5CUiBcXFwiICAgIHU2NCAgZmFfeGZsYWdzO1xcXCIgXFxcIiAgICAgLyogRXh0ZW5kZWQgZmxhZ3MgKi9cXFwiXFxuKy5CUiBcXFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcXFwiIFxcXCIgICAgLyogRXh0ZW50IHNpemUgaGludCAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9uZXh0ZW50cztcXFwiIFxcXCIgICAvKiBOdW1iZXIgb2YgZXh0ZW50cyAocmVhZC1vbmx5KSAqL1xcXCJcXG4rLkJSIFxcXCIgICAgdTMyICBmYV9wcm9qaWQ7XFxcIiBcXFwiICAgICAvKiBQcm9qZWN0IGlkZW50aWZpZXIgKi9cXFwiXFxuKy5CUiBcXFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcXFwiIFxcXCIgLyogQ29XIGV4dGVudCBzaXplIGhpbnQgKi9cXFwiXFxuKy5CIH07XFxuKy5FRVxcbisuU0ggREVTQ1JJUFRJT05cXG4rRGVzY3JpYmVzIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuK2ZvciB1c2Ugd2l0aCB0aGVcXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcXG4rYW5kXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuK3N5c3RlbSBjYWxscy5cXG4rLlBcXG4rVGhlIGZpZWxkcyBhcmUgYXMgZm9sbG93czpcXG4rLlRQXFxuKy5JIGZhX3hmbGFnc1xcbitUaGlzIGZpZWxkIGNvbnRhaW5zIGZpbGUgYXR0cmlidXRlIGZsYWdzLlxcbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxcbisuQiBGU19YRkxBR18qXFxuK2ZsYWdzLlxcbitSZWZlciB0byB0aGUgc2VjdGlvblxcbisuQiBGTEFHU1xcbitiZWxvdyBmb3IgYSBsaXN0IG9mIGFsbCBmbGFncy5cXG4rLlRQXFxuKy5JIGZhX2V4dHNpemVcXG4rRXh0ZW50IHNpemUgYWxsb2NhdG9yIGhpbnQgaW4gYnl0ZXMuXFxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcXG4rZm9yIG5ldyBhbGxvY2F0aW9ucyB0byB0aGlzIGZpbGUuXFxuKy5UUFxcbisuSSBmYV9uZXh0ZW50c1xcbitOdW1iZXIgb2YgZGF0YSBleHRlbnRzIGluIHRoZSBmaWxlIChyZWFkLW9ubHkpLlxcbitUaGlzIGZpZWxkIGlzIGZpbGxlZCBpbiBieVxcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxcbithbmQgaXMgaWdub3JlZCBieVxcbisuQlIgZmlsZV9zZXRhdHRyICgyKS5cXG4rLlRQXFxuKy5JIGZhX3Byb2ppZFxcbitQcm9qZWN0IGlkZW50aWZpZXIuXFxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxcbisuVFBcXG4rLkkgZmFfY293ZXh0c2l6ZVxcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXFxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcXG4rZm9yIENvVyBvcGVyYXRpb25zLlxcbisuU0ggRkxBR1NcXG4rRmxhZ3MgY2FuIGJlOlxcbisuUlNcXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1JFQUxUSU1FXFxuK0RhdGEgaXMgc3RvcmVkIGluIGEgcmVhbHRpbWUgdm9sdW1lLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfSU1NVVRBQkxFXFxuK0ZpbGUgY2Fubm90IGJlIG1vZGlmaWVkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQVBQRU5EXFxuK0FsbCB3cml0ZXMgbXVzdCBhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1NZTkNcXG4rQWxsIHdyaXRlcyBhcmUgc3luY2hyb25vdXMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19OT0FUSU1FXFxuK0RvIG5vdCB1cGRhdGUgZmlsZSBhY2Nlc3MgdGltZSBvbiByZWFkcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PRFVNUFxcbitEbyBub3QgaW5jbHVkZSBmaWxlIGluIGJhY2t1cHMuXFxuKy5UUFxcbisuQiBGU19YRkxBR19EQVhcXG4rVXNlIERpcmVjdCBBY2Nlc3MgKERBWCkgZm9yIEkvTyBvcGVyYXRpb25zLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfTk9ERUZSQUdcXG4rRXhjbHVkZSB0aGlzIGZpbGUgZnJvbSBkZWZyYWdtZW50YXRpb24gb3BlcmF0aW9ucy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0ZJTEVTVFJFQU1cXG4rVXNlIGZpbGVzdHJlYW0gYWxsb2NhdG9yIGZvciB0aGlzIGZpbGUuXFxuKy5UUFxcbisuQiBGU19YRkxBR19FWFRTSVpFXFxuK1VzZSB0aGUgZXh0ZW50IHNpemUgaGludCBmcm9tIHRoZVxcbisuSSBmYV9leHRzaXplXFxuK2ZpZWxkLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxcbitVc2UgdGhlIENvVyBleHRlbnQgc2l6ZSBoaW50IGZyb20gdGhlXFxuKy5JIGZhX2Nvd2V4dHNpemVcXG4rZmllbGQuXFxuKy5SRVxcbisuUFxcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcXG4rLlJTXFxuKy5UUFxcbisuQiBGU19YRkxBR19SVElOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcmVhbHRpbWUgZmxhZy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcXG4rRGlzYWxsb3cgY3JlYXRpb24gb2Ygc3ltYm9saWMgbGlua3MgaW4gdGhpcyBkaXJlY3RvcnkuXFxuKy5UUFxcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgZXh0ZW50IHNpemUgaGludC5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXFxuK05ldyBmaWxlcyBjcmVhdGVkIGluIHRoaXMgZGlyZWN0b3J5IGluaGVyaXQgdGhlIHByb2plY3QgaWRlbnRpZmllci5cXG4rLlJFXFxuKy5QXFxuK1RoZSBmb2xsb3dpbmcgZmxhZ3MgYXJlIHJlYWQtb25seTpcXG4rLlJTXFxuKy5UUFxcbisuQiBGU19YRkxBR19QUkVBTExPQ1xcbitGaWxlIGhhcyBwcmVhbGxvY2F0ZWQgZXh0ZW50cy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0hBU0FUVFJcXG4rRmlsZSBoYXMgZXh0ZW5kZWQgYXR0cmlidXRlcy5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX1ZFUklUWVxcbitGaWxlIGhhcyBmcy12ZXJpdHkgZW5hYmxlZC5cXG4rLlRQXFxuKy5CIEZTX1hGTEFHX0NBU0VGT0xEXFxuK1RoZSBmaWxlc3lzdGVtIHBlcmZvcm1zIGNhc2UtaW5zZW5zaXRpdmUgbG9va3VwcyAoZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVcXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxcbisuVFBcXG4rLkIgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkdcXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxcbisuUkVcXG4rLlBcXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cXG4rU2V0dGluZyB1bnN1cHBvcnRlZCBmbGFncyBtYXkgcmVzdWx0IGluIGFuXFxuKy5CIEVJTlZBTFxcbitvclxcbisuQiBFT1BOT1RTVVBQXFxuK2Vycm9yLlxcbisuU0ggVkVSU0lPTlNcXG4rLlNTIFN0cnVjdHVyZSBzaXplXFxuK1RoZSBzdHJ1Y3R1cmUgc2l6ZSBpcyBkZWZpbmVkIGJ5XFxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcXG4rd2hpY2ggaXMgYWxzbyBhIHZlcnNpb24gb2YgdGhlIHN0cnVjdHVyZSBiZWluZyB1c2VkLlxcbitUaGVcXG4rLkkgc2l6ZVxcbitwYXJhbWV0ZXIgcGFzc2VkIHRvXFxuKy5CUiBmaWxlX2dldGF0dHIgKDIpXFxuK2FuZFxcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2ZcXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcXFxmUC5cXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcXG4rU2l6ZSBpcyAyNCBieXRlcy5cXG4rLlNIIEhJU1RPUllcXG4rLlNTIExpbnV4IHY2LjE3XFxuK1RoaXMgc3RydWN0dXJlIGlzIGludHJvZHVjZWQuXFxuK1RoZVxcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXFxuK3Byb3ZpZGVzIHNpbWlsYXIgZnVuY3Rpb25hbGl0eSB0b1xcbisuSSBzdHJ1Y3QgZnN4YXR0clxcbit1c2VkIGJ5IHRoZVxcbisuQiBGU19JT0NfRlNHRVRYQVRUUlxcbithbmRcXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcXG4rLkJSIGlvY3RsICgyKVxcbitvcGVyYXRpb25zLFxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxcbisuSSBzaXplXFxuK3BhcmFtZXRlciBvZiB0aGUgc3lzdGVtIGNhbGxzLlxcbisuUFxcbitFeHRyYSBmaWVsZHMgbWF5IGJlIGFwcGVuZGVkIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gZnV0dXJlIGtlcm5lbCB2ZXJzaW9ucy5cXG4rVGhlIGtlcm5lbCB3aWxsIGV4cGVjdCBuZXcgZmllbGRzIHRvIGJlIHplcm9zXFxuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxcbitUaGVyZWZvcmUsIGEgdXNlclxcbisuSSBtdXN0XFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXFxuK2tlcm5lbHMuXFxuKy5TUyBMaW51eCB2Ny4yXFxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXFxuK3VwcGVyIGxheWVycywgc3VjaCBhcyBORlNELCB0byByZXRyaWV2ZSBjYXNlIHNlbnNpdGl2aXR5IGluZm9ybWF0aW9uLlxcbisuU0ggU0VFIEFMU09cXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAxLjQxMzQ5MzY1NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTM1NzQxOTE5ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgZm9yIHRoZSBmaWxlX2dldGF0dHIgYW5kIGZpbGVfc2V0YXR0ciBzeXNjYWxscyBhbmQgc3RydWN0IGZpbGVfYXR0ci4gSXQgZG9lcyBub3QgbW9kaWZ5IGFueSBrZXJuZWwgc291cmNlIGNvZGUgb3IgZXhlY3V0YWJsZSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGEyOWM2MmFlYmNjNzYzNjcxNWZjOGQ5ZDMwMDY2ZTJjNzRjOTgwMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDEyOjU2OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9nZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX2dldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLjJkOWE2ZDMzOGE1ZTlcbi0tLSAvZGV2L251bGxcbisrKyBiL21hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yXG5AQCAtMCwwICsxLDI3OSBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9nZXRhdHRyIDIgKGRhdGUpIFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwiXG4rLlNIIE5BTUVcbitmaWxlX2dldGF0dHIgXFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbisuU0ggU1lOT1BTSVNcbisubmZcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCIgXCIgICAgICAvKiBcIiBBVF8qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkJSIFwiI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVwiIFwiICAgICAgICAgLyogc3RydWN0IFwiIGZpbGVfYXR0ciBcIiBhbmQgXCIgRlNfWEZMQUdfKiBcIiBjb25zdGFudHMgKi9cIlxuKy5CUiBcIiNpbmNsdWRlIFx1MDAzY3N5cy9zeXNjYWxsLmhcdTAwM2VcIiBcIiAgICAgIC8qIFwiIFNZU18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisuUFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLFxuKy5CSSBcIiAgICAgICAgICAgICAgIGludCBcIiBkaXJmZCBcIiwgY29uc3QgY2hhciAqXCIgcGF0aG5hbWUgLFxuKy5CSSBcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwiIGZhdHRyIFwiLCBzaXplX3QgXCIgc2l6ZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwiIGZsYWdzICk7XG4rLmZpXG4rLlBcbisuSVIgTm90ZSA6XG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbisuQlIgZmlsZV9nZXRhdHRyICgpLFxuK3VzZVxuKy5CUiBzeXNjYWxsICgyKVxuK2luc3RlYWQuXG4rLlNIIERFU0NSSVBUSU9OXG4rVGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoKVxuK3N5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xuK2Zyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5XG4rLklSIHBhdGhuYW1lIC5cbisuUFxuK1RoaXMgc3lzdGVtIGNhbGwgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rLkJSIGlvY3RsICgyKVxuK29wZXJhdGlvbixcbitidXQgd2l0aCB0aGUgYWR2YW50YWdlIHRoYXQgdGhlIGZpbGUgZG9lcyBub3QgbmVlZCB0byBiZSBvcGVuZWQuXG4rQnkgdXNpbmcgYSBwYXRobmFtZSxcbisuQlIgZmlsZV9nZXRhdHRyICgpXG4rY2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXG4rZnJvbSBhbGwgZmlsZSB0eXBlcyxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyBzdWNoIGFzIEZJRk9zLCBzb2NrZXRzLCBibG9jayBkZXZpY2VzLCBjaGFyYWN0ZXJcbitkZXZpY2VzLCBhbmQgc3ltbGlua3MsIHdoZXJlIG9wZW5pbmcgdGhlIHRhcmdldGVkIGlub2RlIG1heSBub3QgYmUgcG9zc2libGUuXG4rLlBcbitBcyB3aXRoXG4rLkJSIG9wZW5hdCAoMiksXG4raWZcbisuSSBwYXRobmFtZVxuK2lzIHJlbGF0aXZlLFxuK3RoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeVxuK3JlZmVycmVkIHRvIGJ5IHRoZSBmaWxlIGRlc2NyaXB0b3JcbisuSVIgZGlyZmQgLlxuK1RoZSBzcGVjaWFsIHZhbHVlXG4rLkIgQVRfRkRDV0Rcbitjb3VsZCBiZSB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFic29sdXRlLFxuK3RoZW5cbisuSSBkaXJmZFxuK2lzIGlnbm9yZWQuXG4rLlBcbitUaGVcbisuSSBmYXR0clxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlLlxuK1RoaXMgc3RydWN0dXJlIHdpbGwgYmUgZmlsbGVkIHdpdGggZmlsZSBhdHRyaWJ1dGVzLlxuK1RoaXMgc3RydWN0dXJlIGlzIGRlc2NyaWJlZCBpblxuKy5CUiBmaWxlX2F0dHIoMnR5cGUpIC5cbisuUFxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4rLklSIGZhdHRyIC5cbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cbisuQiBmaWxlX2F0dHIoMnR5cGUpXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbisuUFxuK1VzZXJzcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHplcm8taW5pdGlhbGl6ZVxuKy5JIHN0cnVjdCBmaWxlX2F0dHJcbitiZWZvcmUgY2FsbGluZ1xuKy5CUiBmaWxlX2dldGF0dHIgKClcbit0byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXG4rd2lsbCBoYXZlIHByZWRpY3RhYmxlIHZhbHVlcy5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzaywgYXZhaWxhYmxlIGZsYWdzIGFyZTpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLklSIGRpcmZkIC5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ7XG4raW5zdGVhZCBnZXQgYXR0cmlidXRlcyBvZiB0aGUgc3ltYm9saWMgbGluayBpbm9kZSBpdHNlbGYuXG4rQnkgZGVmYXVsdCwgc3ltYm9saWMgbGlua3MgYXJlIGRlcmVmZXJlbmNlZC5cbisuU0ggUkVUVVJOIFZBTFVFXG4rT24gc3VjY2Vzcyxcbit6ZXJvIGlzIHJldHVybmVkLlxuK09uIGVycm9yLFxuK1xcLTEgaXMgcmV0dXJuZWQsXG4rYW5kXG4rLkkgZXJybm9cbitpcyBzZXQgdG8gaW5kaWNhdGUgdGhlIGVycm9yLlxuKy5TSCBFUlJPUlNcbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpcyB0b28gYmlnIChsYXJnZXIgdGhhblxuKy5CUiBQQUdFX1NJWkUgKS5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKy5UUFxuKy5CIEVCQURGXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBidXRcbisuSSBkaXJmZFxuK2lzIG5laXRoZXJcbisuQiBBVF9GRENXRFxuK25vciBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nLFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgc3BlY2lmaWVkLFxuK2J1dFxuKy5JIGRpcmZkXG4raXMgYW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUZBVUxUXG4rLkkgcGF0aG5hbWVcbitvclxuKy5JIGZhdHRyXG4raXMgYW4gaW52YWxpZCBwb2ludGVyLlxuKy5UUFxuKy5CIEVJTlZBTFxuK0ludmFsaWQgZmxhZyBzcGVjaWZpZWQgaW5cbisuSVIgZmxhZ3MgLlxuKy5UUFxuKy5CIEVJTlZBTFxuKy5JIHNpemVcbitpcyBzbWFsbGVyIHRoYW5cbisuQlIgRklMRV9BVFRSX1NJWkVfVkVSMCAuXG4rLlRQXG4rLkIgRUxPT1BcbitUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCB3aGlsZSByZXNvbHZpbmdcbisuSVIgcGF0aG5hbWUgLlxuKy5UUFxuKy5CIEVOQU1FVE9PTE9OR1xuKy5JIHBhdGhuYW1lXG4raXMgdG9vIGxvbmcuXG4rLlRQXG4rLkIgRU5PRU5UXG4rQSBjb21wb25lbnQgb2ZcbisuSSBwYXRobmFtZVxuK2RvZXMgbm90IGV4aXN0LFxuK29yXG4rLkkgcGF0aG5hbWVcbitpcyBhbiBlbXB0eSBzdHJpbmcgYW5kXG4rLkIgQVRfRU1QVFlfUEFUSFxuK3dhcyBub3Qgc3BlY2lmaWVkIGluXG4rLklSIGZsYWdzIC5cbisuVFBcbisuQiBFTk9NRU1cbitJbnN1ZmZpY2llbnQga2VybmVsIG1lbW9yeSB3YXMgYXZhaWxhYmxlLlxuKy5UUFxuKy5CIEVOT1RESVJcbitBIGNvbXBvbmVudCBvZiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSSBwYXRobmFtZVxuK2lzIG5vdCBhIGRpcmVjdG9yeSBvcixcbisuSSBwYXRobmFtZVxuK2lzIHJlbGF0aXZlIGFuZFxuKy5JIGRpcmZkXG4raXMgYSBmaWxlIGRlc2NyaXB0b3IgcmVmZXJyaW5nIHRvIGEgZmlsZSBvdGhlciB0aGFuIGEgZGlyZWN0b3J5LlxuKy5UUFxuKy5CIEVPUE5PVFNVUFBcbitUaGUgZmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGdldHRpbmcgYXR0cmlidXRlcyBvbiB0aGlzIHR5cGUgb2YgaW5vZGUuXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTR0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlLlxuKy5TSCBOT1RFU1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZS5cbitUaGVcbisuSSBzaXplXG4rYXJndW1lbnQgYWxsb3dzIHVzZXJzcGFjZSBhcHBsaWNhdGlvbnMgdG8gaW5kaWNhdGVcbit3aGljaCB2ZXJzaW9uIG9mIHRoZVxuKy5JIGZpbGVfYXR0clxuK3N0cnVjdHVyZSB0aGV5IGFyZSB1c2luZyxcbitlbmFibGluZyB0aGUga2VybmVsIHRvIHN1cHBvcnQgYm90aCBvbGQgYW5kIG5ldyB2ZXJzaW9uc1xuK29mIHRoZSBzdHJ1Y3R1cmUgc2ltdWx0YW5lb3VzbHkuXG4rLlBcbitJZlxuKy5JIHNpemVcbitpcyBzbWFsbGVyIHRoYW4gdGhlIHN0cnVjdHVyZSBzaXplIHRoZSBrZXJuZWwgZXhwZWN0cyxcbitvbmx5IHRoZSBmaWVsZHMgdGhhdCBmaXQgd2l0aGluXG4rLkkgc2l6ZVxuK3dpbGwgYmUgZmlsbGVkIGluLlxuK0lmXG4rLkkgc2l6ZVxuK2lzIGxhcmdlciB0aGFuIHRoZSBrZXJuZWwncyBzdHJ1Y3R1cmUgc2l6ZSxcbit0aGUgZXh0cmEgYnl0ZXMgYXJlIHplcm9lZC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX2dldGF0dHIgKClcbit0byByZXRyaWV2ZSBhbmQgZGlzcGxheSBmaWxlIGF0dHJpYnV0ZXMuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzdGRpby5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkbGliLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4raW50XG4rbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxuK3tcbisgICAgc3RydWN0IGZpbGVfYXR0ciBmYSA9IHsgMCB9O1xuKyAgICBsb25nIHJldDtcbitcbisgICAgaWYgKGFyZ2MgIT0gMikge1xuKyAgICAgICAgZnByaW50ZihzdGRlcnIsIFwiVXNhZ2U6ICVzIFx1MDAzY2ZpbGVuYW1lXHUwMDNlXFxcXG5cIiwgYXJndlswXSk7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBBVF9GRENXRCwgYXJndlsxXSwgXHUwMDI2ZmEsIHNpemVvZihmYSksIDApO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBwcmludGYoXCJGaWxlIGF0dHJpYnV0ZXM6XFxcXG5cIik7XG4rICAgIHByaW50ZihcIiAgeGZsYWdzOiAgICAgMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuKyAgICBwcmludGYoXCIgIGV4dHNpemU6ICAgICV1XFxcXG5cIiwgZmEuZmFfZXh0c2l6ZSk7XG4rICAgIHByaW50ZihcIiAgbmV4dGVudHM6ICAgJXVcXFxcblwiLCBmYS5mYV9uZXh0ZW50cyk7XG4rICAgIHByaW50ZihcIiAgcHJvamlkOiAgICAgJXVcXFxcblwiLCBmYS5mYV9wcm9qaWQpO1xuKyAgICBwcmludGYoXCIgIGNvd2V4dHNpemU6ICV1XFxcXG5cIiwgZmEuZmFfY293ZXh0c2l6ZSk7XG4rXG4rICAgIC8qXG4rICAgICAqIFRyeSBzZXR0aW5nIE5PRFVNUCBmbGFnIHdpdGggY2hhdHRyICtkIC4vZm9vIHRvIHNlZSB0aGUgZGlmZmVyZW5jZVxuKyAgICAgKi9cbisgICAgaWYgKGZhLmZhX3hmbGFncyBcdTAwMjYgRlNfWEZMQUdfTk9EVU1QKVxuKyAgICAgICAgcHJpbnRmKFwiICBOT0RVTVAgZmxhZyBpcyBzZXRcXFxcblwiKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9zZXRhdHRyICgyKSxcbisuQlIgZmlsZV9hdHRyICgydHlwZSksXG4rLkJSIGlvY3RsICgyKSxcbisuQlIgaW9jdGxfZnMgKDIpLFxuKy5CUiBvcGVuYXQgKDIpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIgYi9tYW4vbWFuMi9maWxlX3NldGF0dHIuMlxubmV3IGZpbGUgbW9kZSAxMDA2NDRcbmluZGV4IDAwMDAwMDAwMDAwMDAuLmMzNDBiZGNhYjA2NTRcbi0tLSAvZGV2L251bGxcbisrKyBiL21hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yXG5AQCAtMCwwICsxLDMzMyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9zZXRhdHRyIDIgKGRhdGUpIFwiTGludXggbWFuLXBhZ2VzICh1bnJlbGVhc2VkKVwiXG4rLlNIIE5BTUVcbitmaWxlX3NldGF0dHIgXFwtIHNldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbisuU0ggU1lOT1BTSVNcbisubmZcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mY250bC5oXHUwMDNlXCIgXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIEFUXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXCIgXCIgICAgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIEZJTEVfQVRUUl8qIFxcXG4rXCIgYW5kIFwiIEZTX1hGTEFHXyogXCIgY29uc3RhbnRzICovXCJcbisuQlIgXCIjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXCIgXCIgICAgICAvKiBEZWZpbml0aW9uIG9mIFwiIFNZU18qIFwiIGNvbnN0YW50cyAqL1wiXG4rLkIgI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbisuUFxuKy5CIGxvbmcgc3lzY2FsbChTWVNfZmlsZV9zZXRhdHRyLFxuKy5CSSBcIiAgICAgICAgICAgICAgIGludCBcIiBkaXJmZCBcIiwgY29uc3QgY2hhciAqXCIgcGF0aG5hbWUgLFxuKy5CSSBcIiAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlX2F0dHIgKlwiIGZhdHRyIFwiLCBzaXplX3QgXCIgc2l6ZSAsXG4rLkJJIFwiICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IFwiIGZsYWdzICk7XG4rLmZpXG4rLlBcbisuSVIgTm90ZSA6XG4rZ2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcbisuQlIgZmlsZV9zZXRhdHRyICgpLFxuK25lY2Vzc2l0YXRpbmcgdGhlIHVzZSBvZlxuKy5CUiBzeXNjYWxsICgyKS5cbisuU0ggREVTQ1JJUFRJT05cbitUaGVcbisuQlIgZmlsZV9zZXRhdHRyICgpXG4rc3lzdGVtIGNhbGwgc2V0cyBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbitvbiB0aGUgZmlsZSBzcGVjaWZpZWQgYnlcbisuSVIgcGF0aG5hbWUgLlxuKy5QXG4rVGhpcyBzeXN0ZW0gY2FsbCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gdGhlXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9uLFxuK2J1dCB3aXRoIHRoZSBhZHZhbnRhZ2UgdGhhdCB0aGUgZmlsZSBkb2VzIG5vdCBuZWVkIHRvIGJlIG9wZW5lZC5cbitCeSB1c2luZyBhIHBhdGhuYW1lIGluc3RlYWQgb2YgcmVxdWlyaW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLFxuKy5CUiBmaWxlX3NldGF0dHIgKClcbitjYW4gbWFuaXB1bGF0ZSBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcbitvbiBhbGwgZmlsZSB0eXBlcyxcbitpbmNsdWRpbmcgc3BlY2lhbCBmaWxlcyAoRklGT3MsIHNvY2tldHMsIGJsb2NrIGRldmljZXMsIGNoYXJhY3RlciBkZXZpY2VzKVxuK3doZXJlIG9wZW5pbmcgdGhlIGZpbGUgbWF5IGhhdmUgc2lkZSBlZmZlY3RzIG9yIG1heSBub3QgYmUgcG9zc2libGUuXG4rV2l0aFxuKy5CUiBpb2N0bCAoMiksXG4raXQgaXMgbm90IGFsd2F5cyBwb3NzaWJsZSB0byBvYnRhaW4gYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCByZWZlcnNcbitkaXJlY3RseSB0byB0aGUgZmlsZXN5c3RlbSBpbm9kZSBmb3Igc3BlY2lhbCBmaWxlcy5cbisuUFxuK0FzIHdpdGhcbisuQlIgb3BlbmF0ICgyKSxcbitpZlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUsXG4rdGhlbiBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5XG4rcmVmZXJyZWQgdG8gYnkgdGhlIGZpbGUgZGVzY3JpcHRvclxuKy5JIGRpcmZkXG4rKG9yIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsXG4raWZcbisuSSBkaXJmZFxuK2lzIHRoZSBzcGVjaWFsIHZhbHVlXG4rLkJSIEFUX0ZEQ1dEICkuXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFic29sdXRlLFxuK3RoZW5cbisuSSBkaXJmZFxuK2lzIGlnbm9yZWQuXG4rLlBcbitUaGVcbisuSSBmYXR0clxuK2FyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlLFxuK3doaWNoIHNwZWNpZmllcyB0aGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhlIGZpbGUuXG4rVGhpcyBzdHJ1Y3R1cmUgaXMgZGVzY3JpYmVkIGluXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLlxuK1VzZXItc3BhY2UgYXBwbGljYXRpb25zIHNob3VsZCB1c2VcbisuQiBmaWxlX2dldGF0dHIoMilcbit0byBpbml0aWFsaXplXG4rLkkgc3RydWN0IGZhdHRyXG4rYmVmb3JlaGFuZC5cbisuUFxuK1RoZVxuKy5JIHNpemVcbithcmd1bWVudCBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5XG4rLklSIGZhdHRyIC5cbitUaGUgc2l6ZSBpbmRpY2F0ZXMgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGluIHVzZSwgcmVmZXIgdG9cbisuQiBmaWxlX2F0dHIoMnR5cGUpXG4rZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdmVyc2lvbmluZy5cbisuUFxuK1RoZVxuKy5JIGZsYWdzXG4rYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBpbmNsdWRlIHplcm8gb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczpcbisuVFBcbisuQiBBVF9FTVBUWV9QQVRIXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbitvcGVyYXRlIG9uIHRoZSBmaWxlIHJlZmVycmVkIHRvIGJ5XG4rLkkgZGlyZmRcbisod2hpY2ggbWF5IGhhdmUgYmVlbiBvYnRhaW5lZCB1c2luZyB0aGVcbisuQlIgb3BlbiAoMilcbisuQiBPX1BBVEhcbitmbGFnKS5cbitJbiB0aGlzIGNhc2UsXG4rLkkgZGlyZmRcbitjYW4gcmVmZXIgdG8gYW55IHR5cGUgb2YgZmlsZSxcbitub3QganVzdCBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBBVF9TWU1MSU5LX05PRk9MTE9XXG4rSWZcbisuSSBwYXRobmFtZVxuK2lzIGEgc3ltYm9saWMgbGluayxcbitkbyBub3QgZGVyZWZlcmVuY2UgaXQ6XG4raW5zdGVhZCBzZXQgYXR0cmlidXRlcyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYuXG4rQnkgZGVmYXVsdCAoaS5lLiwgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQpLFxuK3N5bWJvbGljIGxpbmtzIGFyZSBkZXJlZmVyZW5jZWQuXG4rLlNIIFJFVFVSTiBWQUxVRVxuK09uIHN1Y2Nlc3MsXG4remVybyBpcyByZXR1cm5lZC5cbitPbiBlcnJvcixcbitcXC0xIGlzIHJldHVybmVkLFxuK2FuZFxuKy5JIGVycm5vXG4raXMgc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci5cbisuU0ggRVJST1JTXG4rLlRQXG4rLkIgRTJCSUdcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW5cbisuQlIgUEFHRV9TSVpFIC5cbisuVFBcbisuQiBFMkJJR1xuKy5JIHNpemVcbitpbmRpY2F0ZXMgdGhlIHZlcnNpb24gd2hpY2gga2VybmVsIGRvZXNuJ3Qgc3VwcG9ydCAodGhlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlXG4ra2VybmVsIGV4cGVjdHMpIGFuZCBuZXcgZmllbGRzIGFyZSBub24temVyby5cbisuVFBcbisuQiBFQUNDRVNcbitTZWFyY2ggcGVybWlzc2lvbiBpcyBkZW5pZWQgZm9yIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXNcbitpbiB0aGUgcGF0aCBwcmVmaXggb2ZcbisuSVIgcGF0aG5hbWUgLlxuKyhTZWUgYWxzb1xuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpLilcbisuVFBcbisuQiBFQkFERlxuKy5JIHBhdGhuYW1lXG4raXMgcmVsYXRpdmUgYnV0XG4rLkkgZGlyZmRcbitpcyBuZWl0aGVyXG4rLkIgQVRfRkRDV0Rcbitub3IgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IuXG4rLlRQXG4rLkIgRUJBREZcbisuSSBwYXRobmFtZVxuK2lzIGFuIGVtcHR5IHN0cmluZyxcbisuQiBBVF9FTVBUWV9QQVRIXG4rd2FzIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAsXG4rYW5kXG4rLkkgZGlyZmRcbitpcyBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci5cbisuVFBcbisuQiBFRkFVTFRcbisuSSBwYXRobmFtZVxuK29yXG4rLkkgZmF0dHJcbitpcyBhbiBpbnZhbGlkIHBvaW50ZXIuXG4rLlRQXG4rLkIgRUlOVkFMXG4rSW52YWxpZCBmbGFnIHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRUlOVkFMXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhblxuKy5CUiBGSUxFX0FUVFJfU0laRV9WRVIwIC5cbisuVFBcbisuQiBFSU5WQUxcbitJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHBhcmFtZXRlcnMgcHJvdmlkZWQgaW5cbisuSSBmYXR0clxuK2ZvciB0aGlzIHR5cGUgb2YgZmlsZSBvciBmaWxlc3lzdGVtLlxuKy5UUFxuKy5CIEVMT09QXG4rVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVzb2x2aW5nXG4rLklSIHBhdGhuYW1lIC5cbisuVFBcbisuQiBFTkFNRVRPT0xPTkdcbisuSSBwYXRobmFtZVxuK2lzIHRvbyBsb25nLlxuKy5UUFxuKy5CIEVOT0VOVFxuK0EgY29tcG9uZW50IG9mXG4rLkkgcGF0aG5hbWVcbitkb2VzIG5vdCBleGlzdCxcbitvclxuKy5JIHBhdGhuYW1lXG4raXMgYW4gZW1wdHkgc3RyaW5nIGFuZFxuKy5CIEFUX0VNUFRZX1BBVEhcbit3YXMgbm90IHNwZWNpZmllZCBpblxuKy5JUiBmbGFncyAuXG4rLlRQXG4rLkIgRU5PTUVNXG4rSW5zdWZmaWNpZW50IGtlcm5lbCBtZW1vcnkgd2FzIGF2YWlsYWJsZS5cbisuVFBcbisuQiBFTk9URElSXG4rQSBjb21wb25lbnQgb2YgdGhlIHBhdGggcHJlZml4IG9mXG4rLkkgcGF0aG5hbWVcbitpcyBub3QgYSBkaXJlY3Rvcnkgb3IsXG4rLkkgcGF0aG5hbWVcbitpcyByZWxhdGl2ZSBhbmRcbisuSSBkaXJmZFxuK2lzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGZpbGUgb3RoZXIgdGhhbiBhIGRpcmVjdG9yeS5cbisuVFBcbisuQiBFT1BOT1RTVVBQXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIGF0dHJpYnV0ZXMgb24gdGhpcyB0eXBlIG9mIGlub2RlLlxuKy5UUFxuKy5CIEVQRVJNXG4rVGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnNcbit0byBjaGFuZ2UgdGhlIGZpbGUgYXR0cmlidXRlcy5cbisuVFBcbisuQiBFUk9GU1xuK1RoZSBmaWxlIGlzIG9uIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0uXG4rLlNIIEhJU1RPUllcbisuU1MgTGludXggNi4xN1xuK1RoaXMgc3lzdGVtIGNhbGwgaXMgaW50cm9kdWNlZCBhcyBhIG1vcmUgZmxleGlibGUgYWx0ZXJuYXRpdmUgdG8gdGhlXG4rRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rd2hpY2ggY291bGQgd29yayBvbiBhbnkgdHlwZSBvZiBmaWxlcy5cbisuU0ggTk9URVNcbitUaGlzIHN5c3RlbSBjYWxsIGlzIGRlc2lnbmVkIHRvIGJlIGV4dGVuc2libGUuXG4rVGhlXG4rLkkgc2l6ZVxuK2FyZ3VtZW50IGFsbG93cyB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0byBpbmRpY2F0ZVxuK3doaWNoIHZlcnNpb24gb2YgdGhlXG4rLkkgZmlsZV9hdHRyXG4rc3RydWN0dXJlIHRoZXkgYXJlIHVzaW5nLFxuK2VuYWJsaW5nIHRoZSBrZXJuZWwgdG8gc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IHZlcnNpb25zXG4rb2YgdGhlIHN0cnVjdHVyZSBzaW11bHRhbmVvdXNseS5cbisuUFxuK0lmXG4rLkkgc2l6ZVxuK2lzIHNtYWxsZXIgdGhhbiB0aGUgc3RydWN0dXJlIHNpemUgdGhlIGtlcm5lbCBleHBlY3RzLFxuK3RoZSBrZXJuZWwgdHJlYXRzIHRoZSBtaXNzaW5nIGZpZWxkcyBhcyBoYXZpbmcgemVybyB2YWx1ZXNcbisod2hpY2ggaXMgYSBuby1vcCkuXG4rSWZcbisuSSBzaXplXG4raXMgbGFyZ2VyIHRoYW4gZXhwZWN0ZWQsXG4rdGhlIGtlcm5lbCBjaGVja3MgdGhhdCBhbGwgdW5rbm93biAodG8gdGhlIGtlcm5lbCkgZmllbGRzIGFyZSB6ZXJvO1xuK2lmIG5vdCxcbit0aGUgY2FsbCBmYWlscyB3aXRoXG4rLkJSIEUyQklHIC5cbisuU0ggRVhBTVBMRVNcbitUaGUgcHJvZ3JhbSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIHVzZSBvZlxuKy5CUiBmaWxlX3NldGF0dHIgKClcbit0byBzZXQgdGhlXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rZmxhZyBvbiBhIGZpbGUuXG4rLlBcbisuaW4gKzRuXG4rLkVYXG4rI2luY2x1ZGUgXHUwMDNjZmNudGwuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZjbnRsLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9mcy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RkaW8uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY3N0ZGxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjc3RyaW5nLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NzeXMvc3lzY2FsbC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjdW5pc3RkLmhcdTAwM2VcbitcbisjaWZuZGVmIFNZU19maWxlX2dldGF0dHJcbisjZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XG4rI2VuZGlmXG4rXG4rI2lmbmRlZiBTWVNfZmlsZV9zZXRhdHRyXG4rI2RlZmluZSBTWVNfZmlsZV9zZXRhdHRyIDQ2OFxuKyNlbmRpZlxuK1xuK2ludFxuK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcbit7XG4rICAgIHN0cnVjdCBmaWxlX2F0dHIgZmEgPSB7IDAgfTtcbisgICAgaW50IGRmZDtcbisgICAgbG9uZyByZXQ7XG4rXG4rICAgIGlmIChhcmdjICE9IDIpIHtcbisgICAgICAgIGZwcmludGYoc3RkZXJyLCBcIlVzYWdlOiAlcyBcdTAwM2NmaWxlbmFtZVx1MDAzZVxcXFxuXCIsIGFyZ3ZbMF0pO1xuKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xuKyAgICB9XG4rXG4rICAgIGRmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpO1xuKyAgICBpZiAoZGZkID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcIm9wZW5cIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFwiXCIsIFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcbisgICAgaWYgKHJldCA9PSBcXC0xKSB7XG4rICAgICAgICBwZXJyb3IoXCJmaWxlX2dldGF0dHJcIik7XG4rICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XG4rICAgIH1cbitcbisgICAgcHJpbnRmKFwiQ3VycmVudCBmbGFnczogMHglbGx4XFxcXG5cIiwgKHVuc2lnbmVkIGxvbmcgbG9uZylmYS5mYV94ZmxhZ3MpO1xuK1xuKyAgICBmYS5mYV94ZmxhZ3MgfD0gRlNfWEZMQUdfTk9EVU1QO1xuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX3NldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfc2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICByZXQgPSBzeXNjYWxsKFNZU19maWxlX2dldGF0dHIsIGRmZCwgXCJcIiwgXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xuKyAgICBpZiAocmV0ID09IFxcLTEpIHtcbisgICAgICAgIHBlcnJvcihcImZpbGVfZ2V0YXR0clwiKTtcbisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcbisgICAgfVxuK1xuKyAgICBpZiAoZmEuZmFfeGZsYWdzIFx1MDAyNiBGU19YRkxBR19OT0RVTVApXG4rICAgICAgICBwcmludGYoXCJmbGFncyAweCVsbHggKE5PRFVNUCBmbGFnIGlzIHNldClcXFxcblwiLFxuKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpZmEuZmFfeGZsYWdzKTtcbitcbisgICAgZXhpdChFWElUX1NVQ0NFU1MpO1xuK31cbisuRUVcbisuaW5cbisuU0ggU0VFIEFMU09cbisuQlIgZmlsZV9nZXRhdHRyICgyKSxcbisuQlIgaW9jdGwgKDIpLFxuKy5CUiBpb2N0bF9mcyAoMiksXG4rLkJSIG9wZW5hdCAoMiksXG4rLkJSIGZpbGVfYXR0ciAoMnR5cGUpLFxuKy5CUiBwYXRoX3Jlc29sdXRpb24gKDcpXG5kaWZmIC0tZ2l0IGEvbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSBiL21hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwLi5mZDQyNmMxOWY1ZjBiXG4tLS0gL2Rldi9udWxsXG4rKysgYi9tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlXG5AQCAtMCwwICsxLDE4NyBAQFxuKy5cXFwiIENvcHlyaWdodCwgdGhlIGF1dGhvcnMgb2YgdGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0XG4rLlxcXCJcbisuXFxcIiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTGludXgtbWFuLXBhZ2VzLWNvcHlsZWZ0XG4rLlxcXCJcbisuVEggZmlsZV9hdHRyIDJ0eXBlIChkYXRlKSBcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcIlxuKy5TSCBOQU1FXG4rZmlsZV9hdHRyIFxcLSBkZXNjcmliZSBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlcyB0byBnZXQgb3Igc2V0XG4rLlNIIFNZTk9QU0lTXG4rLkVYXG4rLkIgI2luY2x1ZGUgXHUwMDNjbGludXgvZnMuaFx1MDAzZVxuKy5QXG4rLkIgc3RydWN0IGZpbGVfYXR0ciB7XG4rLkJSIFwiICAgIHU2NCAgZmFfeGZsYWdzO1wiIFwiICAgICAvKiBFeHRlbmRlZCBmbGFncyAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfZXh0c2l6ZTtcIiBcIiAgICAvKiBFeHRlbnQgc2l6ZSBoaW50ICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9uZXh0ZW50cztcIiBcIiAgIC8qIE51bWJlciBvZiBleHRlbnRzIChyZWFkLW9ubHkpICovXCJcbisuQlIgXCIgICAgdTMyICBmYV9wcm9qaWQ7XCIgXCIgICAgIC8qIFByb2plY3QgaWRlbnRpZmllciAqL1wiXG4rLkJSIFwiICAgIHUzMiAgZmFfY293ZXh0c2l6ZTtcIiBcIiAvKiBDb1cgZXh0ZW50IHNpemUgaGludCAqL1wiXG4rLkIgfTtcbisuRUVcbisuU0ggREVTQ1JJUFRJT05cbitEZXNjcmliZXMgZmlsZXN5c3RlbSBmaWxlIGF0dHJpYnV0ZXNcbitmb3IgdXNlIHdpdGggdGhlXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMilcbithbmRcbisuQlIgZmlsZV9zZXRhdHRyICgyKVxuK3N5c3RlbSBjYWxscy5cbisuUFxuK1RoZSBmaWVsZHMgYXJlIGFzIGZvbGxvd3M6XG4rLlRQXG4rLkkgZmFfeGZsYWdzXG4rVGhpcyBmaWVsZCBjb250YWlucyBmaWxlIGF0dHJpYnV0ZSBmbGFncy5cbitJdCBpcyBhIGJpdCBtYXNrIGNvbnNpc3Rpbmcgb2YgemVybyBvciBtb3JlIG9mIHRoZVxuKy5CIEZTX1hGTEFHXypcbitmbGFncy5cbitSZWZlciB0byB0aGUgc2VjdGlvblxuKy5CIEZMQUdTXG4rYmVsb3cgZm9yIGEgbGlzdCBvZiBhbGwgZmxhZ3MuXG4rLlRQXG4rLkkgZmFfZXh0c2l6ZVxuK0V4dGVudCBzaXplIGFsbG9jYXRvciBoaW50IGluIGJ5dGVzLlxuK1RoaXMgdmFsdWUgc3VnZ2VzdHMgYSBwcmVmZXJyZWQgZXh0ZW50IHNpemVcbitmb3IgbmV3IGFsbG9jYXRpb25zIHRvIHRoaXMgZmlsZS5cbisuVFBcbisuSSBmYV9uZXh0ZW50c1xuK051bWJlciBvZiBkYXRhIGV4dGVudHMgaW4gdGhlIGZpbGUgKHJlYWQtb25seSkuXG4rVGhpcyBmaWVsZCBpcyBmaWxsZWQgaW4gYnlcbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZCBpcyBpZ25vcmVkIGJ5XG4rLkJSIGZpbGVfc2V0YXR0ciAoMikuXG4rLlRQXG4rLkkgZmFfcHJvamlkXG4rUHJvamVjdCBpZGVudGlmaWVyLlxuK1VzZWQgYnkgcXVvdGEgc3lzdGVtcyB0byBncm91cCByZWxhdGVkIGZpbGVzLlxuKy5UUFxuKy5JIGZhX2Nvd2V4dHNpemVcbitDb3B5LW9uLVdyaXRlIChDb1cpIGV4dGVudCBzaXplIGhpbnQgaW4gYnl0ZXMuXG4rVGhpcyB2YWx1ZSBzdWdnZXN0cyBhIHByZWZlcnJlZCBleHRlbnQgc2l6ZVxuK2ZvciBDb1cgb3BlcmF0aW9ucy5cbisuU0ggRkxBR1NcbitGbGFncyBjYW4gYmU6XG4rLlJTXG4rLlRQXG4rLkIgRlNfWEZMQUdfUkVBTFRJTUVcbitEYXRhIGlzIHN0b3JlZCBpbiBhIHJlYWx0aW1lIHZvbHVtZS5cbisuVFBcbisuQiBGU19YRkxBR19JTU1VVEFCTEVcbitGaWxlIGNhbm5vdCBiZSBtb2RpZmllZC5cbisuVFBcbisuQiBGU19YRkxBR19BUFBFTkRcbitBbGwgd3JpdGVzIG11c3QgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUuXG4rLlRQXG4rLkIgRlNfWEZMQUdfU1lOQ1xuK0FsbCB3cml0ZXMgYXJlIHN5bmNocm9ub3VzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PQVRJTUVcbitEbyBub3QgdXBkYXRlIGZpbGUgYWNjZXNzIHRpbWUgb24gcmVhZHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfTk9EVU1QXG4rRG8gbm90IGluY2x1ZGUgZmlsZSBpbiBiYWNrdXBzLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0RBWFxuK1VzZSBEaXJlY3QgQWNjZXNzIChEQVgpIGZvciBJL08gb3BlcmF0aW9ucy5cbisuVFBcbisuQiBGU19YRkxBR19OT0RFRlJBR1xuK0V4Y2x1ZGUgdGhpcyBmaWxlIGZyb20gZGVmcmFnbWVudGF0aW9uIG9wZXJhdGlvbnMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfRklMRVNUUkVBTVxuK1VzZSBmaWxlc3RyZWFtIGFsbG9jYXRvciBmb3IgdGhpcyBmaWxlLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0VYVFNJWkVcbitVc2UgdGhlIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9leHRzaXplXG4rZmllbGQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ09XRVhUU0laRVxuK1VzZSB0aGUgQ29XIGV4dGVudCBzaXplIGhpbnQgZnJvbSB0aGVcbisuSSBmYV9jb3dleHRzaXplXG4rZmllbGQuXG4rLlJFXG4rLlBcbitEaXJlY3Rvcnkgb25seSBmbGFnczpcbisuUlNcbisuVFBcbisuQiBGU19YRkxBR19SVElOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSByZWFsdGltZSBmbGFnLlxuKy5UUFxuKy5CIEZTX1hGTEFHX05PU1lNTElOS1NcbitEaXNhbGxvdyBjcmVhdGlvbiBvZiBzeW1ib2xpYyBsaW5rcyBpbiB0aGlzIGRpcmVjdG9yeS5cbisuVFBcbisuQiBGU19YRkxBR19FWFRTWklOSEVSSVRcbitOZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSBpbmhlcml0IHRoZSBleHRlbnQgc2l6ZSBoaW50LlxuKy5UUFxuKy5CIEZTX1hGTEFHX1BST0pJTkhFUklUXG4rTmV3IGZpbGVzIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkgaW5oZXJpdCB0aGUgcHJvamVjdCBpZGVudGlmaWVyLlxuKy5SRVxuKy5QXG4rVGhlIGZvbGxvd2luZyBmbGFncyBhcmUgcmVhZC1vbmx5OlxuKy5SU1xuKy5UUFxuKy5CIEZTX1hGTEFHX1BSRUFMTE9DXG4rRmlsZSBoYXMgcHJlYWxsb2NhdGVkIGV4dGVudHMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfSEFTQVRUUlxuK0ZpbGUgaGFzIGV4dGVuZGVkIGF0dHJpYnV0ZXMuXG4rLlRQXG4rLkIgRlNfWEZMQUdfVkVSSVRZXG4rRmlsZSBoYXMgZnMtdmVyaXR5IGVuYWJsZWQuXG4rLlRQXG4rLkIgRlNfWEZMQUdfQ0FTRUZPTERcbitUaGUgZmlsZXN5c3RlbSBwZXJmb3JtcyBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cHMgKGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lXG4rY29tcGFyaXNvbnMgaWdub3JlIGNhc2UpLlxuKy5UUFxuKy5CIEZTX1hGTEFHX0NBU0VOT05QUkVTRVJWSU5HXG4rVGhlIGZpbGVzeXN0ZW0gZG9lcyBub3QgcHJlc2VydmUgdGhlIGNhc2Ugb2YgZmlsZSBhbmQgZGlyZWN0b3J5IG5hbWVzLlxuKy5SRVxuKy5QXG4rTm90IGFsbCBmaWxlc3lzdGVtcyBzdXBwb3J0IGFsbCBmbGFncy5cbitTZXR0aW5nIHVuc3VwcG9ydGVkIGZsYWdzIG1heSByZXN1bHQgaW4gYW5cbisuQiBFSU5WQUxcbitvclxuKy5CIEVPUE5PVFNVUFBcbitlcnJvci5cbisuU0ggVkVSU0lPTlNcbisuU1MgU3RydWN0dXJlIHNpemVcbitUaGUgc3RydWN0dXJlIHNpemUgaXMgZGVmaW5lZCBieVxuKy5CIEZJTEVfQVRUUl9TSVpFX1ZFUipcbit3aGljaCBpcyBhbHNvIGEgdmVyc2lvbiBvZiB0aGUgc3RydWN0dXJlIGJlaW5nIHVzZWQuXG4rVGhlXG4rLkkgc2l6ZVxuK3BhcmFtZXRlciBwYXNzZWQgdG9cbisuQlIgZmlsZV9nZXRhdHRyICgyKVxuK2FuZFxuKy5CUiBmaWxlX3NldGF0dHIgKDIpXG4raW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mXG4rLkkgc3RydWN0IGZpbGVfYXR0clxcZlAuXG4rLlNTIEZJTEVfQVRUUl9TSVpFX1ZFUjBcbitTaXplIGlzIDI0IGJ5dGVzLlxuKy5TSCBISVNUT1JZXG4rLlNTIExpbnV4IHY2LjE3XG4rVGhpcyBzdHJ1Y3R1cmUgaXMgaW50cm9kdWNlZC5cbitUaGVcbisuSSBzdHJ1Y3QgZmlsZV9hdHRyXG4rcHJvdmlkZXMgc2ltaWxhciBmdW5jdGlvbmFsaXR5IHRvXG4rLkkgc3RydWN0IGZzeGF0dHJcbit1c2VkIGJ5IHRoZVxuKy5CIEZTX0lPQ19GU0dFVFhBVFRSXG4rYW5kXG4rLkIgRlNfSU9DX0ZTU0VUWEFUVFJcbisuQlIgaW9jdGwgKDIpXG4rb3BlcmF0aW9ucyxcbitidXQgaXMgZGVzaWduZWQgdG8gYmUgZXh0ZW5zaWJsZSB0aHJvdWdoIHRoZVxuKy5JIHNpemVcbitwYXJhbWV0ZXIgb2YgdGhlIHN5c3RlbSBjYWxscy5cbisuUFxuK0V4dHJhIGZpZWxkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHN0cnVjdHVyZSBpbiBmdXR1cmUga2VybmVsIHZlcnNpb25zLlxuK1RoZSBrZXJuZWwgd2lsbCBleHBlY3QgbmV3IGZpZWxkcyB0byBiZSB6ZXJvc1xuK2ZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3RydWN0dXJlLlxuK1RoZXJlZm9yZSwgYSB1c2VyXG4rLkkgbXVzdFxuK3plcm8tZmlsbCB0aGUgc3RydWN0dXJlIG9uIGluaXRpYWxpemF0aW9uIHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyXG4ra2VybmVscy5cbisuU1MgTGludXggdjcuMlxuK1RoZSBGU19YRkxBR19DQVNFRk9MRCBhbmQgRlNfWEZMQUdfQ0FTRU5PTlBSRVNFUlZJTkcgYXJlIGludHJvZHVjZWQgdG8gZW5hYmxlXG4rdXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXG4rLlNIIFNFRSBBTFNPXG4rLkJSIGZpbGVfZ2V0YXR0ciAoMiksXG4rLkJSIGZpbGVfc2V0YXR0ciAoMilcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDEyOjU2OjAxLjQxMzQ5NTE0N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU0MzQ4NDUzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaDogQSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8ganVtcCByaWdodCBpbnRvIHRoZSBwYXRjaCBpdHNlbGYuIEhvd2V2ZXIsIGhvbGQgb24gYSBzZWNvbmQ7IEkgbmVlZCB0byBhcHByb2FjaCB0aGlzIG1ldGhvZGljYWxseS4gRmlyc3QsIGxldCdzIHBpbnBvaW50IHdoYXQncyAqYWN0dWFsbHkqIGJlZW4gbW9kaWZpZWQuIFRoZSBkaWZmIHJldmVhbHMgY2hhbmdlcyB0byBgbWFuL21hbjIvZmlsZV9nZXRhdHRyLjJgLCBgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjJgLCBhbmQgYG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGVgLiBJbnRlcmVzdGluZy5cblxuTm93LCBhIGNyaXRpY2FsIHN0ZXA6IEkgbmVlZCBjb250ZXh0LiBUaGlzIGRpZmYgY291bGQgYmUgcGFydCBvZiBhIGxhcmdlciBjaGFuZ2UuIEkgaGF2ZSB0byB2ZXJpZnkgaWYgdGhpcyByZXByZXNlbnRzIHRoZSB3aG9sZSBzdG9yeS4gSSdkIHVzdWFsbHkgcmVhY2ggZm9yIGBnaXQgbG9nYCBvciBhIGBnaXQgZGlmZmAgd2l0aGluIHRoZSB3b3Jrc3BhY2UgdG8gY29uZmlybSB0aGlzLCBidXQgaXQgc2VlbXMgdGhvc2UgdG9vbHMgYXJlbid0IHJlYWRpbHkgYXZhaWxhYmxlIGhlcmUuIE5vIHByb2JsZW0uIExldCdzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbGwgZmlsZXMgaW4gYG1hbi9gIG9yIGFueSBrZXJuZWwgc291cmNlIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBJJ2xsIHV0aWxpemUgYGdyZXBwZXJgIG9yIGBjb2Rlc2VhcmNoLWRpci1pbmRleGAgdG8gZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBzaXR1YXRpb24uIFRoaXMgaXMgYWxsIGFib3V0IGdhaW5pbmcgYSBjb21wcmVoZW5zaXZlIHBlcnNwZWN0aXZlIGJlZm9yZSBJIGNhbiBtYWtlIGEganVkZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTkyLCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDYuODQ4MzQzMzU5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NDc5MDY2OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmlsZV9nZXRhdHRyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0PTM1MD1wYXJhbWV0ZXJzLiBTZWUgRlNfSU9DX0VOQUJMRV9WRVJJVFkuXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzUxLVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0OjM1MjpmaWxlX2dldGF0dHJcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdC0zNTMtLS0tLS0tLS0tLS0tXFxuRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc3Zlcml0eS5yc3QtMzU0LVxcbkRvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHkucnN0OjM1NTpTaW5jZSBMaW51eCB2Ny4wLCB0aGUgZmlsZV9nZXRhdHRyKCkgc3lzY2FsbCBzZXRzIEZTX1hGTEFHX1ZFUklUWSAoMHgwMDAyMDAwMClcXG5Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2ZzdmVyaXR5LnJzdC0zNTYtaW4gdGhlIHJldHVybmVkIGZsYWdzIHdoZW4gdGhlIGZpbGUgaGFzIHZlcml0eSBlbmFibGVkLiBOb3RlIHRoYXQgdGhpcyBhdHRyaWJ1dGVcXG4tLVxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUwOS01NzdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYWxwaGEva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUxMDo1NzhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9hbHBoYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTExLTU3OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsLTQ4NC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvYXJtL3Rvb2xzL3N5c2NhbGwudGJsOjQ4NTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9hcm0vdG9vbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgxLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9hcm02NC90b29scy9zeXNjYWxsXzMyLnRibDo0ODI6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvYXJtNjQvdG9vbHMvc3lzY2FsbF8zMi50YmwtNDgzLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDY5LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9tNjhrL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzA6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbTY4ay9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcxLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9taWNyb2JsYXplL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo0NzY6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvbWljcm9ibGF6ZS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsLTQwOC00NjdcXHRuMzJcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uMzIudGJsOjQwOTo0NjhcXHRuMzJcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX24zMi50YmwtNDEwLTQ2OVxcdG4zMlxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsLTM4NC00NjdcXHRuNjRcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9uNjQudGJsOjM4NTo0NjhcXHRuNjRcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsLTQ1Ny00NjdcXHRvMzJcXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvbWlwcy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbF9vMzIudGJsOjQ1ODo0NjhcXHRvMzJcXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9taXBzL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsX28zMi50YmwtNDU5LTQ2OVxcdG8zMlxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NjgtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDY5OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDcwLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDo1NjE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk2LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuYXJjaC9zMzkwL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibDozOTc6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbmFyY2gvczM5MC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTQ3My00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvc2gva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjQ3NDo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9zaC9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsLTUxNS00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gvc3BhcmMva2VybmVsL3N5c2NhbGxzL3N5c2NhbGwudGJsOjUxNjo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC9zcGFyYy9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfMzIudGJsLTQ3NS00NjdcXHRpMzg2XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibDo0NzY6NDY4XFx0aTM4NlxcdGZpbGVfZ2V0YXR0clxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsLTM5NC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbmFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsOjM5NTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxuYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmFyY2gveHRlbnNhL2tlcm5lbC9zeXNjYWxscy9zeXNjYWxsLnRibC00NDAtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDQxOjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG5hcmNoL3h0ZW5zYS9rZXJuZWwvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbmZzL2V4dDQvZXh0NC5oPTMxODg9ZXh0ZXJuIHZvaWQgZXh0NF9jbGVhcl9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7XFxuZnMvZXh0NC9leHQ0Lmg6MzE4OTpleHRlcm4gaW50ICBleHQ0X2ZpbGVfZ2V0YXR0cihzdHJ1Y3QgbW50X2lkbWFwICosIGNvbnN0IHN0cnVjdCBwYXRoICosXFxuZnMvZXh0NC9leHQ0LmgtMzE5MC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qga3N0YXQgKiwgdTMyLCB1bnNpZ25lZCBpbnQpO1xcbi0tXFxuZnMvZXh0NC9maWxlLmM9MTA1OD1jb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBleHQ0X2ZpbGVfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9leHQ0L2ZpbGUuYy0xMDU5LVxcdC5zZXRhdHRyXFx0PSBleHQ0X3NldGF0dHIsXFxuZnMvZXh0NC9maWxlLmM6MTA2MDpcXHQuZ2V0YXR0clxcdD0gZXh0NF9maWxlX2dldGF0dHIsXFxuZnMvZXh0NC9maWxlLmMtMTA2MS1cXHQubGlzdHhhdHRyXFx0PSBleHQ0X2xpc3R4YXR0cixcXG4tLVxcbmZzL2V4dDQvaW5vZGUuYz02MjY2PWludCBleHQ0X2dldGF0dHIoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLFxcbi0tXFxuZnMvZXh0NC9pbm9kZS5jLTYzMzQtXFxuZnMvZXh0NC9pbm9kZS5jOjYzMzU6aW50IGV4dDRfZmlsZV9nZXRhdHRyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbmZzL2V4dDQvaW5vZGUuYy02MzM2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBwYXRoICpwYXRoLCBzdHJ1Y3Qga3N0YXQgKnN0YXQsXFxuLS1cXG5mcy9maWxlX2F0dHIuYz04Nj1pbnQgdmZzX2ZpbGVhdHRyX2dldChzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG4tLVxcbmZzL2ZpbGVfYXR0ci5jLTkzLVxcbmZzL2ZpbGVfYXR0ci5jOjk0OlxcdGVycm9yID0gc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKGRlbnRyeSwgZmEpO1xcbmZzL2ZpbGVfYXR0ci5jLTk1LVxcdGlmIChlcnJvcilcXG4tLVxcbmZzL2ZpbGVfYXR0ci5jPTM1Nj1pbnQgaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKmFyZ3ApXFxuLS1cXG5mcy9maWxlX2F0dHIuYy0zNzMtXFxuZnMvZmlsZV9hdHRyLmM6Mzc0OlNZU0NBTExfREVGSU5FNShmaWxlX2dldGF0dHIsIGludCwgZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqLCBmaWxlbmFtZSxcXG5mcy9maWxlX2F0dHIuYy0zNzUtXFx0XFx0c3RydWN0IGZpbGVfYXR0ciBfX3VzZXIgKiwgdWZhdHRyLCBzaXplX3QsIHVzaXplLFxcbi0tXFxuaW5jbHVkZS9hc20tZ2VuZXJpYy9hdWRpdF9yZWFkLmg9MjI9X19OUl9yZWFkbGlua2F0LFxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTIzLSNlbmRpZlxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oOjI0OiNpZmRlZiBfX05SX2ZpbGVfZ2V0YXR0clxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oOjI1Ol9fTlJfZmlsZV9nZXRhdHRyLFxcbmluY2x1ZGUvYXNtLWdlbmVyaWMvYXVkaXRfcmVhZC5oLTI2LSNlbmRpZlxcbi0tXFxuaW5jbHVkZS9saW51eC9sc21faG9va19kZWZzLmg9MTYwPUxTTV9IT09LKGludCwgMCwgaW5vZGVfZmlsZV9zZXRhdHRyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBmaWxlX2thdHRyICpmYSlcXG5pbmNsdWRlL2xpbnV4L2xzbV9ob29rX2RlZnMuaDoxNjE6TFNNX0hPT0soaW50LCAwLCBpbm9kZV9maWxlX2dldGF0dHIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbmluY2x1ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oLTE2Mi1MU01fSE9PSyhpbnQsIDAsIGlub2RlX3NldF9hY2wsIHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oPTQ1Mj1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDUzLVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjQ1NDppbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtNDU1LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBmaWxlX2thdHRyICpmYSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5Lmg9MTA2ND1zdGF0aWMgaW5saW5lIGludCBzZWN1cml0eV9pbm9kZV9maWxlX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oLTEwNjktXFxuaW5jbHVkZS9saW51eC9zZWN1cml0eS5oOjEwNzA6c3RhdGljIGlubGluZSBpbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5pbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgtMTA3MS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3N5c2NhbGxzLmg9Mzc4PWFzbWxpbmthZ2UgbG9uZyBzeXNfZnJlbW92ZXhhdHRyKGludCBmZCwgY29uc3QgY2hhciBfX3VzZXIgKm5hbWUpO1xcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaDozNzk6YXNtbGlua2FnZSBsb25nIHN5c19maWxlX2dldGF0dHIoaW50IGRmZCwgY29uc3QgY2hhciBfX3VzZXIgKmZpbGVuYW1lLFxcbmluY2x1ZGUvbGludXgvc3lzY2FsbHMuaC0zODAtXFx0XFx0XFx0XFx0IHN0cnVjdCBmaWxlX2F0dHIgX191c2VyICphdHRyLCBzaXplX3QgdXNpemUsXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg9ODUzPV9fU1lTQ0FMTChfX05SX29wZW5fdHJlZV9hdHRyLCBzeXNfb3Blbl90cmVlX2F0dHIpXFxuLS1cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgtODU1LS8qIGZzL2lub2RlLmMgKi9cXG5pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmg6ODU2OiNkZWZpbmUgX19OUl9maWxlX2dldGF0dHIgNDY4XFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NzpfX1NZU0NBTEwoX19OUl9maWxlX2dldGF0dHIsIHN5c19maWxlX2dldGF0dHIpXFxuaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1OC0jZGVmaW5lIF9fTlJfZmlsZV9zZXRhdHRyIDQ2OVxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNC0uXFxcXFxcXCJcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo1Oi5USCBmaWxlX2dldGF0dHIgMiAoZGF0ZSkgXFxcIkxpbnV4IG1hbi1wYWdlcyAodW5yZWxlYXNlZClcXFwiXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNi0uU0ggTkFNRVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjc6ZmlsZV9nZXRhdHRyIFxcXFwtIGdldCBmaWxlc3lzdGVtIGlub2RlIGF0dHJpYnV0ZXNcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04LS5TSCBTWU5PUFNJU1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMTQtLlBcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoxNTouQiBsb25nIHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0cixcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0xNi0uQkkgXFxcIiAgICAgICAgICAgICAgIGludCBcXFwiIGRpcmZkIFxcXCIsIGNvbnN0IGNoYXIgKlxcXCIgcGF0aG5hbWUgLFxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjI9Z2xpYmMgcHJvdmlkZXMgbm8gd3JhcHBlciBmb3JcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMzouQlIgZmlsZV9nZXRhdHRyICgpLFxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI0LXVzZVxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mjg9VGhlXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6Mjk6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTMwLXN5c3RlbSBjYWxsIHJldHJpZXZlcyBmaWxlc3lzdGVtIGZpbGUgYXR0cmlidXRlc1xcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9Mzk9QnkgdXNpbmcgYSBwYXRobmFtZSxcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjo0MDouQlIgZmlsZV9nZXRhdHRyICgpXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItNDEtY2FuIHJldHJpZXZlIGZpbGVzeXN0ZW0gZmlsZSBhdHRyaWJ1dGVzXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj04Mz1iZWZvcmUgY2FsbGluZ1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjg0Oi5CUiBmaWxlX2dldGF0dHIgKClcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi04NS10byBlbnN1cmUgdGhhdCBmaWVsZHMgbm90IGZpbGxlZCBpbiBieSBvbGRlciBrZXJuZWxzXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMj0yMjM9VGhlIHByb2dyYW0gYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2ZcXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyMjQ6LkJSIGZpbGVfZ2V0YXR0ciAoKVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTIyNS10byByZXRyaWV2ZSBhbmQgZGlzcGxheSBmaWxlIGF0dHJpYnV0ZXMuXFxuLS1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMi0yMzUtXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI6MjM2OiNpZm5kZWYgU1lTX2ZpbGVfZ2V0YXR0clxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjIzNzojZGVmaW5lIFNZU19maWxlX2dldGF0dHIgNDY3XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjM4LSNlbmRpZlxcbi0tXFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjI9MjQxPW1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSlcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLTI1MC1cXG5tYW4vbWFuMi9maWxlX2dldGF0dHIuMjoyNTE6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgQVRfRkRDV0QsIGFyZ3ZbMV0sIFxcdTAwMjZmYSwgc2l6ZW9mKGZhKSwgMCk7XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjUyLSAgICBpZiAocmV0ID09IFxcXFwtMSkge1xcbm1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yOjI1MzogICAgICAgIHBlcnJvcihcXFwiZmlsZV9nZXRhdHRyXFxcIik7XFxubWFuL21hbjIvZmlsZV9nZXRhdHRyLjItMjU0LSAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpO1xcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI9Nzg9VXNlci1zcGFjZSBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjc5Oi5CIGZpbGVfZ2V0YXR0cigyKVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTgwLXRvIGluaXRpYWxpemVcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yPTI1OD1mbGFnIG9uIGEgZmlsZS5cXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI3MC1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyNzE6I2lmbmRlZiBTWVNfZmlsZV9nZXRhdHRyXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MjcyOiNkZWZpbmUgU1lTX2ZpbGVfZ2V0YXR0ciA0NjdcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0yNzMtI2VuZGlmXFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMj0yODA9bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKVxcbi0tXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjItMjk2LVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yOjI5NzogICAgcmV0ID0gc3lzY2FsbChTWVNfZmlsZV9nZXRhdHRyLCBkZmQsIFxcXCJcXFwiLCBcXHUwMDI2ZmEsIHNpemVvZihmYSksIEFUX0VNUFRZX1BBVEgpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTI5OC0gICAgaWYgKHJldCA9PSBcXFxcLTEpIHtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjoyOTk6ICAgICAgICBwZXJyb3IoXFxcImZpbGVfZ2V0YXR0clxcXCIpO1xcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMwMC0gICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTtcXG4tLVxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMxMi1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMjozMTM6ICAgIHJldCA9IHN5c2NhbGwoU1lTX2ZpbGVfZ2V0YXR0ciwgZGZkLCBcXFwiXFxcIiwgXFx1MDAyNmZhLCBzaXplb2YoZmEpLCBBVF9FTVBUWV9QQVRIKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTQtICAgIGlmIChyZXQgPT0gXFxcXC0xKSB7XFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzE1OiAgICAgICAgcGVycm9yKFxcXCJmaWxlX2dldGF0dHJcXFwiKTtcXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMTYtICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7XFxuLS1cXG5tYW4vbWFuMi9maWxlX3NldGF0dHIuMi0zMjctLlNIIFNFRSBBTFNPXFxubWFuL21hbjIvZmlsZV9zZXRhdHRyLjI6MzI4Oi5CUiBmaWxlX2dldGF0dHIgKDIpLFxcbm1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yLTMyOS0uQlIgaW9jdGwgKDIpLFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0yMj1mb3IgdXNlIHdpdGggdGhlXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToyMzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMjQtYW5kXFxuLS1cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlPTQ2PVRoaXMgZmllbGQgaXMgZmlsbGVkIGluIGJ5XFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZTo0NzouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtNDgtYW5kIGlzIGlnbm9yZWQgYnlcXG4tLVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGU9MTUwPXBhcmFtZXRlciBwYXNzZWQgdG9cXG5tYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlOjE1MTouQlIgZmlsZV9nZXRhdHRyICgyKVxcbm1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUtMTUyLWFuZFxcbi0tXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZT0xODQ9dXBwZXIgbGF5ZXJzLCBzdWNoIGFzIE5GU0QsIHRvIHJldHJpZXZlIGNhc2Ugc2Vuc2l0aXZpdHkgaW5mb3JtYXRpb24uXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODUtLlNIIFNFRSBBTFNPXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZToxODY6LkJSIGZpbGVfZ2V0YXR0ciAoMiksXFxubWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZS0xODctLkJSIGZpbGVfc2V0YXR0ciAoMilcXG4tLVxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxuc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnNjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmM9MjE1Mz1pbnQgc2VjdXJpdHlfaW5vZGVfZmlsZV9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGZpbGVfa2F0dHIgKmZhKVxcbi0tXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTU4LS8qKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE1OTogKiBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoKSAtIGNoZWNrIGlmIHJldHJpZXZpbmcgZnN4YXR0ciBpcyBhbGxvd2VkXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTYwLSAqIEBkZW50cnk6IGZpbGUgdG8gcmV0cmlldmUgZmlsZXN5c3RlbSBleHRlbmRlZCBhdHRyaWJ1dGVzIGZyb21cXG4tLVxcbnNlY3VyaXR5L3NlY3VyaXR5LmMtMjE2Mi0gKlxcbnNlY3VyaXR5L3NlY3VyaXR5LmM6MjE2MzogKiBDYWxsZWQgd2hlbiBmaWxlX2dldGF0dHIoKSBzeXNjYWxsIG9yIEZTX0lPQ19GU0dFVFhBVFRSIGlvY3RsKCkgaXMgY2FsbGVkIG9uXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY0LSAqIGlub2RlXFxuLS1cXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNjctICovXFxuc2VjdXJpdHkvc2VjdXJpdHkuYzoyMTY4OmludCBzZWN1cml0eV9pbm9kZV9maWxlX2dldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuc2VjdXJpdHkvc2VjdXJpdHkuYy0yMTY5LXtcXG5zZWN1cml0eS9zZWN1cml0eS5jOjIxNzA6XFx0cmV0dXJuIGNhbGxfaW50X2hvb2soaW5vZGVfZmlsZV9nZXRhdHRyLCBkZW50cnksIGZhKTtcXG5zZWN1cml0eS9zZWN1cml0eS5jLTIxNzEtfVxcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jPTM1NDQ9c3RhdGljIGludCBzZWxpbnV4X2lub2RlX2ZpbGVfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU0OS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM6MzU1MDpzdGF0aWMgaW50IHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtMzU1MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZmlsZV9rYXR0ciAqZmEpXFxuLS1cXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmM9NzU2MD1zdGF0aWMgc3RydWN0IHNlY3VyaXR5X2hvb2tfbGlzdCBzZWxpbnV4X2hvb2tzW10gX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jLTc2MTktXFx0TFNNX0hPT0tfSU5JVChpbm9kZV9yZW1vdmV4YXR0ciwgc2VsaW51eF9pbm9kZV9yZW1vdmV4YXR0ciksXFxuc2VjdXJpdHkvc2VsaW51eC9ob29rcy5jOjc2MjA6XFx0TFNNX0hPT0tfSU5JVChpbm9kZV9maWxlX2dldGF0dHIsIHNlbGludXhfaW5vZGVfZmlsZV9nZXRhdHRyKSxcXG5zZWN1cml0eS9zZWxpbnV4L2hvb2tzLmMtNzYyMS1cXHRMU01fSE9PS19JTklUKGlub2RlX2ZpbGVfc2V0YXR0ciwgc2VsaW51eF9pbm9kZV9maWxlX3NldGF0dHIpLFxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oPTg1Mz1fX1NZU0NBTEwoX19OUl9vcGVuX3RyZWVfYXR0ciwgc3lzX29wZW5fdHJlZV9hdHRyKVxcbi0tXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oLTg1NS0vKiBmcy9pbm9kZS5jICovXFxudG9vbHMvaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL3VuaXN0ZC5oOjg1NjojZGVmaW5lIF9fTlJfZmlsZV9nZXRhdHRyIDQ2OFxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaDo4NTc6X19TWVNDQUxMKF9fTlJfZmlsZV9nZXRhdHRyLCBzeXNfZmlsZV9nZXRhdHRyKVxcbnRvb2xzL2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaC04NTgtI2RlZmluZSBfX05SX2ZpbGVfc2V0YXR0ciA0NjlcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL2FybS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0ODU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC9hcm0vZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDg2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9taXBzL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfbjY0LnRibC0zODQtNDY3XFx0bjY0XFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50Ymw6Mzg1OjQ2OFxcdG42NFxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvbWlwcy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsX242NC50YmwtMzg2LTQ2OVxcdG42NFxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTU2MC00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9wb3dlcnBjL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjU2MTo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3Bvd2VycGMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTYyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsLTM5Ni00NjdcXHRjb21tb25cXHRvcGVuX3RyZWVfYXR0clxcdFxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC9zMzkwL2VudHJ5L3N5c2NhbGxzL3N5c2NhbGwudGJsOjM5Nzo0NjhcXHRjb21tb25cXHRmaWxlX2dldGF0dHJcXHRcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3MzOTAvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtMzk4LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zaC9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC00NzMtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NDc0OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc2gvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDc1LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC9zcGFyYy9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibC01MTUtNDY3XFx0Y29tbW9uXFx0b3Blbl90cmVlX2F0dHJcXHRcXHRcXHRzeXNfb3Blbl90cmVlX2F0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50Ymw6NTE2OjQ2OFxcdGNvbW1vblxcdGZpbGVfZ2V0YXR0clxcdFxcdFxcdHN5c19maWxlX2dldGF0dHJcXG50b29scy9wZXJmL2FyY2gvc3BhcmMvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNTE3LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwtNDc1LTQ2N1xcdGkzODZcXHRvcGVuX3RyZWVfYXR0clxcdFxcdHN5c19vcGVuX3RyZWVfYXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50Ymw6NDc2OjQ2OFxcdGkzODZcXHRmaWxlX2dldGF0dHJcXHRcXHRzeXNfZmlsZV9nZXRhdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibC00NzctNDY5XFx0aTM4NlxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk0LTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzY0LnRibDozOTU6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF82NC50YmwtMzk2LTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvcGVyZi9hcmNoL3h0ZW5zYS9lbnRyeS9zeXNjYWxscy9zeXNjYWxsLnRibDo0NDE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3BlcmYvYXJjaC94dGVuc2EvZW50cnkvc3lzY2FsbHMvc3lzY2FsbC50YmwtNDQyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG4tLVxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEwLTQ2N1xcdGNvbW1vblxcdG9wZW5fdHJlZV9hdHRyXFx0XFx0XFx0c3lzX29wZW5fdHJlZV9hdHRyXFxudG9vbHMvc2NyaXB0cy9zeXNjYWxsLnRibDo0MTE6NDY4XFx0Y29tbW9uXFx0ZmlsZV9nZXRhdHRyXFx0XFx0XFx0c3lzX2ZpbGVfZ2V0YXR0clxcbnRvb2xzL3NjcmlwdHMvc3lzY2FsbC50YmwtNDEyLTQ2OVxcdGNvbW1vblxcdGZpbGVfc2V0YXR0clxcdFxcdFxcdHN5c19maWxlX3NldGF0dHJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MDguNDk2MjU0NTgxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjQ5MTQwNjA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdpdCBEaWZmIGZvciBGdXp6aW5nIEVsaWdpYmlsaXR5KipcblxuT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhpcyBgSEVBRGAgY29tbWl0J3MgZGlmZi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY2hhbmdlZCBpbiBjb21taXQgYGRhMjljNjJhZWJjYzc2MzY3MTVmYzhkOWQzMDA2NmUyYzc0Yzk4MDJgLiBUaGUgZGlmZiBzaG93cyBhZGRpdGlvbnMgdG8gYG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yYCwgYG1hbi9tYW4yL2ZpbGVfc2V0YXR0ci4yYCwgYW5kIGBtYW4vbWFuMnR5cGUvZmlsZV9hdHRyLjJ0eXBlYC4gUmlnaHQsIHRoYXQncyBpbW1lZGlhdGVseSByaW5naW5nIGJlbGxzIOKAkyB0aGVzZSBhcmUgbWFuIHBhZ2VzLCBkb2N1bWVudGF0aW9uLlxuXG5Ob3csIEkgaGF2ZSB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBkb2Vzbid0IHdhcnJhbnQgZnV6emluZyBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIEkgcmVjYWxsIHRoZSBcIk5FR0FUSVZFIENSSVRFUklBXCIg4oCTIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGZ1enppbmcgKnNob3VsZG4ndCogYmUgZW5hYmxlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG5vbi1rZXJuZWwgY2hhbmdlcywgbGlrZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuXG5cbkJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgYW5kIHRoaXMgcHJvdmlkZWQgZGlmZiwgdGhlc2UgY2hhbmdlcyBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGRvY3VtZW50YXRpb24gY2F0ZWdvcnkuIFRoZSBkaWZmIG9ubHkgdG91Y2hlcyBtYW4gcGFnZXMgKGRvY3VtZW50YXRpb24pIGFuZCB1c2VyLXNwYWNlIGZpbGVzLiBUaGVyZSdzIG5vIG1vZGlmaWNhdGlvbiBvZiBrZXJuZWwgY29kZSwgbm8gY2hhbmdlcyB0byBhbnkgQyBmaWxlcywgaGVhZGVyIGZpbGVzLCBvciBhbnkgYnVpbGQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIHZtbGludXguIFRoYXQncyBhIGtleSBwb2ludC5cblxuVGhlcmVmb3JlLCBgV29ydGhGdXp6aW5nYCBzaG91bGQgYmUgYGZhbHNlYC4gVGhpcyBpcyBwdXJlbHkgZG9jdW1lbnRhdGlvbjsgaXQgZG9lc24ndCBpbXBhY3QgYW55IGV4ZWN1dGFibGUgY29kZSBvciBpbnRyb2R1Y2UgYW55IG5ldyBhdHRhY2sgc3VyZmFjZSBpbiB0aGUga2VybmVsIGl0c2VsZi4gQ29uc2VxdWVudGx5LCBib3RoIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2Agc2hvdWxkIGJlIGVtcHR5IGFycmF5cyDigJMgdGhlcmUncyBub3RoaW5nIHRvIGZvY3VzIG9uIG9yIGVuYWJsZSBoZXJlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLlxuXG5JJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJ20gZ29pbmcgdG8gc2V0IHRoZSByZXN1bHRzIGFzOlxuXG4tIGBFbmFibGVDb25maWdzYDogYFtdYFxuLSBgRm9jdXNTeW1ib2xzYDogYFtdYFxuLSBgUmVhc29uaW5nYDogXCJUaGUgcGF0Y2ggb25seSBhZGRzIGRvY3VtZW50YXRpb24gLyBtYW4gcGFnZXMgKG1hbi9tYW4yL2ZpbGVfZ2V0YXR0ci4yLCBtYW4vbWFuMi9maWxlX3NldGF0dHIuMiwgbWFuL21hbjJ0eXBlL2ZpbGVfYXR0ci4ydHlwZSkgYW5kIGRvZXMgbm90IG1vZGlmeSBhbnkgZXhlY3V0YWJsZSBrZXJuZWwgY29kZS5cIlxuLSBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuXG5MZXQncyBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjQ0NSwiT3V0cHV0VG9rZW5zIjoxMDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTI6NTY6MTQuOTg3NjYzNDA5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgbWFuIHBhZ2VzIChtYW4vbWFuMi9maWxlX2dldGF0dHIuMiwgbWFuL21hbjIvZmlsZV9zZXRhdHRyLjIsIG1hbi9tYW4ydHlwZS9maWxlX2F0dHIuMnR5cGUpIGZvciB0aGUgZmlsZV9nZXRhdHRyIGFuZCBmaWxlX3NldGF0dHIgc3lzY2FsbHMgYW5kIHN0cnVjdCBmaWxlX2F0dHIuIEl0IGRvZXMgbm90IG1vZGlmeSBhbnkga2VybmVsIHNvdXJjZSBjb2RlIG9yIGV4ZWN1dGFibGUgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxMjo1NjoxNC45ODc2ODc1NjlaIiwiU2VxIjo3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8mh9g[1] Phase: Running StartedAt: 2026-09-10 12:56:25 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8mh9g[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 12:56:25 +0000 UTC FinishedAt: 2026-09-10 12:56:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}