Name: series-workflowsdw2g Phase: Failed StartedAt: 2026-08-24 13:36:00 +0000 UTC FinishedAt: 2026-08-24 14:14:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdw2g[0] Phase: Succeeded StartedAt: 2026-08-24 13:36:00 +0000 UTC FinishedAt: 2026-08-24 14:14:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdw2g[0].run-triage Phase: Succeeded StartedAt: 2026-08-24 13:36:00 +0000 UTC FinishedAt: 2026-08-24 14:14:35 +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+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmODk3M2ZkYWNmMTBiNDNlYWQ2MzQ1OWRkNTE1YjRjNDdkMTU5ZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBiNDE0Mjc0Njc3N2VlLi5iZWM2ZmVhMGZkYjQ3IDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMTExNiw3ICYjNDM7MTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbiYjNDM7XHRXUklURV9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcsXG4mIzQzO1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfU1lTRlNcbkBAIC0zMzE4LDcgJiM0MzszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG4gXHRcdC8qXG4gXHRcdCAqIG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcbiBcdFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cdTAwM2VrcGZuIGlzIHZpc2libGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVmODk3M2ZkYWNmMTBiNDNlYWQ2MzQ1OWRkNTE1YjRjNDdkMTU5ZTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDQKLS0tIGEvbW0va3NtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va3NtLmMKQEAgLTExMTYsNyAmIzQzOzExMTYsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCQkJCSBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSkKIHsKIAlWTV9XQVJOX09OX0ZPTElPKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBQYWdlQW5vbkV4Y2x1c2l2ZSgmYW1wO2ZvbGlvLSZndDtwYWdlKSwgZm9saW8pOwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTRlMKQEAgLTMzMTgsNyAmIzQzOzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJc3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7CiAJaWYgKHN0YWJsZV9ub2RlKSB7CiAJCVZNX0JVR19PTl9GT0xJTyhzdGFibGVfbm9kZS0mZ3Q7a3BmbiAhPSBmb2xpb19wZm4oZm9saW8pLCBmb2xpbyk7Ci0JCXN0YWJsZV9ub2RlLSZndDtrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtJmd0O2twZm4sIGZvbGlvX3BmbihuZXdmb2xpbykpOwogCQkvKgogCQkgKiBuZXdmb2xpby0mZ3Q7bWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKQogCQkgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLSZndDtrcGZuIGlzIHZpc2libGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLU00gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBtbS9rc20uY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGFkZGluZyBgV1JJVEVfT05DRWAgdG8gdHdvIGxpbmVzOiBvbmUgaW4gYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGFub3RoZXIgaW4gYGZvbGlvX21pZ3JhdGVfa3NtYC4gQmFzaWNhbGx5LCBwcmV2ZW50aW5nIGNvbXBpbGVyIG9wdGltaXphdGlvbnMgb3IgZGF0YSByYWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGp1c3QgYSBtZW1vcnkgYmFycmllciwgc28gaXQgc2hvdWxkbiYjMzk7dCBiZSB3b3J0aCBmdXp6aW5nLCByaWdodD8gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBhbHRlciB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB0aGUgY29kZS4KCkJ1dCB3YWl0LCBkb2VzIHRoaXMgcXVhbGlmeSBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBBZGRpbmcgYFdSSVRFX09OQ0VgIGlzIHVzdWFsbHkgYSBkYXRhIHJhY2UgZml4LiBJZiBpdCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uLCBtYXliZSBpdCAqaXMqIHdvcnRoIGEgbG9vay4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlcywgYnV0IGl0JiMzOTtzIGZpeGluZyBhIGJ1Zy4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIC4uLiBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsKCkFkZGluZyBgV1JJVEVfT05DRWAgKmRvZXMqIGNoYW5nZSBob3cgdGhlIGNvbXBpbGVyIGhhbmRsZXMgbWVtb3J5IGFjY2Vzc2VzLiBJdCBwcmV2ZW50cyB0ZWFyaW5nIGFuZCByZW9yZGVyaW5nLiBIb3dldmVyLCBpdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gU28sIGl0IGZpeGVzIGEgZGF0YSByYWNlLi4uIHNvIGlzIGl0IHdvcnRoIGZ1enppbmc/CgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggYWdhaW4gdG8gYmUgc3VyZToKCmBgYGMKLQlmb2xpby0mZ3Q7bWFwcGluZyA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pOwomIzQzOwlXUklURV9PTkNFKGZvbGlvLSZndDttYXBwaW5nLAomIzQzOwkJICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpOwpgYGAKCmBgYGMKLQkJc3RhYmxlX25vZGUtJmd0O2twZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pOwomIzQzOwkJV1JJVEVfT05DRShzdGFibGVfbm9kZS0mZ3Q7a3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7CmBgYAoKT2theSwgaXQmIzM5O3MgYSBkYXRhIHJhY2UgZml4IGZvciBLQ1NBTi4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIHRyaWNreS4gSWYgd2UgZnV6eiB0aGlzLCB3ZSYjMzk7cmUgcHJvYmFibHkgbm90IGdvaW5nIHRvIGZpbmQgKm5ldyogYnVncywgYnV0IHdlIG1pZ2h0IHByZXZlbnQgdGhlIGRhdGEgcmFjZSBmcm9tIG1hbmlmZXN0aW5nIGR1cmluZyBmdXp6aW5nLiBCdXQgSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPXRydWUsIGp1c3QgaW4gY2FzZSwgYnV0IG1heWJlIGl0JiMzOTtzIGZhbHNlPwoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBqdXN0IGBXUklURV9PTkNFYCwgaXQmIzM5O3MgYSB2ZXJ5IG1pbm9yIGNoYW5nZS4gTm93IGlmIEkgZG8gbWFyayBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBnaXZlIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFzIEZvY3VzU3ltYm9scy4gV2FpdCwgaXMgYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgc3RhdGljIGlubGluZT8gTGV0JiMzOTtzIGNoZWNrOgoKYGBgYwpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCgkJCQkJIHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKQpgYGAKCll1cCwgaXQmIzM5O3MgYHN0YXRpYyBpbmxpbmVgLiBTbyBubyBuZWVkIHRvIGxpc3QgaXQuIEdvb2QsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGxvb2sgZm9yIGBmb2xpb19taWdyYXRlX2tzbWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBmb2xpb19taWdyYXRlX2tzbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2tzbS5oPTk3PXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yyk7XG5pbmNsdWRlL2xpbnV4L2tzbS5oOjk4OnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbyk7XG5pbmNsdWRlL2xpbnV4L2tzbS5oLTk5LXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9rc20uaD0xNTM9c3RhdGljIGlubGluZSB2b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTE1Ny1cbmluY2x1ZGUvbGludXgva3NtLmg6MTU4OnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKm9sZClcbmluY2x1ZGUvbGludXgva3NtLmgtMTU5LXtcbi0tXG5tbS9rc20uYz0zMjcxPXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0va3NtLmMtMzMxMC0jaWZkZWYgQ09ORklHX01JR1JBVElPTlxubW0va3NtLmM6MzMxMTp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5tbS9rc20uYy0zMzEyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTEzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKktTTSBNaWdyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBmb2xpb19taWdyYXRlX2tzbWAuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgaXRzIHNvdXJjZSBmaWxlLiBCdXQgdGhlbiwgaXQmIzM5O3MgY2xlYXIgSSBuZWVkIHRvIGVuc3VyZSBgQ09ORklHX0tTTWAgaXMgZW5hYmxlZC4gQSBxdWljayBjaGVjayBvZiB0aGUgY29kZSByZXZlYWxzIHRoYXQgYGZvbGlvX21pZ3JhdGVfa3NtYCBpcyBhY3R1YWxseSBndWFyZGVkIGJ5IGFuIGAjaWZkZWYgQ09ORklHX01JR1JBVElPTmAgYmxvY2sgd2l0aGluIGBtbS9rc20uY2AuIFNvLCBJIHJlYWxseSBuZWVkICpib3RoKiBgQ09ORklHX0tTTWAgYW5kIGBDT05GSUdfTUlHUkFUSU9OYCB0byBiZSBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uIHRvIGV2ZW4gYmUgY29tcGlsZWQuIFRpbWUgdG8gcHVsbCB1cCBgbW0vS2NvbmZpZ2AgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIG9wdGlvbnMgYXJlIGRlZmluZWQgYW5kIGhvdyB0aGV5IHJlbGF0ZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgb24gdGhlc2UgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmV2ZWFsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtTTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTcyMj1jb25maWcgTU1VX05PVElGSUVSXG4tLVxubW0vS2NvbmZpZy03MjUtXG5tbS9LY29uZmlnOjcyNjpjb25maWcgS1NNXG5tbS9LY29uZmlnLTcyNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIEtTTSBmb3IgcGFnZSBtZXJnaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgYE1JR1JBVElPTmAgTW9kdWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgTUlHUkFUSU9OYCBtb2R1bGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyBjb25zaWRlcmluZyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQ6CgoqICAgKipEYXRhIFN0cnVjdHVyZXM6KiogV2hhdCBraW5kIG9mIGRhdGEgc3RydWN0dXJlcyBhcmUgd2UgdXNpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggZmxhdCBmaWxlcywgcmVsYXRpb25hbCBkYXRhYmFzZXMsIE5vU1FMIHN0b3Jlcywgb3Igc29tZXRoaW5nIG1vcmUgZXhvdGljPyBUaGUgc3RydWN0dXJlIG9mIHRoZSBzb3VyY2UgYW5kIHRhcmdldCBkYXRhIGlzIHBhcmFtb3VudCBoZXJlLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGxpa2VseSBzY2hlbWEgaW1wbGljYXRpb25zLgoqICAgKipUcmFuc2Zvcm1hdGlvbiBMb2dpYzoqKiBIb3cgY29tcGxleCBpcyB0aGUgdHJhbnNmb3JtYXRpb24gbG9naWM/IElzIGl0IHN0cmFpZ2h0Zm9yd2FyZCBtYXBwaW5nLCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGNvbXBsZXggYnVzaW5lc3MgcnVsZXMsIGRhdGEgY2xlYW5zaW5nLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkYXRhIGVucmljaG1lbnQ/IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgc29waGlzdGljYXRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gQXJlIHdlIHVzaW5nIGEgdG9vbCBmb3IgaXQ/CiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQmIzM5O3MgdGhlIGVycm9yIGhhbmRsaW5nIGxpa2U/IEhvdyByb2J1c3QgaXMgdGhlIHN5c3RlbSB0byBoYW5kbGUgZGF0YSBpbmNvbnNpc3RlbmNpZXMsIHNjaGVtYSBtaXNtYXRjaGVzLCBhbmQgbmV0d29yayBpbnRlcnJ1cHRpb25zPyBJIGhvcGUgaXQmIzM5O3Mgd2VsbC1kZXNpZ25lZCB0byBtYW5hZ2UgYmFkIGRhdGEuIFRoaXMgaXMgdHlwaWNhbGx5IG15IG1ham9yIHdvcnJ5LgoqICAgKipQZXJmb3JtYW5jZToqKiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcGVyZm9ybWFuY2UuIEFyZSB3ZSBtaWdyYXRpbmcgaW4gYmF0Y2hlcz8gU3RyZWFtaW5nPyBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgZGF0YSB2b2x1bWVzPyBXaGF0IGFyZSB0aGUgY3JpdGljYWwgcGVyZm9ybWFuY2UgbWV0cmljcyAoZS5nLiwgbGF0ZW5jeSwgdGhyb3VnaHB1dCwgcmVzb3VyY2UgY29uc3VtcHRpb24pPyBBbnkgcG9zc2liaWxpdHkgb2YgbWVtb3J5IGxlYWtzPwoqICAgKipJZGVtcG90ZW5jeToqKiBJcyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaWRlbXBvdGVudD8gQ2FuIGl0IGJlIHNhZmVseSByZXN0YXJ0ZWQgaWYgaXQgZmFpbHMgcGFydHdheSB0aHJvdWdoPyBQcm9wZXIgaGFuZGxpbmcgb2YgdGhpcyBpcyBjcnVjaWFsIHRvIHRoZSBkZXNpZ24uCiogICAqKlRlc3RpbmcgYW5kIFZhbGlkYXRpb246KiogSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgdW5pdCB0ZXN0aW5nIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGFyZS4gQXJlIHdlIGdvaW5nIHRvIHNlZSBnb29kIGNvdmVyYWdlLCBvciBhcmUgd2UgZ29pbmcgdG8gc2VlIGEgbG90IG9mIGRlYnVnZ2luZyBkdXJpbmcgcHJvZHVjdGlvbj8gSG93IGRvIHdlIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgYW5kIGFmdGVyIHRoZSBtaWdyYXRpb24/IEkgd2FudCB0byBmb2N1cyBvbiBkYXRhIHZhbGlkYXRpb24gLSBJIGRvbiYjMzk7dCB3YW50IHRvIGxvc2UgYW55dGhpbmcuCiogICAqKlNlY3VyaXR5OioqIFRoaXMgaXMgaW1wb3J0YW50LCB0b28uIFdoYXQgYXJlIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnM/IEhvdyBpcyB0aGUgZGF0YSBiZWluZyBzZWN1cmVkIGR1cmluZyB0cmFuc2l0IGFuZCBhdCByZXN0PyBIb3cgZG8gd2UgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uPwoKT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmYWN0b3JzIHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoaXMgbWlncmF0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUdSQVRJT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02NzE9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02ODEtXG5tbS9LY29uZmlnOjY4Mjpjb25maWcgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY4My1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODczCgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogOTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgYSBzaW1wbGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLCB3aGljaCBlc3NlbnRpYWxseSBqdXN0IGZpeGVzIGEgZGF0YSByYWNlIGJ5IHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZy4gIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCAqZG9lc24mIzM5O3QqIGNoYW5nZSB0aGUgcHJvZ3JhbSBmbG93IGl0c2VsZiwgYW5kIHNvIEkgd2FzIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkkgZG91YmxlLWNoZWNrZWQgdGhlIGV4cGxpY2l0IGNyaXRlcmlhIHByb3ZpZGVkOiAgbW9kaWZpY2F0aW9ucyB0byBkb2NzLCBLY29uZmlnLCBjb21tZW50cz8gTm9wZS4gRGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZz8gTm9wZS4gQ2hhbmdlcyB0byBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgKmRvbiYjMzk7dCogYWx0ZXIgZXhlY3V0aW9uPyBBaGEhIFdoaWxlIGBXUklURV9PTkNFYCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBjb21waWxlciwgaXQmIzM5O3MgbG9naWNhbGx5IHRoZSBzYW1lLiBTbyB0aGF0JiMzOTtzIHRoZSBrZXkuICBJdCBmaXRzIHRoZSBjcml0ZXJpYSwgc2luY2UgaXQmIzM5O3MgYSBtYWNybyBhbmQgZG9lc24mIzM5O3QgY2hhbmdlIHdoYXQgdGhlIGNvZGUgKmRvZXMqLCBqdXN0IGhvdyB0aGUgY29tcGlsZXIgKnNlZXMqIGl0LiBJIHF1aWNrbHkgcmVtZW1iZXJlZCwgZGF0YSByYWNlIGZpeGVzIGFyZSBnZW5lcmFsbHkgbm90IGNvbnNpZGVyZWQgbmV3IGZlYXR1cmVzIHRvIGZ1enosIHRoZXkmIzM5O3JlIGJ1Z2ZpeGVzLgoKSW5pdGlhbGx5LCB0aGUgcG9zc2liaWxpdHkgb2YgYGZvbGlvX21pZ3JhdGVfa3NtYCwgYEtTTWAgYW5kIGBNSUdSQVRJT05gIGdvdCBtZSB0aGlua2luZyBhYm91dCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzLiAgSSBhbG1vc3QgdG9vayB0aGUgJiMzNDtiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5JiMzNDsgYXBwcm9hY2ggYW5kIHNldCBpdCB0byBgdHJ1ZWAgZ2l2ZW4gdGhhdCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLgoKVGhlbiBJIHBhdXNlZCB0byByZWFsbHkgZm9jdXMgb24gdGhlIGtleSBwYXJ0IG9mIHRoZSBwcm9tcHQgdGhhdCBpbnN0cnVjdHMgd2hlbiBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0IGV4cGxpY2l0bHkgbWVudGlvbnMgJiMzNDtjaGFuZ2VzIHRvIC4uLiBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuIEFuZCBgV1JJVEVfT05DRWAgKmlzKiBhIG1hY3JvIHRoYXQgKmRvZXNuJiMzOTt0KiBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIG9ubHkgdGhlIG1lbW9yeSBvcmRlcmluZy4gIEkgZG91YmxlIGNoZWNrZWQgdGhlIHBhdGNoIGFnYWluLgoKYGBgYwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CmBgYAoKWWVwLCBpdCYjMzk7cyBqdXN0IGBXUklURV9PTkNFYC4KCkZpbmFsbHksIEkgY29uc2lkZXJlZCB0aGF0IGBXUklURV9PTkNFYCBsaWtlbHkgYWRkcmVzc2VkIGEgZGF0YSByYWNlIHRoYXQgbWF5YmUgS0NTQU4gb3Igb3RoZXIgdG9vbHMgaGFkIGFscmVhZHkgaWRlbnRpZmllZC4gSWYgaXQmIzM5O3MgYWxyZWFkeSBmaXhlZCwgZnV6emluZyB3b24mIzM5O3QgZmluZCB0aGUgc2FtZSBidWcuCgpTbywgKkkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgd2l0aCB0aGUgcmVhc29uaW5nIHRoYXQ6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRvIGZ1enouJiMzNDsqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA3LjkyMzUzNTI3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjE2ODg2OTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA3LjkyMzU0NDYwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMDMxMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWY4OTczZmRhY2YxMGI0M2VhZDYzNDU5ZGQ1MTViNGM0N2QxNTllMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXFxuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxcbiB7XFxuIFxcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBQYWdlQW5vbkV4Y2x1c2l2ZShcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UpLCBmb2xpbyk7XFxuLVxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7XFxuK1xcdFdSSVRFX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcsXFxuK1xcdFxcdCAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19TWVNGU1xcbkBAIC0zMzE4LDcgKzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0YWJsZV9ub2RlID0gZm9saW9fc3RhYmxlX25vZGUoZm9saW8pO1xcbiBcXHRpZiAoc3RhYmxlX25vZGUpIHtcXG4gXFx0XFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuICE9IGZvbGlvX3Bmbihmb2xpbyksIGZvbGlvKTtcXG4tXFx0XFx0c3RhYmxlX25vZGUtXFx1MDAzZWtwZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pO1xcbitcXHRcXHRXUklURV9PTkNFKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogbmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcXG4gXFx0XFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cXHUwMDNla3BmbiBpcyB2aXNpYmxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA4LjYzNjU0ODEzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzNTQ1NTgzODg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWY4OTczZmRhY2YxMGI0M2VhZDYzNDU5ZGQ1MTViNGM0N2QxNTllMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE0OjA3OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcbi0tLSBhL21tL2tzbS5jXG4rKysgYi9tbS9rc20uY1xuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX1NZU0ZTXG5AQCAtMzMxOCw3ICszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbitcdFx0V1JJVEVfT05DRShzdGFibGVfbm9kZS1cdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcbiBcdFx0LypcbiBcdFx0ICogbmV3Zm9saW8tXHUwMDNlbWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKVxuIFx0XHQgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gaXMgdmlzaWJsZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTQ6MDc6MDguNjM2NTUwNDk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MDgzMzQ0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG1tL2tzbS5jYC4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCBhZGRpbmcgYFdSSVRFX09OQ0VgIHRvIHR3byBsaW5lczogb25lIGluIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBhbm90aGVyIGluIGBmb2xpb19taWdyYXRlX2tzbWAuIEJhc2ljYWxseSwgcHJldmVudGluZyBjb21waWxlciBvcHRpbWl6YXRpb25zIG9yIGRhdGEgcmFjZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBqdXN0IGEgbWVtb3J5IGJhcnJpZXIsIHNvIGl0IHNob3VsZG4ndCBiZSB3b3J0aCBmdXp6aW5nLCByaWdodD8gSXQgZG9lc24ndCBzZWVtIHRvIGFsdGVyIHRoZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBjb2RlLlxuXG5CdXQgd2FpdCwgZG9lcyB0aGlzIHF1YWxpZnkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gQWRkaW5nIGBXUklURV9PTkNFYCBpcyB1c3VhbGx5IGEgZGF0YSByYWNlIGZpeC4gSWYgaXQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiwgbWF5YmUgaXQgKmlzKiB3b3J0aCBhIGxvb2suIEl0J3Mgbm90IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlcywgYnV0IGl0J3MgZml4aW5nIGEgYnVnLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIlxuXG5BZGRpbmcgYFdSSVRFX09OQ0VgICpkb2VzKiBjaGFuZ2UgaG93IHRoZSBjb21waWxlciBoYW5kbGVzIG1lbW9yeSBhY2Nlc3Nlcy4gSXQgcHJldmVudHMgdGVhcmluZyBhbmQgcmVvcmRlcmluZy4gSG93ZXZlciwgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gU28sIGl0IGZpeGVzIGEgZGF0YSByYWNlLi4uIHNvIGlzIGl0IHdvcnRoIGZ1enppbmc/XG5cbkxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGFnYWluIHRvIGJlIHN1cmU6XG5cbmBgYGNcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuYGBgXG5cbmBgYGNcbi1cdFx0c3RhYmxlX25vZGUtXHUwMDNla3BmbiA9IGZvbGlvX3BmbihuZXdmb2xpbyk7XG4rXHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG5gYGBcblxuT2theSwgaXQncyBhIGRhdGEgcmFjZSBmaXggZm9yIEtDU0FOLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgdHJpY2t5LiBJZiB3ZSBmdXp6IHRoaXMsIHdlJ3JlIHByb2JhYmx5IG5vdCBnb2luZyB0byBmaW5kICpuZXcqIGJ1Z3MsIGJ1dCB3ZSBtaWdodCBwcmV2ZW50IHRoZSBkYXRhIHJhY2UgZnJvbSBtYW5pZmVzdGluZyBkdXJpbmcgZnV6emluZy4gQnV0IEknbSBnb2luZyB0byBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPXRydWUsIGp1c3QgaW4gY2FzZSwgYnV0IG1heWJlIGl0J3MgZmFsc2U/XG5cbkdpdmVuIHRoYXQgaXQncyBqdXN0IGBXUklURV9PTkNFYCwgaXQncyBhIHZlcnkgbWlub3IgY2hhbmdlLiBOb3cgaWYgSSBkbyBtYXJrIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGdpdmUgYGZvbGlvX21pZ3JhdGVfa3NtYCBhbmQgYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYXMgRm9jdXNTeW1ib2xzLiBXYWl0LCBpcyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCBzdGF0aWMgaW5saW5lPyBMZXQncyBjaGVjazpcblxuYGBgY1xuc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9zdGFibGVfbm9kZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuXHRcdFx0XHRcdCBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSlcbmBgYFxuXG5ZdXAsIGl0J3MgYHN0YXRpYyBpbmxpbmVgLiBTbyBubyBuZWVkIHRvIGxpc3QgaXQuIEdvb2QsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQncyBsb29rIGZvciBgZm9saW9fbWlncmF0ZV9rc21gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTQ6MDc6MjMuMDQ0ODg3NjYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjEyNTU4OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBmb2xpb19taWdyYXRlX2tzbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2tzbS5oPTk3PXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yyk7XFxuaW5jbHVkZS9saW51eC9rc20uaDo5ODp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgva3NtLmgtOTktdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva3NtLmg9MTUzPXN0YXRpYyBpbmxpbmUgdm9pZCBybWFwX3dhbGtfa3NtKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTE1Ny1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oOjE1ODpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpvbGQpXFxuaW5jbHVkZS9saW51eC9rc20uaC0xNTkte1xcbi0tXFxubW0va3NtLmM9MzI3MT12b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0va3NtLmMtMzMxMC0jaWZkZWYgQ09ORklHX01JR1JBVElPTlxcbm1tL2tzbS5jOjMzMTE6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2tzbS5jLTMzMTIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDowNzoyNS41NjYxNDc3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTkyNTk1NDk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKktTTSBNaWdyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgZm9saW9fbWlncmF0ZV9rc21gLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBpdHMgc291cmNlIGZpbGUuIEJ1dCB0aGVuLCBpdCdzIGNsZWFyIEkgbmVlZCB0byBlbnN1cmUgYENPTkZJR19LU01gIGlzIGVuYWJsZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgcmV2ZWFscyB0aGF0IGBmb2xpb19taWdyYXRlX2tzbWAgaXMgYWN0dWFsbHkgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19NSUdSQVRJT05gIGJsb2NrIHdpdGhpbiBgbW0va3NtLmNgLiBTbywgSSByZWFsbHkgbmVlZCAqYm90aCogYENPTkZJR19LU01gIGFuZCBgQ09ORklHX01JR1JBVElPTmAgdG8gYmUgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbiB0byBldmVuIGJlIGNvbXBpbGVkLiBUaW1lIHRvIHB1bGwgdXAgYG1tL0tjb25maWdgIHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgb24gdGhlc2UgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmV2ZWFsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDoxMToyMS40OTIxMDc0NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1MzMxNTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1NNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NzIyPWNvbmZpZyBNTVVfTk9USUZJRVJcXG4tLVxcbm1tL0tjb25maWctNzI1LVxcbm1tL0tjb25maWc6NzI2OmNvbmZpZyBLU01cXG5tbS9LY29uZmlnLTcyNy1cXHRib29sIFxcXCJFbmFibGUgS1NNIGZvciBwYWdlIG1lcmdpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjExOjI0LjA0NTQyODk0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5Mzc2MTQ5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGBNSUdSQVRJT05gIE1vZHVsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIExldCdzIHN0YXJ0IHdpdGggdGhlIGBNSUdSQVRJT05gIG1vZHVsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJ20gdGhpbmtpbmcgYWJvdXQ6XG5cbiogICAqKkRhdGEgU3RydWN0dXJlczoqKiBXaGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB3ZSB1c2luZz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBmbGF0IGZpbGVzLCByZWxhdGlvbmFsIGRhdGFiYXNlcywgTm9TUUwgc3RvcmVzLCBvciBzb21ldGhpbmcgbW9yZSBleG90aWM/IFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGRhdGEgaXMgcGFyYW1vdW50IGhlcmUuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBsaWtlbHkgc2NoZW1hIGltcGxpY2F0aW9ucy5cbiogICAqKlRyYW5zZm9ybWF0aW9uIExvZ2ljOioqIEhvdyBjb21wbGV4IGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBsb2dpYz8gSXMgaXQgc3RyYWlnaHRmb3J3YXJkIG1hcHBpbmcsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggY29tcGxleCBidXNpbmVzcyBydWxlcywgZGF0YSBjbGVhbnNpbmcsIGFuZCBwb3RlbnRpYWxseSBldmVuIGRhdGEgZW5yaWNobWVudD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBzb3BoaXN0aWNhdGlvbiBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBBcmUgd2UgdXNpbmcgYSB0b29sIGZvciBpdD9cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQncyB0aGUgZXJyb3IgaGFuZGxpbmcgbGlrZT8gSG93IHJvYnVzdCBpcyB0aGUgc3lzdGVtIHRvIGhhbmRsZSBkYXRhIGluY29uc2lzdGVuY2llcywgc2NoZW1hIG1pc21hdGNoZXMsIGFuZCBuZXR3b3JrIGludGVycnVwdGlvbnM/IEkgaG9wZSBpdCdzIHdlbGwtZGVzaWduZWQgdG8gbWFuYWdlIGJhZCBkYXRhLiBUaGlzIGlzIHR5cGljYWxseSBteSBtYWpvciB3b3JyeS5cbiogICAqKlBlcmZvcm1hbmNlOioqIEkgbmVlZCB0byB0aGluayBhYm91dCBwZXJmb3JtYW5jZS4gQXJlIHdlIG1pZ3JhdGluZyBpbiBiYXRjaGVzPyBTdHJlYW1pbmc/IFdoYXQgYXJlIHRoZSBleHBlY3RlZCBkYXRhIHZvbHVtZXM/IFdoYXQgYXJlIHRoZSBjcml0aWNhbCBwZXJmb3JtYW5jZSBtZXRyaWNzIChlLmcuLCBsYXRlbmN5LCB0aHJvdWdocHV0LCByZXNvdXJjZSBjb25zdW1wdGlvbik/IEFueSBwb3NzaWJpbGl0eSBvZiBtZW1vcnkgbGVha3M/XG4qICAgKipJZGVtcG90ZW5jeToqKiBJcyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaWRlbXBvdGVudD8gQ2FuIGl0IGJlIHNhZmVseSByZXN0YXJ0ZWQgaWYgaXQgZmFpbHMgcGFydHdheSB0aHJvdWdoPyBQcm9wZXIgaGFuZGxpbmcgb2YgdGhpcyBpcyBjcnVjaWFsIHRvIHRoZSBkZXNpZ24uXG4qICAgKipUZXN0aW5nIGFuZCBWYWxpZGF0aW9uOioqIEkgd2FudCB0byBjaGVjayBob3cgdGhlIHVuaXQgdGVzdGluZyBhbmQgaW50ZWdyYXRpb24gdGVzdGluZyBhcmUuIEFyZSB3ZSBnb2luZyB0byBzZWUgZ29vZCBjb3ZlcmFnZSwgb3IgYXJlIHdlIGdvaW5nIHRvIHNlZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgZHVyaW5nIHByb2R1Y3Rpb24/IEhvdyBkbyB3ZSBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGFuZCBhZnRlciB0aGUgbWlncmF0aW9uPyBJIHdhbnQgdG8gZm9jdXMgb24gZGF0YSB2YWxpZGF0aW9uIC0gSSBkb24ndCB3YW50IHRvIGxvc2UgYW55dGhpbmcuXG4qICAgKipTZWN1cml0eToqKiBUaGlzIGlzIGltcG9ydGFudCwgdG9vLiBXaGF0IGFyZSB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zPyBIb3cgaXMgdGhlIGRhdGEgYmVpbmcgc2VjdXJlZCBkdXJpbmcgdHJhbnNpdCBhbmQgYXQgcmVzdD8gSG93IGRvIHdlIGhhbmRsZSBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbj9cblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmYWN0b3JzIHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoaXMgbWlncmF0aW9uLiBMZXQncyBnZXQgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjExOjI4Ljk4MzA0NjcyOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk4OTM3NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02NzE9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY4MS1cXG5tbS9LY29uZmlnOjY4Mjpjb25maWcgTUlHUkFUSU9OXFxubW0vS2NvbmZpZy02ODMtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDoxMTozMS4zODE5ODc3ODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzI3MTAzMzg1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgYSBzaW1wbGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLCB3aGljaCBlc3NlbnRpYWxseSBqdXN0IGZpeGVzIGEgZGF0YSByYWNlIGJ5IHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZy4gIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCAqZG9lc24ndCogY2hhbmdlIHRoZSBwcm9ncmFtIGZsb3cgaXRzZWxmLCBhbmQgc28gSSB3YXMgbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRoZSBleHBsaWNpdCBjcml0ZXJpYSBwcm92aWRlZDogIG1vZGlmaWNhdGlvbnMgdG8gZG9jcywgS2NvbmZpZywgY29tbWVudHM/IE5vcGUuIERlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmc/IE5vcGUuIENoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24ndCogYWx0ZXIgZXhlY3V0aW9uPyBBaGEhIFdoaWxlIGBXUklURV9PTkNFYCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBjb21waWxlciwgaXQncyBsb2dpY2FsbHkgdGhlIHNhbWUuIFNvIHRoYXQncyB0aGUga2V5LiAgSXQgZml0cyB0aGUgY3JpdGVyaWEsIHNpbmNlIGl0J3MgYSBtYWNybyBhbmQgZG9lc24ndCBjaGFuZ2Ugd2hhdCB0aGUgY29kZSAqZG9lcyosIGp1c3QgaG93IHRoZSBjb21waWxlciAqc2VlcyogaXQuIEkgcXVpY2tseSByZW1lbWJlcmVkLCBkYXRhIHJhY2UgZml4ZXMgYXJlIGdlbmVyYWxseSBub3QgY29uc2lkZXJlZCBuZXcgZmVhdHVyZXMgdG8gZnV6eiwgdGhleSdyZSBidWdmaXhlcy5cblxuSW5pdGlhbGx5LCB0aGUgcG9zc2liaWxpdHkgb2YgYGZvbGlvX21pZ3JhdGVfa3NtYCwgYEtTTWAgYW5kIGBNSUdSQVRJT05gIGdvdCBtZSB0aGlua2luZyBhYm91dCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzLiAgSSBhbG1vc3QgdG9vayB0aGUgXCJiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5XCIgYXBwcm9hY2ggYW5kIHNldCBpdCB0byBgdHJ1ZWAgZ2l2ZW4gdGhhdCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLlxuXG5UaGVuIEkgcGF1c2VkIHRvIHJlYWxseSBmb2N1cyBvbiB0aGUga2V5IHBhcnQgb2YgdGhlIHByb21wdCB0aGF0IGluc3RydWN0cyB3aGVuIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgZXhwbGljaXRseSBtZW50aW9ucyBcImNoYW5nZXMgdG8gLi4uIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIi4gQW5kIGBXUklURV9PTkNFYCAqaXMqIGEgbWFjcm8gdGhhdCAqZG9lc24ndCogYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBvbmx5IHRoZSBtZW1vcnkgb3JkZXJpbmcuICBJIGRvdWJsZSBjaGVja2VkIHRoZSBwYXRjaCBhZ2Fpbi5cblxuYGBgY1xuLVx0Zm9saW8tXHUwMDNlbWFwcGluZyA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pO1xuK1x0V1JJVEVfT05DRShmb2xpby1cdTAwM2VtYXBwaW5nLFxuK1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG5gYGBcblxuWWVwLCBpdCdzIGp1c3QgYFdSSVRFX09OQ0VgLlxuXG5GaW5hbGx5LCBJIGNvbnNpZGVyZWQgdGhhdCBgV1JJVEVfT05DRWAgbGlrZWx5IGFkZHJlc3NlZCBhIGRhdGEgcmFjZSB0aGF0IG1heWJlIEtDU0FOIG9yIG90aGVyIHRvb2xzIGhhZCBhbHJlYWR5IGlkZW50aWZpZWQuIElmIGl0J3MgYWxyZWFkeSBmaXhlZCwgZnV6emluZyB3b24ndCBmaW5kIHRoZSBzYW1lIGJ1Zy5cblxuU28sICpJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIHdpdGggdGhlIHJlYXNvbmluZyB0aGF0OiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gZml4IGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0byBmdXp6LlwiKlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODczLCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjE0OjI0LjA5MjM1MDI0M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjE0OjI0LjA5MjM4OTY3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsdw2g[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-24 13:36:00 +0000 UTC FinishedAt: 2026-08-24 14:14: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+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGVmODk3M2ZkYWNmMTBiNDNlYWQ2MzQ1OWRkNTE1YjRjNDdkMTU5ZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXG5pbmRleCBiNDE0Mjc0Njc3N2VlLi5iZWM2ZmVhMGZkYjQ3IDEwMDY0NFxuLS0tIGEvbW0va3NtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2tzbS5jXG5AQCAtMTExNiw3ICYjNDM7MTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbiYjNDM7XHRXUklURV9PTkNFKGZvbGlvLVx1MDAzZW1hcHBpbmcsXG4mIzQzO1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG4gfVxuIFxuICNpZmRlZiBDT05GSUdfU1lTRlNcbkBAIC0zMzE4LDcgJiM0MzszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbiYjNDM7XHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG4gXHRcdC8qXG4gXHRcdCAqIG5ld2ZvbGlvLVx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcbiBcdFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cdTAwM2VrcGZuIGlzIHZpc2libGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGVmODk3M2ZkYWNmMTBiNDNlYWQ2MzQ1OWRkNTE1YjRjNDdkMTU5ZTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDQKLS0tIGEvbW0va3NtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0va3NtLmMKQEAgLTExMTYsNyAmIzQzOzExMTYsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCiAJCQkJCSBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSkKIHsKIAlWTV9XQVJOX09OX0ZPTElPKGZvbGlvX3Rlc3RfYW5vbihmb2xpbykgJmFtcDsmYW1wOyBQYWdlQW5vbkV4Y2x1c2l2ZSgmYW1wO2ZvbGlvLSZndDtwYWdlKSwgZm9saW8pOwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CiB9CiAKICNpZmRlZiBDT05GSUdfU1lTRlMKQEAgLTMzMTgsNyAmIzQzOzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJc3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7CiAJaWYgKHN0YWJsZV9ub2RlKSB7CiAJCVZNX0JVR19PTl9GT0xJTyhzdGFibGVfbm9kZS0mZ3Q7a3BmbiAhPSBmb2xpb19wZm4oZm9saW8pLCBmb2xpbyk7Ci0JCXN0YWJsZV9ub2RlLSZndDtrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTsKJiM0MzsJCVdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtJmd0O2twZm4sIGZvbGlvX3BmbihuZXdmb2xpbykpOwogCQkvKgogCQkgKiBuZXdmb2xpby0mZ3Q7bWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKQogCQkgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLSZndDtrcGZuIGlzIHZpc2libGUKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3NQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDc1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLU00gUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBtbS9rc20uY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIGFkZGluZyBgV1JJVEVfT05DRWAgdG8gdHdvIGxpbmVzOiBvbmUgaW4gYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYW5kIGFub3RoZXIgaW4gYGZvbGlvX21pZ3JhdGVfa3NtYC4gQmFzaWNhbGx5LCBwcmV2ZW50aW5nIGNvbXBpbGVyIG9wdGltaXphdGlvbnMgb3IgZGF0YSByYWNlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGp1c3QgYSBtZW1vcnkgYmFycmllciwgc28gaXQgc2hvdWxkbiYjMzk7dCBiZSB3b3J0aCBmdXp6aW5nLCByaWdodD8gSXQgZG9lc24mIzM5O3Qgc2VlbSB0byBhbHRlciB0aGUgZnVuY3Rpb25hbCBsb2dpYyBvZiB0aGUgY29kZS4KCkJ1dCB3YWl0LCBkb2VzIHRoaXMgcXVhbGlmeSBhcyBhIGZ1bmN0aW9uYWwgY2hhbmdlPyBBZGRpbmcgYFdSSVRFX09OQ0VgIGlzIHVzdWFsbHkgYSBkYXRhIHJhY2UgZml4LiBJZiBpdCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uLCBtYXliZSBpdCAqaXMqIHdvcnRoIGEgbG9vay4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlcywgYnV0IGl0JiMzOTtzIGZpeGluZyBhIGJ1Zy4gTGV0IG1lIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uOiAmIzM0O1JldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6IC4uLiBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzIC4uLiBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuJiMzNDsKCkFkZGluZyBgV1JJVEVfT05DRWAgKmRvZXMqIGNoYW5nZSBob3cgdGhlIGNvbXBpbGVyIGhhbmRsZXMgbWVtb3J5IGFjY2Vzc2VzLiBJdCBwcmV2ZW50cyB0ZWFyaW5nIGFuZCByZW9yZGVyaW5nLiBIb3dldmVyLCBpdCBkb2VzbiYjMzk7dCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gU28sIGl0IGZpeGVzIGEgZGF0YSByYWNlLi4uIHNvIGlzIGl0IHdvcnRoIGZ1enppbmc/CgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgcGF0Y2ggYWdhaW4gdG8gYmUgc3VyZToKCmBgYGMKLQlmb2xpby0mZ3Q7bWFwcGluZyA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pOwomIzQzOwlXUklURV9PTkNFKGZvbGlvLSZndDttYXBwaW5nLAomIzQzOwkJICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpOwpgYGAKCmBgYGMKLQkJc3RhYmxlX25vZGUtJmd0O2twZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pOwomIzQzOwkJV1JJVEVfT05DRShzdGFibGVfbm9kZS0mZ3Q7a3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7CmBgYAoKT2theSwgaXQmIzM5O3MgYSBkYXRhIHJhY2UgZml4IGZvciBLQ1NBTi4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIHRyaWNreS4gSWYgd2UgZnV6eiB0aGlzLCB3ZSYjMzk7cmUgcHJvYmFibHkgbm90IGdvaW5nIHRvIGZpbmQgKm5ldyogYnVncywgYnV0IHdlIG1pZ2h0IHByZXZlbnQgdGhlIGRhdGEgcmFjZSBmcm9tIG1hbmlmZXN0aW5nIGR1cmluZyBmdXp6aW5nLiBCdXQgSSYjMzk7bSBnb2luZyB0byBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPXRydWUsIGp1c3QgaW4gY2FzZSwgYnV0IG1heWJlIGl0JiMzOTtzIGZhbHNlPwoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBqdXN0IGBXUklURV9PTkNFYCwgaXQmIzM5O3MgYSB2ZXJ5IG1pbm9yIGNoYW5nZS4gTm93IGlmIEkgZG8gbWFyayBpdCBhcyBXb3J0aEZ1enppbmc9dHJ1ZSwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBnaXZlIGBmb2xpb19taWdyYXRlX2tzbWAgYW5kIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFzIEZvY3VzU3ltYm9scy4gV2FpdCwgaXMgYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgc3RhdGljIGlubGluZT8gTGV0JiMzOTtzIGNoZWNrOgoKYGBgYwpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fc2V0X3N0YWJsZV9ub2RlKHN0cnVjdCBmb2xpbyAqZm9saW8sCgkJCQkJIHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKQpgYGAKCll1cCwgaXQmIzM5O3MgYHN0YXRpYyBpbmxpbmVgLiBTbyBubyBuZWVkIHRvIGxpc3QgaXQuIEdvb2QsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGxvb2sgZm9yIGBmb2xpb19taWdyYXRlX2tzbWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCBmb2xpb19taWdyYXRlX2tzbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2tzbS5oPTk3PXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yyk7XG5pbmNsdWRlL2xpbnV4L2tzbS5oOjk4OnZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbyk7XG5pbmNsdWRlL2xpbnV4L2tzbS5oLTk5LXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxuaW5jbHVkZS9saW51eC9rc20uaD0xNTM9c3RhdGljIGlubGluZSB2b2lkIHJtYXBfd2Fsa19rc20oc3RydWN0IGZvbGlvICpmb2xpbyxcbi0tXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTE1Ny1cbmluY2x1ZGUvbGludXgva3NtLmg6MTU4OnN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKm9sZClcbmluY2x1ZGUvbGludXgva3NtLmgtMTU5LXtcbi0tXG5tbS9rc20uYz0zMjcxPXZvaWQgY29sbGVjdF9wcm9jc19rc20oY29uc3Qgc3RydWN0IGZvbGlvICpmb2xpbywgY29uc3Qgc3RydWN0IHBhZ2UgKnBhZ2UsXG4tLVxubW0va3NtLmMtMzMxMC0jaWZkZWYgQ09ORklHX01JR1JBVElPTlxubW0va3NtLmM6MzMxMTp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXG5tbS9rc20uYy0zMzEyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTEzCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKktTTSBNaWdyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBmb2xpb19taWdyYXRlX2tzbWAuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgaXRzIHNvdXJjZSBmaWxlLiBCdXQgdGhlbiwgaXQmIzM5O3MgY2xlYXIgSSBuZWVkIHRvIGVuc3VyZSBgQ09ORklHX0tTTWAgaXMgZW5hYmxlZC4gQSBxdWljayBjaGVjayBvZiB0aGUgY29kZSByZXZlYWxzIHRoYXQgYGZvbGlvX21pZ3JhdGVfa3NtYCBpcyBhY3R1YWxseSBndWFyZGVkIGJ5IGFuIGAjaWZkZWYgQ09ORklHX01JR1JBVElPTmAgYmxvY2sgd2l0aGluIGBtbS9rc20uY2AuIFNvLCBJIHJlYWxseSBuZWVkICpib3RoKiBgQ09ORklHX0tTTWAgYW5kIGBDT05GSUdfTUlHUkFUSU9OYCB0byBiZSBzZXQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uIHRvIGV2ZW4gYmUgY29tcGlsZWQuIFRpbWUgdG8gcHVsbCB1cCBgbW0vS2NvbmZpZ2AgdG8gc2VlIGV4YWN0bHkgaG93IHRoZXNlIG9wdGlvbnMgYXJlIGRlZmluZWQgYW5kIGhvdyB0aGV5IHJlbGF0ZS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgb24gdGhlc2UgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmV2ZWFsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtTTSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTcyMj1jb25maWcgTU1VX05PVElGSUVSXG4tLVxubW0vS2NvbmZpZy03MjUtXG5tbS9LY29uZmlnOjcyNjpjb25maWcgS1NNXG5tbS9LY29uZmlnLTcyNy1cdGJvb2wgXCYjMzQ7RW5hYmxlIEtTTSBmb3IgcGFnZSBtZXJnaW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5MgoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEaXZpbmcgaW50byB0aGUgYE1JR1JBVElPTmAgTW9kdWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgTUlHUkFUSU9OYCBtb2R1bGUuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyBjb25zaWRlcmluZyB0aGUgdXN1YWwgc3VzcGVjdHMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQ6CgoqICAgKipEYXRhIFN0cnVjdHVyZXM6KiogV2hhdCBraW5kIG9mIGRhdGEgc3RydWN0dXJlcyBhcmUgd2UgdXNpbmc/IEFyZSB3ZSBkZWFsaW5nIHdpdGggZmxhdCBmaWxlcywgcmVsYXRpb25hbCBkYXRhYmFzZXMsIE5vU1FMIHN0b3Jlcywgb3Igc29tZXRoaW5nIG1vcmUgZXhvdGljPyBUaGUgc3RydWN0dXJlIG9mIHRoZSBzb3VyY2UgYW5kIHRhcmdldCBkYXRhIGlzIHBhcmFtb3VudCBoZXJlLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGxpa2VseSBzY2hlbWEgaW1wbGljYXRpb25zLgoqICAgKipUcmFuc2Zvcm1hdGlvbiBMb2dpYzoqKiBIb3cgY29tcGxleCBpcyB0aGUgdHJhbnNmb3JtYXRpb24gbG9naWM/IElzIGl0IHN0cmFpZ2h0Zm9yd2FyZCBtYXBwaW5nLCBvciBhcmUgd2UgZGVhbGluZyB3aXRoIGNvbXBsZXggYnVzaW5lc3MgcnVsZXMsIGRhdGEgY2xlYW5zaW5nLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkYXRhIGVucmljaG1lbnQ/IEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGUgc29waGlzdGljYXRpb24gYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gQXJlIHdlIHVzaW5nIGEgdG9vbCBmb3IgaXQ/CiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQmIzM5O3MgdGhlIGVycm9yIGhhbmRsaW5nIGxpa2U/IEhvdyByb2J1c3QgaXMgdGhlIHN5c3RlbSB0byBoYW5kbGUgZGF0YSBpbmNvbnNpc3RlbmNpZXMsIHNjaGVtYSBtaXNtYXRjaGVzLCBhbmQgbmV0d29yayBpbnRlcnJ1cHRpb25zPyBJIGhvcGUgaXQmIzM5O3Mgd2VsbC1kZXNpZ25lZCB0byBtYW5hZ2UgYmFkIGRhdGEuIFRoaXMgaXMgdHlwaWNhbGx5IG15IG1ham9yIHdvcnJ5LgoqICAgKipQZXJmb3JtYW5jZToqKiBJIG5lZWQgdG8gdGhpbmsgYWJvdXQgcGVyZm9ybWFuY2UuIEFyZSB3ZSBtaWdyYXRpbmcgaW4gYmF0Y2hlcz8gU3RyZWFtaW5nPyBXaGF0IGFyZSB0aGUgZXhwZWN0ZWQgZGF0YSB2b2x1bWVzPyBXaGF0IGFyZSB0aGUgY3JpdGljYWwgcGVyZm9ybWFuY2UgbWV0cmljcyAoZS5nLiwgbGF0ZW5jeSwgdGhyb3VnaHB1dCwgcmVzb3VyY2UgY29uc3VtcHRpb24pPyBBbnkgcG9zc2liaWxpdHkgb2YgbWVtb3J5IGxlYWtzPwoqICAgKipJZGVtcG90ZW5jeToqKiBJcyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaWRlbXBvdGVudD8gQ2FuIGl0IGJlIHNhZmVseSByZXN0YXJ0ZWQgaWYgaXQgZmFpbHMgcGFydHdheSB0aHJvdWdoPyBQcm9wZXIgaGFuZGxpbmcgb2YgdGhpcyBpcyBjcnVjaWFsIHRvIHRoZSBkZXNpZ24uCiogICAqKlRlc3RpbmcgYW5kIFZhbGlkYXRpb246KiogSSB3YW50IHRvIGNoZWNrIGhvdyB0aGUgdW5pdCB0ZXN0aW5nIGFuZCBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGFyZS4gQXJlIHdlIGdvaW5nIHRvIHNlZSBnb29kIGNvdmVyYWdlLCBvciBhcmUgd2UgZ29pbmcgdG8gc2VlIGEgbG90IG9mIGRlYnVnZ2luZyBkdXJpbmcgcHJvZHVjdGlvbj8gSG93IGRvIHdlIGVuc3VyZSBkYXRhIGludGVncml0eSBkdXJpbmcgYW5kIGFmdGVyIHRoZSBtaWdyYXRpb24/IEkgd2FudCB0byBmb2N1cyBvbiBkYXRhIHZhbGlkYXRpb24gLSBJIGRvbiYjMzk7dCB3YW50IHRvIGxvc2UgYW55dGhpbmcuCiogICAqKlNlY3VyaXR5OioqIFRoaXMgaXMgaW1wb3J0YW50LCB0b28uIFdoYXQgYXJlIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnM/IEhvdyBpcyB0aGUgZGF0YSBiZWluZyBzZWN1cmVkIGR1cmluZyB0cmFuc2l0IGFuZCBhdCByZXN0PyBIb3cgZG8gd2UgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uPwoKT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmYWN0b3JzIHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoaXMgbWlncmF0aW9uLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjExPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNSUdSQVRJT04mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz02NzE9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXG4tLVxubW0vS2NvbmZpZy02ODEtXG5tbS9LY29uZmlnOjY4Mjpjb25maWcgTUlHUkFUSU9OXG5tbS9LY29uZmlnLTY4My1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNCAxNDoxMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODczCgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogOTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGVjaXNpb24gZm9yIHRoZSBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgYSBzaW1wbGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLCB3aGljaCBlc3NlbnRpYWxseSBqdXN0IGZpeGVzIGEgZGF0YSByYWNlIGJ5IHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZy4gIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCAqZG9lc24mIzM5O3QqIGNoYW5nZSB0aGUgcHJvZ3JhbSBmbG93IGl0c2VsZiwgYW5kIHNvIEkgd2FzIGxlYW5pbmcgdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkkgZG91YmxlLWNoZWNrZWQgdGhlIGV4cGxpY2l0IGNyaXRlcmlhIHByb3ZpZGVkOiAgbW9kaWZpY2F0aW9ucyB0byBkb2NzLCBLY29uZmlnLCBjb21tZW50cz8gTm9wZS4gRGVjb3JhdGl2ZSBjaGFuZ2VzIGxpa2UgbG9nZ2luZz8gTm9wZS4gQ2hhbmdlcyB0byBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgKmRvbiYjMzk7dCogYWx0ZXIgZXhlY3V0aW9uPyBBaGEhIFdoaWxlIGBXUklURV9PTkNFYCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBjb21waWxlciwgaXQmIzM5O3MgbG9naWNhbGx5IHRoZSBzYW1lLiBTbyB0aGF0JiMzOTtzIHRoZSBrZXkuICBJdCBmaXRzIHRoZSBjcml0ZXJpYSwgc2luY2UgaXQmIzM5O3MgYSBtYWNybyBhbmQgZG9lc24mIzM5O3QgY2hhbmdlIHdoYXQgdGhlIGNvZGUgKmRvZXMqLCBqdXN0IGhvdyB0aGUgY29tcGlsZXIgKnNlZXMqIGl0LiBJIHF1aWNrbHkgcmVtZW1iZXJlZCwgZGF0YSByYWNlIGZpeGVzIGFyZSBnZW5lcmFsbHkgbm90IGNvbnNpZGVyZWQgbmV3IGZlYXR1cmVzIHRvIGZ1enosIHRoZXkmIzM5O3JlIGJ1Z2ZpeGVzLgoKSW5pdGlhbGx5LCB0aGUgcG9zc2liaWxpdHkgb2YgYGZvbGlvX21pZ3JhdGVfa3NtYCwgYEtTTWAgYW5kIGBNSUdSQVRJT05gIGdvdCBtZSB0aGlua2luZyBhYm91dCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzLiAgSSBhbG1vc3QgdG9vayB0aGUgJiMzNDtiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5JiMzNDsgYXBwcm9hY2ggYW5kIHNldCBpdCB0byBgdHJ1ZWAgZ2l2ZW4gdGhhdCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLgoKVGhlbiBJIHBhdXNlZCB0byByZWFsbHkgZm9jdXMgb24gdGhlIGtleSBwYXJ0IG9mIHRoZSBwcm9tcHQgdGhhdCBpbnN0cnVjdHMgd2hlbiBJIHNob3VsZCByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAuIEl0IGV4cGxpY2l0bHkgbWVudGlvbnMgJiMzNDtjaGFuZ2VzIHRvIC4uLiBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93JiMzNDsuIEFuZCBgV1JJVEVfT05DRWAgKmlzKiBhIG1hY3JvIHRoYXQgKmRvZXNuJiMzOTt0KiBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3csIG9ubHkgdGhlIG1lbW9yeSBvcmRlcmluZy4gIEkgZG91YmxlIGNoZWNrZWQgdGhlIHBhdGNoIGFnYWluLgoKYGBgYwotCWZvbGlvLSZndDttYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7CiYjNDM7CVdSSVRFX09OQ0UoZm9saW8tJmd0O21hcHBpbmcsCiYjNDM7CQkgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7CmBgYAoKWWVwLCBpdCYjMzk7cyBqdXN0IGBXUklURV9PTkNFYC4KCkZpbmFsbHksIEkgY29uc2lkZXJlZCB0aGF0IGBXUklURV9PTkNFYCBsaWtlbHkgYWRkcmVzc2VkIGEgZGF0YSByYWNlIHRoYXQgbWF5YmUgS0NTQU4gb3Igb3RoZXIgdG9vbHMgaGFkIGFscmVhZHkgaWRlbnRpZmllZC4gSWYgaXQmIzM5O3MgYWxyZWFkeSBmaXhlZCwgZnV6emluZyB3b24mIzM5O3QgZmluZCB0aGUgc2FtZSBidWcuCgpTbywgKkkgd2lsbCBzZXQgYFdvcnRoRnV6emluZz1mYWxzZWAgd2l0aCB0aGUgcmVhc29uaW5nIHRoYXQ6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcywgd2hpY2ggZG9lcyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBvciBpbnRyb2R1Y2UgbmV3IGxvZ2ljIHRvIGZ1enouJiMzNDsqCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI0IDE0OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjQgMTQ6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA3LjkyMzUzNTI3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjE2ODg2OTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA3LjkyMzU0NDYwM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMDMxMDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZWY4OTczZmRhY2YxMGI0M2VhZDYzNDU5ZGQ1MTViNGM0N2QxNTllMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAyNCAxNDowNzowNiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9tbS9rc20uYyBiL21tL2tzbS5jXFxuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcXG4tLS0gYS9tbS9rc20uY1xcbisrKyBiL21tL2tzbS5jXFxuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcXG4gXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxcbiB7XFxuIFxcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcXHUwMDI2XFx1MDAyNiBQYWdlQW5vbkV4Y2x1c2l2ZShcXHUwMDI2Zm9saW8tXFx1MDAzZXBhZ2UpLCBmb2xpbyk7XFxuLVxcdGZvbGlvLVxcdTAwM2VtYXBwaW5nID0gKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSk7XFxuK1xcdFdSSVRFX09OQ0UoZm9saW8tXFx1MDAzZW1hcHBpbmcsXFxuK1xcdFxcdCAgICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pKTtcXG4gfVxcbiBcXG4gI2lmZGVmIENPTkZJR19TWVNGU1xcbkBAIC0zMzE4LDcgKzMzMTksNyBAQCB2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXFxuIFxcdHN0YWJsZV9ub2RlID0gZm9saW9fc3RhYmxlX25vZGUoZm9saW8pO1xcbiBcXHRpZiAoc3RhYmxlX25vZGUpIHtcXG4gXFx0XFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuICE9IGZvbGlvX3Bmbihmb2xpbyksIGZvbGlvKTtcXG4tXFx0XFx0c3RhYmxlX25vZGUtXFx1MDAzZWtwZm4gPSBmb2xpb19wZm4obmV3Zm9saW8pO1xcbitcXHRcXHRXUklURV9PTkNFKHN0YWJsZV9ub2RlLVxcdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogbmV3Zm9saW8tXFx1MDAzZW1hcHBpbmcgd2FzIHNldCBpbiBhZHZhbmNlOyBub3cgd2UgbmVlZCBzbXBfd21iKClcXG4gXFx0XFx0ICogdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG5ldyBzdGFibGVfbm9kZS1cXHUwMDNla3BmbiBpcyB2aXNpYmxlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjA3OjA4LjYzNjU0ODEzOFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQzNTQ1NTgzODg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBhZGRzIFdSSVRFX09OQ0UgbWFjcm9zIHRvIGZpeCBkYXRhIHJhY2VzLiBUaGlzIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZWY4OTczZmRhY2YxMGI0M2VhZDYzNDU5ZGQ1MTViNGM0N2QxNTllMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDI0IDE0OjA3OjA2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0va3NtLmMgYi9tbS9rc20uY1xuaW5kZXggYjQxNDI3NDY3NzdlZS4uYmVjNmZlYTBmZGI0NyAxMDA2NDRcbi0tLSBhL21tL2tzbS5jXG4rKysgYi9tbS9rc20uY1xuQEAgLTExMTYsNyArMTExNiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19zZXRfc3RhYmxlX25vZGUoc3RydWN0IGZvbGlvICpmb2xpbyxcbiBcdFx0XHRcdFx0IHN0cnVjdCBrc21fc3RhYmxlX25vZGUgKnN0YWJsZV9ub2RlKVxuIHtcbiBcdFZNX1dBUk5fT05fRk9MSU8oZm9saW9fdGVzdF9hbm9uKGZvbGlvKSBcdTAwMjZcdTAwMjYgUGFnZUFub25FeGNsdXNpdmUoXHUwMDI2Zm9saW8tXHUwMDNlcGFnZSksIGZvbGlvKTtcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuIH1cbiBcbiAjaWZkZWYgQ09ORklHX1NZU0ZTXG5AQCAtMzMxOCw3ICszMzE5LDcgQEAgdm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuIFx0c3RhYmxlX25vZGUgPSBmb2xpb19zdGFibGVfbm9kZShmb2xpbyk7XG4gXHRpZiAoc3RhYmxlX25vZGUpIHtcbiBcdFx0Vk1fQlVHX09OX0ZPTElPKHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gIT0gZm9saW9fcGZuKGZvbGlvKSwgZm9saW8pO1xuLVx0XHRzdGFibGVfbm9kZS1cdTAwM2VrcGZuID0gZm9saW9fcGZuKG5ld2ZvbGlvKTtcbitcdFx0V1JJVEVfT05DRShzdGFibGVfbm9kZS1cdTAwM2VrcGZuLCBmb2xpb19wZm4obmV3Zm9saW8pKTtcbiBcdFx0LypcbiBcdFx0ICogbmV3Zm9saW8tXHUwMDNlbWFwcGluZyB3YXMgc2V0IGluIGFkdmFuY2U7IG5vdyB3ZSBuZWVkIHNtcF93bWIoKVxuIFx0XHQgKiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbmV3IHN0YWJsZV9ub2RlLVx1MDAzZWtwZm4gaXMgdmlzaWJsZVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTQ6MDc6MDguNjM2NTUwNDk4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ0MDgzMzQ0NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS1NNIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG1tL2tzbS5jYC4gSXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY2hhbmdlLCBhZGRpbmcgYFdSSVRFX09OQ0VgIHRvIHR3byBsaW5lczogb25lIGluIGBmb2xpb19zZXRfc3RhYmxlX25vZGVgIGFuZCBhbm90aGVyIGluIGBmb2xpb19taWdyYXRlX2tzbWAuIEJhc2ljYWxseSwgcHJldmVudGluZyBjb21waWxlciBvcHRpbWl6YXRpb25zIG9yIGRhdGEgcmFjZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBqdXN0IGEgbWVtb3J5IGJhcnJpZXIsIHNvIGl0IHNob3VsZG4ndCBiZSB3b3J0aCBmdXp6aW5nLCByaWdodD8gSXQgZG9lc24ndCBzZWVtIHRvIGFsdGVyIHRoZSBmdW5jdGlvbmFsIGxvZ2ljIG9mIHRoZSBjb2RlLlxuXG5CdXQgd2FpdCwgZG9lcyB0aGlzIHF1YWxpZnkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZT8gQWRkaW5nIGBXUklURV9PTkNFYCBpcyB1c3VhbGx5IGEgZGF0YSByYWNlIGZpeC4gSWYgaXQgZml4ZXMgYSByYWNlIGNvbmRpdGlvbiwgbWF5YmUgaXQgKmlzKiB3b3J0aCBhIGxvb2suIEl0J3Mgbm90IGludHJvZHVjaW5nIG5ldyBmZWF0dXJlcywgYnV0IGl0J3MgZml4aW5nIGEgYnVnLiBMZXQgbWUgY2hlY2sgdGhlIGRvY3VtZW50YXRpb246IFwiUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczogLi4uIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMgLi4uIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cIlxuXG5BZGRpbmcgYFdSSVRFX09OQ0VgICpkb2VzKiBjaGFuZ2UgaG93IHRoZSBjb21waWxlciBoYW5kbGVzIG1lbW9yeSBhY2Nlc3Nlcy4gSXQgcHJldmVudHMgdGVhcmluZyBhbmQgcmVvcmRlcmluZy4gSG93ZXZlciwgaXQgZG9lc24ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGluIHRoZSB0cmFkaXRpb25hbCBzZW5zZS4gU28sIGl0IGZpeGVzIGEgZGF0YSByYWNlLi4uIHNvIGlzIGl0IHdvcnRoIGZ1enppbmc/XG5cbkxldCdzIGxvb2sgYXQgdGhlIHBhdGNoIGFnYWluIHRvIGJlIHN1cmU6XG5cbmBgYGNcbi1cdGZvbGlvLVx1MDAzZW1hcHBpbmcgPSAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKTtcbitcdFdSSVRFX09OQ0UoZm9saW8tXHUwMDNlbWFwcGluZyxcbitcdFx0ICAgKHZvaWQgKikoKHVuc2lnbmVkIGxvbmcpc3RhYmxlX25vZGUgfCBGT0xJT19NQVBQSU5HX0tTTSkpO1xuYGBgXG5cbmBgYGNcbi1cdFx0c3RhYmxlX25vZGUtXHUwMDNla3BmbiA9IGZvbGlvX3BmbihuZXdmb2xpbyk7XG4rXHRcdFdSSVRFX09OQ0Uoc3RhYmxlX25vZGUtXHUwMDNla3BmbiwgZm9saW9fcGZuKG5ld2ZvbGlvKSk7XG5gYGBcblxuT2theSwgaXQncyBhIGRhdGEgcmFjZSBmaXggZm9yIEtDU0FOLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgdHJpY2t5LiBJZiB3ZSBmdXp6IHRoaXMsIHdlJ3JlIHByb2JhYmx5IG5vdCBnb2luZyB0byBmaW5kICpuZXcqIGJ1Z3MsIGJ1dCB3ZSBtaWdodCBwcmV2ZW50IHRoZSBkYXRhIHJhY2UgZnJvbSBtYW5pZmVzdGluZyBkdXJpbmcgZnV6emluZy4gQnV0IEknbSBnb2luZyB0byBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPXRydWUsIGp1c3QgaW4gY2FzZSwgYnV0IG1heWJlIGl0J3MgZmFsc2U/XG5cbkdpdmVuIHRoYXQgaXQncyBqdXN0IGBXUklURV9PTkNFYCwgaXQncyBhIHZlcnkgbWlub3IgY2hhbmdlLiBOb3cgaWYgSSBkbyBtYXJrIGl0IGFzIFdvcnRoRnV6emluZz10cnVlLCBJIHNob3VsZCBwcm9iYWJseSBhbHNvIGdpdmUgYGZvbGlvX21pZ3JhdGVfa3NtYCBhbmQgYGZvbGlvX3NldF9zdGFibGVfbm9kZWAgYXMgRm9jdXNTeW1ib2xzLiBXYWl0LCBpcyBgZm9saW9fc2V0X3N0YWJsZV9ub2RlYCBzdGF0aWMgaW5saW5lPyBMZXQncyBjaGVjazpcblxuYGBgY1xuc3RhdGljIGlubGluZSB2b2lkIGZvbGlvX3NldF9zdGFibGVfbm9kZShzdHJ1Y3QgZm9saW8gKmZvbGlvLFxuXHRcdFx0XHRcdCBzdHJ1Y3Qga3NtX3N0YWJsZV9ub2RlICpzdGFibGVfbm9kZSlcbmBgYFxuXG5ZdXAsIGl0J3MgYHN0YXRpYyBpbmxpbmVgLiBTbyBubyBuZWVkIHRvIGxpc3QgaXQuIEdvb2QsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zLiBMZXQncyBsb29rIGZvciBgZm9saW9fbWlncmF0ZV9rc21gLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTc1LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjRUMTQ6MDc6MjMuMDQ0ODg3NjYzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MjEyNTU4OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm9pZCBmb2xpb19taWdyYXRlX2tzbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2tzbS5oPTk3PXZvaWQgcm1hcF93YWxrX2tzbShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3Qgcm1hcF93YWxrX2NvbnRyb2wgKnJ3Yyk7XFxuaW5jbHVkZS9saW51eC9rc20uaDo5ODp2b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pO1xcbmluY2x1ZGUvbGludXgva3NtLmgtOTktdm9pZCBjb2xsZWN0X3Byb2NzX2tzbShjb25zdCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBjb25zdCBzdHJ1Y3QgcGFnZSAqcGFnZSxcXG4tLVxcbmluY2x1ZGUvbGludXgva3NtLmg9MTUzPXN0YXRpYyBpbmxpbmUgdm9pZCBybWFwX3dhbGtfa3NtKHN0cnVjdCBmb2xpbyAqZm9saW8sXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oLTE1Ny1cXG5pbmNsdWRlL2xpbnV4L2tzbS5oOjE1ODpzdGF0aWMgaW5saW5lIHZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpvbGQpXFxuaW5jbHVkZS9saW51eC9rc20uaC0xNTkte1xcbi0tXFxubW0va3NtLmM9MzI3MT12b2lkIGNvbGxlY3RfcHJvY3Nfa3NtKGNvbnN0IHN0cnVjdCBmb2xpbyAqZm9saW8sIGNvbnN0IHN0cnVjdCBwYWdlICpwYWdlLFxcbi0tXFxubW0va3NtLmMtMzMxMC0jaWZkZWYgQ09ORklHX01JR1JBVElPTlxcbm1tL2tzbS5jOjMzMTE6dm9pZCBmb2xpb19taWdyYXRlX2tzbShzdHJ1Y3QgZm9saW8gKm5ld2ZvbGlvLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbm1tL2tzbS5jLTMzMTIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDowNzoyNS41NjYxNDc3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNTkyNTk1NDk1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGJyZWFrZG93biBvZiB0aGlzLlxuXG4qKktTTSBNaWdyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byBgZm9saW9fbWlncmF0ZV9rc21gLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQncyBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBpdHMgc291cmNlIGZpbGUuIEJ1dCB0aGVuLCBpdCdzIGNsZWFyIEkgbmVlZCB0byBlbnN1cmUgYENPTkZJR19LU01gIGlzIGVuYWJsZWQuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGNvZGUgcmV2ZWFscyB0aGF0IGBmb2xpb19taWdyYXRlX2tzbWAgaXMgYWN0dWFsbHkgZ3VhcmRlZCBieSBhbiBgI2lmZGVmIENPTkZJR19NSUdSQVRJT05gIGJsb2NrIHdpdGhpbiBgbW0va3NtLmNgLiBTbywgSSByZWFsbHkgbmVlZCAqYm90aCogYENPTkZJR19LU01gIGFuZCBgQ09ORklHX01JR1JBVElPTmAgdG8gYmUgc2V0IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbiB0byBldmVuIGJlIGNvbXBpbGVkLiBUaW1lIHRvIHB1bGwgdXAgYG1tL0tjb25maWdgIHRvIHNlZSBleGFjdGx5IGhvdyB0aGVzZSBvcHRpb25zIGFyZSBkZWZpbmVkIGFuZCBob3cgdGhleSByZWxhdGUuIFRoYXQncyB3aGVyZSB0aGUgcmVhbCBkZXRhaWwgb24gdGhlc2UgZGVwZW5kZW5jaWVzIHdpbGwgYmUgcmV2ZWFsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5MTMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDoxMToyMS40OTIxMDc0NTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU1MzMxNTkzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1NNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9NzIyPWNvbmZpZyBNTVVfTk9USUZJRVJcXG4tLVxcbm1tL0tjb25maWctNzI1LVxcbm1tL0tjb25maWc6NzI2OmNvbmZpZyBLU01cXG5tbS9LY29uZmlnLTcyNy1cXHRib29sIFxcXCJFbmFibGUgS1NNIGZvciBwYWdlIG1lcmdpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjExOjI0LjA0NTQyODk0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5Mzc2MTQ5NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gdGhlIGBNSUdSQVRJT05gIE1vZHVsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIExldCdzIHN0YXJ0IHdpdGggdGhlIGBNSUdSQVRJT05gIG1vZHVsZS4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgY29uc2lkZXJpbmcgdGhlIHVzdWFsIHN1c3BlY3RzLiBJJ20gdGhpbmtpbmcgYWJvdXQ6XG5cbiogICAqKkRhdGEgU3RydWN0dXJlczoqKiBXaGF0IGtpbmQgb2YgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB3ZSB1c2luZz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBmbGF0IGZpbGVzLCByZWxhdGlvbmFsIGRhdGFiYXNlcywgTm9TUUwgc3RvcmVzLCBvciBzb21ldGhpbmcgbW9yZSBleG90aWM/IFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGRhdGEgaXMgcGFyYW1vdW50IGhlcmUuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBsaWtlbHkgc2NoZW1hIGltcGxpY2F0aW9ucy5cbiogICAqKlRyYW5zZm9ybWF0aW9uIExvZ2ljOioqIEhvdyBjb21wbGV4IGlzIHRoZSB0cmFuc2Zvcm1hdGlvbiBsb2dpYz8gSXMgaXQgc3RyYWlnaHRmb3J3YXJkIG1hcHBpbmcsIG9yIGFyZSB3ZSBkZWFsaW5nIHdpdGggY29tcGxleCBidXNpbmVzcyBydWxlcywgZGF0YSBjbGVhbnNpbmcsIGFuZCBwb3RlbnRpYWxseSBldmVuIGRhdGEgZW5yaWNobWVudD8gSSBuZWVkIHRvIHF1aWNrbHkgYXNzZXNzIHRoZSBzb3BoaXN0aWNhdGlvbiBhbmQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLiBBcmUgd2UgdXNpbmcgYSB0b29sIGZvciBpdD9cbiogICAqKkVycm9yIEhhbmRsaW5nOioqIFdoYXQncyB0aGUgZXJyb3IgaGFuZGxpbmcgbGlrZT8gSG93IHJvYnVzdCBpcyB0aGUgc3lzdGVtIHRvIGhhbmRsZSBkYXRhIGluY29uc2lzdGVuY2llcywgc2NoZW1hIG1pc21hdGNoZXMsIGFuZCBuZXR3b3JrIGludGVycnVwdGlvbnM/IEkgaG9wZSBpdCdzIHdlbGwtZGVzaWduZWQgdG8gbWFuYWdlIGJhZCBkYXRhLiBUaGlzIGlzIHR5cGljYWxseSBteSBtYWpvciB3b3JyeS5cbiogICAqKlBlcmZvcm1hbmNlOioqIEkgbmVlZCB0byB0aGluayBhYm91dCBwZXJmb3JtYW5jZS4gQXJlIHdlIG1pZ3JhdGluZyBpbiBiYXRjaGVzPyBTdHJlYW1pbmc/IFdoYXQgYXJlIHRoZSBleHBlY3RlZCBkYXRhIHZvbHVtZXM/IFdoYXQgYXJlIHRoZSBjcml0aWNhbCBwZXJmb3JtYW5jZSBtZXRyaWNzIChlLmcuLCBsYXRlbmN5LCB0aHJvdWdocHV0LCByZXNvdXJjZSBjb25zdW1wdGlvbik/IEFueSBwb3NzaWJpbGl0eSBvZiBtZW1vcnkgbGVha3M/XG4qICAgKipJZGVtcG90ZW5jeToqKiBJcyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaWRlbXBvdGVudD8gQ2FuIGl0IGJlIHNhZmVseSByZXN0YXJ0ZWQgaWYgaXQgZmFpbHMgcGFydHdheSB0aHJvdWdoPyBQcm9wZXIgaGFuZGxpbmcgb2YgdGhpcyBpcyBjcnVjaWFsIHRvIHRoZSBkZXNpZ24uXG4qICAgKipUZXN0aW5nIGFuZCBWYWxpZGF0aW9uOioqIEkgd2FudCB0byBjaGVjayBob3cgdGhlIHVuaXQgdGVzdGluZyBhbmQgaW50ZWdyYXRpb24gdGVzdGluZyBhcmUuIEFyZSB3ZSBnb2luZyB0byBzZWUgZ29vZCBjb3ZlcmFnZSwgb3IgYXJlIHdlIGdvaW5nIHRvIHNlZSBhIGxvdCBvZiBkZWJ1Z2dpbmcgZHVyaW5nIHByb2R1Y3Rpb24/IEhvdyBkbyB3ZSBlbnN1cmUgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGFuZCBhZnRlciB0aGUgbWlncmF0aW9uPyBJIHdhbnQgdG8gZm9jdXMgb24gZGF0YSB2YWxpZGF0aW9uIC0gSSBkb24ndCB3YW50IHRvIGxvc2UgYW55dGhpbmcuXG4qICAgKipTZWN1cml0eToqKiBUaGlzIGlzIGltcG9ydGFudCwgdG9vLiBXaGF0IGFyZSB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zPyBIb3cgaXMgdGhlIGRhdGEgYmVpbmcgc2VjdXJlZCBkdXJpbmcgdHJhbnNpdCBhbmQgYXQgcmVzdD8gSG93IGRvIHdlIGhhbmRsZSBhdXRoZW50aWNhdGlvbiBhbmQgYXV0aG9yaXphdGlvbj9cblxuT2theSwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byBxdWlja2x5IGFzc2VzcyB0aGVzZSBmYWN0b3JzIHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIHNjb3BlIG9mIHRoaXMgbWlncmF0aW9uLiBMZXQncyBnZXQgdG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyOTIsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjExOjI4Ljk4MzA0NjcyOFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzk4OTM3NDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNSUdSQVRJT05cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz02NzE9Y29uZmlnIE5VTUFfTUlHUkFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY4MS1cXG5tbS9LY29uZmlnOjY4Mjpjb25maWcgTUlHUkFUSU9OXFxubW0vS2NvbmZpZy02ODMtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNFQxNDoxMTozMS4zODE5ODc3ODhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzI3MTAzMzg1NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJcyB0aGlzIHBhdGNoIHdvcnRoIGZ1enppbmc/IEluaXRpYWxseSwgaXQgbG9va2VkIGxpa2UgYSBzaW1wbGUgYWRkaXRpb24gb2YgYFdSSVRFX09OQ0VgIHRvIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzLCB3aGljaCBlc3NlbnRpYWxseSBqdXN0IGZpeGVzIGEgZGF0YSByYWNlIGJ5IHByZXZlbnRpbmcgY29tcGlsZXIgcmVvcmRlcmluZy4gIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCAqZG9lc24ndCogY2hhbmdlIHRoZSBwcm9ncmFtIGZsb3cgaXRzZWxmLCBhbmQgc28gSSB3YXMgbGVhbmluZyB0b3dhcmRzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5JIGRvdWJsZS1jaGVja2VkIHRoZSBleHBsaWNpdCBjcml0ZXJpYSBwcm92aWRlZDogIG1vZGlmaWNhdGlvbnMgdG8gZG9jcywgS2NvbmZpZywgY29tbWVudHM/IE5vcGUuIERlY29yYXRpdmUgY2hhbmdlcyBsaWtlIGxvZ2dpbmc/IE5vcGUuIENoYW5nZXMgdG8gY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0ICpkb24ndCogYWx0ZXIgZXhlY3V0aW9uPyBBaGEhIFdoaWxlIGBXUklURV9PTkNFYCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBjb21waWxlciwgaXQncyBsb2dpY2FsbHkgdGhlIHNhbWUuIFNvIHRoYXQncyB0aGUga2V5LiAgSXQgZml0cyB0aGUgY3JpdGVyaWEsIHNpbmNlIGl0J3MgYSBtYWNybyBhbmQgZG9lc24ndCBjaGFuZ2Ugd2hhdCB0aGUgY29kZSAqZG9lcyosIGp1c3QgaG93IHRoZSBjb21waWxlciAqc2VlcyogaXQuIEkgcXVpY2tseSByZW1lbWJlcmVkLCBkYXRhIHJhY2UgZml4ZXMgYXJlIGdlbmVyYWxseSBub3QgY29uc2lkZXJlZCBuZXcgZmVhdHVyZXMgdG8gZnV6eiwgdGhleSdyZSBidWdmaXhlcy5cblxuSW5pdGlhbGx5LCB0aGUgcG9zc2liaWxpdHkgb2YgYGZvbGlvX21pZ3JhdGVfa3NtYCwgYEtTTWAgYW5kIGBNSUdSQVRJT05gIGdvdCBtZSB0aGlua2luZyBhYm91dCBzZXR0aW5nIGBXb3J0aEZ1enppbmc9dHJ1ZWAgYW5kIHByb3ZpZGluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIGFuZCBmb2N1cyBzeW1ib2xzLiAgSSBhbG1vc3QgdG9vayB0aGUgXCJiZXR0ZXIgc2FmZSB0aGFuIHNvcnJ5XCIgYXBwcm9hY2ggYW5kIHNldCBpdCB0byBgdHJ1ZWAgZ2l2ZW4gdGhhdCBpdCB0b3VjaGVzIGNvcmUga2VybmVsIGxvZ2ljLlxuXG5UaGVuIEkgcGF1c2VkIHRvIHJlYWxseSBmb2N1cyBvbiB0aGUga2V5IHBhcnQgb2YgdGhlIHByb21wdCB0aGF0IGluc3RydWN0cyB3aGVuIEkgc2hvdWxkIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQgZXhwbGljaXRseSBtZW50aW9ucyBcImNoYW5nZXMgdG8gLi4uIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3dcIi4gQW5kIGBXUklURV9PTkNFYCAqaXMqIGEgbWFjcm8gdGhhdCAqZG9lc24ndCogYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93LCBvbmx5IHRoZSBtZW1vcnkgb3JkZXJpbmcuICBJIGRvdWJsZSBjaGVja2VkIHRoZSBwYXRjaCBhZ2Fpbi5cblxuYGBgY1xuLVx0Zm9saW8tXHUwMDNlbWFwcGluZyA9ICh2b2lkICopKCh1bnNpZ25lZCBsb25nKXN0YWJsZV9ub2RlIHwgRk9MSU9fTUFQUElOR19LU00pO1xuK1x0V1JJVEVfT05DRShmb2xpby1cdTAwM2VtYXBwaW5nLFxuK1x0XHQgICAodm9pZCAqKSgodW5zaWduZWQgbG9uZylzdGFibGVfbm9kZSB8IEZPTElPX01BUFBJTkdfS1NNKSk7XG5gYGBcblxuWWVwLCBpdCdzIGp1c3QgYFdSSVRFX09OQ0VgLlxuXG5GaW5hbGx5LCBJIGNvbnNpZGVyZWQgdGhhdCBgV1JJVEVfT05DRWAgbGlrZWx5IGFkZHJlc3NlZCBhIGRhdGEgcmFjZSB0aGF0IG1heWJlIEtDU0FOIG9yIG90aGVyIHRvb2xzIGhhZCBhbHJlYWR5IGlkZW50aWZpZWQuIElmIGl0J3MgYWxyZWFkeSBmaXhlZCwgZnV6emluZyB3b24ndCBmaW5kIHRoZSBzYW1lIGJ1Zy5cblxuU28sICpJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9ZmFsc2VgIHdpdGggdGhlIHJlYXNvbmluZyB0aGF0OiBcIlRoZSBwYXRjaCBvbmx5IGFkZHMgV1JJVEVfT05DRSBtYWNyb3MgdG8gZml4IGRhdGEgcmFjZXMsIHdoaWNoIGRvZXMgbm90IGZ1bmN0aW9uYWxseSBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgb3IgaW50cm9kdWNlIG5ldyBsb2dpYyB0byBmdXp6LlwiKlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODczLCJPdXRwdXRUb2tlbnMiOjY1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjE0OjI0LjA5MjM1MDI0M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyNDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgYWRkcyBXUklURV9PTkNFIG1hY3JvcyB0byBmaXggZGF0YSByYWNlcy4gVGhpcyBkb2VzIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IG9yIGludHJvZHVjZSBuZXcgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI0VDE0OjE0OjI0LjA5MjM4OTY3M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowsdw2g[1] Phase: Running StartedAt: 2026-08-24 14:14:35 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsdw2g[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-24 14:14:35 +0000 UTC FinishedAt: 2026-08-24 14:14:39 +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,}