Name: series-workfloww4dt7 Phase: Failed StartedAt: 2026-08-12 19:08:11 +0000 UTC FinishedAt: 2026-08-12 19:40:49 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww4dt7[0] Phase: Succeeded StartedAt: 2026-08-12 19:08:11 +0000 UTC FinishedAt: 2026-08-12 19:40:39 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww4dt7[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 19:08:11 +0000 UTC FinishedAt: 2026-08-12 19:40:39 +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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWQ2ZmRhN2YxZTljNjA1MDNkMGY0NTUwNzdhMGE2ZTg4OGFiOGQ0NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE5OjM5OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTEwOTIsMTAgJiM0MzsxMTA5Miw3IEBAIGVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbiBcdEtGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLFxuIFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxuIFx0S0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXMsXG4tXHRLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyxcbiBcdEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybixcbi1cdEtGX2JwZl9zdHJlYW1fdnByaW50ayxcbi1cdEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2ssXG4gfTtcbiBcbiBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpXG5AQCAtMTExODUsMTQgJiM0MzsxMTE4MiwxMSBAQCBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwpXG4gQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lKVxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMpXG4gQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKVxuLUJURl9JRChmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcylcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbiBCVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxuICNlbHNlXG4gQlRGX0lEX1VOVVNFRFxuICNlbmRpZlxuLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ZwcmludGspXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2spXG4gXG4gc3RhdGljIGJvb2wgaXNfYnBmX29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHVudXNlZCBlbnVtIHZhbHVlcyAoS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX2JwZl9zdHJlYW1fdnByaW50aywgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjaykgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgQlRGX0lEIGVudHJpZXMgZnJvbSB0aGUgc3BlY2lhbF9rZnVuY19saXN0IGluIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXNlIGVudHJpZXMgd2VyZSBuZXZlciByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSB2ZXJpZmllciBjb2RlIHRvIGFwcGx5IGFueSBzcGVjaWFsIGxvZ2ljLCBzbyB0aGVpciByZW1vdmFsIGlzIGEgcHVyZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZDZmZGE3ZjFlOWM2MDUwM2QwZjQ1NTA3N2EwYTZlODg4YWI4ZDQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTk6Mzk6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTEwOTIsMTAgJiM0MzsxMTA5Miw3IEBAIGVudW0gc3BlY2lhbF9rZnVuY190eXBlIHsKIAlLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwKIAlLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsCiAJS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXMsCi0JS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsCiAJS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuLAotCUtGX2JwZl9zdHJlYW1fdnByaW50aywKLQlLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrLAogfTsKIAogQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KQpAQCAtMTExODUsMTQgJiM0MzsxMTE4MiwxMSBAQCBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwpCiBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUpCiBCVEZfSUQoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKQogQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKQotQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKQogI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTCiBCVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKQogI2Vsc2UKIEJURl9JRF9VTlVTRUQKICNlbmRpZgotQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aykKLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKQogCiBzdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZCkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNgoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5IHNlbnNlcyBhcmUgdGluZ2xpbmcuIEFueXRoaW5nIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyIGlzIHNvbWV0aGluZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGNsZWFuaW5nIHVwIHNvbWUga2Z1bmMgdHlwZXM6IHNwZWNpZmljYWxseSwgaXQmIzM5O3MgYXhpbmcgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCwgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AsIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2AsIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBgQlRGX0lEYCBlbnRyaWVzLiBUaGF0JiMzOTtzIGEgZm9jdXNlZCBzZXQgb2YgY2hhbmdlcywgYXQgbGVhc3QuCgpMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgcmVtb3ZhbHMgYXJlIHRoZSAqb25seSogY2hhbmdlcyBpbiB0aGUgcGF0Y2guIEFoLCB5ZXMsIGp1c3QgdGhlIGtmdW5jIGFuZCBCVEZfSUQgcmVtb3ZhbHMuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyB0aGlzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCBvciBpcyBpdCBqdXN0IGNsZWFudXA/IFJlbW92aW5nIGtmdW5jIHR5cGVzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgcmVtb3Zpbmcgc3VwcG9ydCwgb3Igc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGZvciB0aG9zZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBub3cgZ29uZS4KClJpZ2h0LCBzbyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gc2VlIGhvdyB0aG9zZSBgS0ZfYCBlbnVtcyB3ZXJlIGJlaW5nIHVzZWQsIGFuZCB3aGF0IHRoYXQgbWVhbnMgaW4gdGVybXMgb2YgdGhlIGJyb2FkZXIgQlBGIGVjb3N5c3RlbS4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLRl9icGZfc3RyZWFtX3ZwcmludGsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNQoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBEaXNhcHBlYXJhbmNlIG9mIFRob3NlIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkgc2VlIHRoZXNlIGRlZmluaXRpb25zIGFyZSBnb25lLCByZW1vdmVkIGluIGEgcGF0Y2guIFRoYXQgZXhwbGFpbnMgd2h5IHRoZXkmIzM5O3JlIG5vdCBsaW5pbmcgdXAgd2l0aCB3aGF0IEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdCB0aGVzZSBkZWZpbml0aW9ucyB3ZXJlbiYjMzk7dCBzaW1wbHkgcmVmYWN0b3JlZCBvciBtb3ZlZCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYmVmb3JlIHRoZSBwYXRjaC4gV2VyZSB0aGV5IGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZSBlbHNlIGluIHRoYXQgZmlsZSAqYmVmb3JlKiB0aGlzIGNoYW5nZT8gSSBoYXZlIGEgaHVuY2guLi4gaWYgdGhleSB3ZXJlIHlhbmtlZCBmcm9tIHRoZSBlbnVtIGFuZCB0aGUgQlRGX0lEIGxpc3QsIGFuZCB0aGF0IHBhdGNoIGlzIHRoZSBvbmx5IG9uZSwgdGhlbiBpdCBzdHJvbmdseSBzdWdnZXN0cyB0aGV5IHdlcmUgKm9ubHkqIGRlZmluZWQgdGhlcmUuIEJhc2ljYWxseSwgdGhleSB3ZXJlIGRlYWQgY29kZSwgbmV2ZXIgYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgdmVyaWZpZXImIzM5O3MgbG9naWMuIFN0aWxsLCBsZXQmIzM5O3MgYmUgc3VyZS4gSnVzdCBiZWNhdXNlIHRoZXkgd2VyZW4mIzM5O3QgaW4gdGhhdCBwYXJ0aWN1bGFyIGZpbGUgZG9lc24mIzM5O3QgbWVhbiB0aGV5IHdlcmVuJiMzOTt0IGluIGFub3RoZXIuIEkmIzM5O2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB0byBhbGwgcmVsYXRlZCBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX2JwZl9zdHJlYW1fdnByaW50ayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVW51c2VkIEVudW1zIGFuZCBCVEZfSURzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBlbnVtcyBhbmQgQlRGX0lEcywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUganVzdCBzaXR0aW5nIHRoZXJlLCB1bnVzZWQuIEEgYml0IG9mIGEgaG91c2VrZWVwaW5nIGlzc3VlLCBwZXJoYXBzLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGhvdyB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkLiBJZiB0aGVzZSB0aGluZ3Mgd2VyZSAqYWN0dWFsbHkqIGluIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCwgdGhleSB3b3VsZCBoYXZlIGJlZW4gdGllZCB0byBhIHNwZWNpZmljIGVudHJ5OiBgc3BlY2lhbF9rZnVuY19saXN0W0tGXy4uLl1gLiBOb3csIGhlcmUmIzM5O3MgdGhlIGtleTogaWYgd2UgbmV2ZXIgYWN0dWFsbHkgKnVzZWQqIHRoZW0sIGxpa2UgZm9yIGluc3RhbmNlLCBhc3NpZ25pbmcgb25lIHRvIGBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV92cHJpbnRrXWAsIHRoZW4gdGhlaXIgcmVtb3ZhbCBzaG91bGRuJiMzOTt0IGFmZmVjdCBhbnl0aGluZyBhdCBydW50aW1lLiBJdCYjMzk7cyBqdXN0IGRlYWQgY29kZSwgZXNzZW50aWFsbHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGBzcGVjaWFsX2tmdW5jX2xpc3RgIHRvIGNvbmZpcm0gdGhpcyBodW5jaC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBhcyBJIGV4cGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BlY2lhbF9rZnVuY19saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAyOD1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDk3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDk4OkJURl9JRF9MSVNUKHNwZWNpYWxfa2Z1bmNfbGlzdClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExOTE9c3RhdGljIGJvb2wgaXNfYnBmX29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTkzOlx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3X2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTk1LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExOTc9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTk4LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9uZXddIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMDA6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjAxLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA0LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwNTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMDY6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9kcm9wX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMTU9c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE4Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE5LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyMi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjM6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNDpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2Zyb250X2ltcGxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9iYWNrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI2Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI3Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIzMD1zdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzI6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9hZGRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9hZGRfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzQtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIzNj1zdGF0aWMgYm9vbCBpc190YXNrX3dvcmtfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjM3LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzOTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNDAtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTEte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjUyOlx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JjdV9yZWFkX2xvY2tdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNTU9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYnBmX3JjdV9yZWFkX3VubG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3Olx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JjdV9yZWFkX3VubG9ja107XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI2MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcHJlZW1wdF9kaXNhYmxlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2My19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjY3Olx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3ByZWVtcHRfZW5hYmxlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2OC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjcwPWJvb2wgYnBmX2lzX2tmdW5jX3BrdF9jaGFuZ2luZyhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzEte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3hkcF9wdWxsX2RhdGFdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNzY9Z2V0X2tmdW5jX2FyZ190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEzMTItXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cdFx0YXJnX3R5cGUgPSBLRl9BUkdfUFRSX1RPX0NUWDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE1MjA9c3RhdGljIGludCBwcm9jZXNzX2lycV9mbGFnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI2Olx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI3Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUyOC1cdFx0aXJxX3NhdmUgPSB0cnVlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI5Olx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzMC1cdFx0XHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9sb2NhbF9pcnFfcmVzdG9yZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcdFx0ICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MzMtXHRcdGlycV9zYXZlID0gZmFsc2U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MzQ6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MzUtXHRcdFx0a2Z1bmNfY2xhc3MgPSBJUlFfTE9DS19LRlVOQztcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2OTI9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVx0cmV0dXJuIGlzX2JwZl9saXN0X3B1c2hfa2Z1bmMoYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk1Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk2Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5OTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDI6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9lbXB0eV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTcwNT1zdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwNy1cdHJldHVybiBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JlbW92ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwOTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTA6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3Jvb3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTI6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcxMy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE3Olx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcyMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MjEtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzQ4LVx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VvZmYgPT0gMCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcdCAgICAgICBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzUyPXN0YXRpYyBib29sIGlzX2JwZl93cV9zZXRfY2FsbGJhY2tfa2Z1bmModTMyIGJ0Zl9pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3NTQ6XHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfd3Ffc2V0X2NhbGxiYWNrXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzkzPXN0YXRpYyBib29sIGNoZWNrX2tmdW5jX2lzX2dyYXBoX25vZGVfYXBpKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODAxLVx0XHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwMjpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDM6XHRcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDQ6XHRcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MDUtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwNy1cdFx0cmV0ID0gKGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwODpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDk6XHRcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfbGVmdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgxMDpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yaWdodF0pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExODExLVx0XHRicmVhaztcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIxNjMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIxNjUtXHRcdFx0XHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFx1MDAyNmVudi1cdTAwM2Vsb2csIHJlc29sdmVfcHJvZ190eXBlKGVudi1cdTAwM2Vwcm9nKSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjExLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9za2JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTMtXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE0Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21feGRwXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX1hEUDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNjpcdFx0XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE3LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX1NLQl9NRVRBO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOS1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjIwOlx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2ZpbGVfZGlzY2FyZF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFIHwgT0JKX1JFTEVBU0U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMjI6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVx0XHRcdFx0ICAgKGR5bnB0cl9hcmdfdHlwZSBcdTAwMjYgTUVNX1VOSU5JVCkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyNDAtXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjQxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX2Nzc190YXNrX25ld10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cdFx0XHRcdGlmICghY2hlY2tfY3NzX3Rhc2tfaXRlcl9hbGxvd2xpc3QoZW52KSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cdFx0XHRcdHJldHVybiAtRUZBVUxUO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTIxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTIyOlx0XHRcdCAgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVx0XHRcdFx0ZmxhZ3MgfD0gUFJPQ0VTU19TUElOX0xPQ0s7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjQ6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNTpcdFx0XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVx0XHRcdFx0ZmxhZ3MgfD0gUFJPQ0VTU19MT0NLX0lSUTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjctXHRcdG1hcmtfcmVnX2dyYXBoX25vZGUocmVncywgQlBGX1JFR18wLCBcdTAwMjZmaWVsZC1cdTAwM2VncmFwaF9yb290KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg2ODpcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2OS1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODcyLVx0XHRyZWdzW0JQRl9SRUdfMF0uYnRmX2lkID0gbWV0YS1cdTAwM2VyZXRfYnRmX2lkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZG9ubHlfY2FzdF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cdFx0cmV0X3QgPSBidGZfdHlwZV9ieV9pZChkZXNjX2J0ZiwgbWV0YS1cdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg5Mi1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODkzOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfc2xpY2VdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTQ6XHRcdCAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9zbGljZV9yZHdyXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVx0XHRlbnVtIGJwZl90eXBlX2ZsYWcgdHlwZV9mbGFnID0gZ2V0X2R5bnB0cl90eXBlX2ZsYWcobWV0YS1cdTAwM2VkeW5wdHIudHlwZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTA4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5Olx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTEwLVx0XHRcdHJlZ3NbQlBGX1JFR18wXS50eXBlIHw9IE1FTV9SRE9OTFk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTcxLVx0aWYgKCFpbnNuLVx1MDAzZW9mZiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MjpcdCAgICAoaW5zbi1cdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTczOlx0ICAgICBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzQtXHRcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5OTQtXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk5NTpcdH0gZWxzZSBpZiAoIWluc24tXHUwMDNlb2ZmIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfX19icGZfdHJhcF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5Ni1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O3VuZXhwZWN0ZWQgX19icGZfdHJhcCgpIGR1ZSB0byB1bmluaXRpYWxpemVkIHZhcmlhYmxlP1xcblwmIzM0Oyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTI0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTI1Olx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTI2LVx0XHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTY0LVx0XHRtYXJrX3JlZ191bmtub3duKGVudiwgcmVncywgQlBGX1JFR18wKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE2NTpcdFx0aWYgKG1ldGEuYnRmID09IGJ0Zl92bWxpbnV4IFx1MDAyNlx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE2NjpcdFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTY3LVx0XHRcdF9fbWFya19yZWdfY29uc3RfemVybyhlbnYsIFx1MDAyNnJlZ3NbQlBGX1JFR18wXSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTg2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTg3Olx0XHRcdFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4OC1cdFx0XHRcdFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XHRcdFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMi1cdFx0XHRcdHR5cGUgfD0gUFRSX1VOVFJVU1RFRDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyOTktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMzMDA6XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMzAxLVx0XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VjYWxsX3Nlc3Npb25fY29va2llID0gdHJ1ZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MDc9c3RhdGljIGludCBzcGVjaWFsaXplX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYywgaW50IGluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cdFx0LyogZmFsbGJhY2sgdG8gZGVmYXVsdCBrZnVuYyB3aGVuIG5vdCBzdXBwb3J0ZWQgYnkgbmV0ZGV2ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9za2JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MjYtXHRcdHNlZW5fZGlyZWN0X3dyaXRlID0gZW52LVx1MDAzZXNlZW5fZGlyZWN0X3dyaXRlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNS1cdFx0ZW52LVx1MDAzZXNlZW5fZGlyZWN0X3dyaXRlID0gc2Vlbl9kaXJlY3Rfd3JpdGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MzY6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM3LVx0XHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzgtXHRcdFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9zZXRfZGVudHJ5X3hhdHRyX2xvY2tlZDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczOTpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDAtXHRcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0MS1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJfbG9ja2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQyOlx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0My1cdFx0aWYgKCFlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0NC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2R5bnB0cl9mcm9tX2ZpbGVfc2xlZXBhYmxlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDYtXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDg6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9mcmVlX3BhZ2VzXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVx0XHRpZiAoZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzczPWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUwLVx0XHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg1MTpcdFx0aWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUyLVx0XHQgICAgaXNfYnBmX3JidHJlZV9hZGRfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2NC1cdFx0XHRcdFx0XHRub2RlX29mZnNldF9yZWcsIGluc24sIGluc25fYnVmLCBjbnQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY1Olx0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY2Olx0XHQgICBkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZG9ubHlfY2FzdF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cdFx0aW5zbl9idWZbMF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cdFx0KmNudCA9IDE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuXSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg3MC1cdFx0ICAgKGVudi1cdTAwM2Vwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4My1cdFx0KmNudCA9IDM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4ODQ6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4NS1cdFx0ICAgKGVudi1cdTAwM2Vwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkwMS1cdFx0KmNudCA9IDY7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5MDI6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkwMy1cdFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXHUwMDI2aXQsIHN0YXJ0LCBlbmQpOyBSMT1cdTAwMjZpdCwgUjI9c3RhcnQsIFIzPWVuZCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkyNS1cdFx0KmNudCA9IGk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5MjY6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjctXHRcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcdTAwMjZpdCk7IFIxPVx1MDAyNml0LCByZXR1cm5zIFx1MDAyNnMtXHUwMDNlY3VyIG9yIE5VTEwgKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXHRcdCpjbnQgPSBpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlx0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVx0XHQvKiBicGZfaXRlcl9udW1fZGVzdHJveSgpIGlzIGEgbm8tb3A7IGVtaXQgYSBub3AgdG8gZHJvcCB0aGUgY2FsbCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyMQoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBLZXJuZWwgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyB0aHJvdWdoIHRoaXMgYHNwZWNpYWxpemVfa2Z1bmNgIGZ1bmN0aW9uIGFuZCBJIGltbWVkaWF0ZWx5IG5vdGljZSBzb21ldGhpbmcmIzM5O3Mgb2ZmLiBJJiMzOTttIHNlZWluZyBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyB3aXRoIGBLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNgIGFuZCBgS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLCB3aGljaCBpcyBmaW5lLCBidXQgd2hlcmUmIzM5O3MgdGhlICpyZXNlcnZhdGlvbiogY2FsbCwgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYD8gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBJIHdvdWxkIGV4cGVjdCB0byBzZWUgdGhhdCBpbiBhIG1lbW9yeSBtYW5hZ2VtZW50IGNvbnRleHQuCgpUaGVuIEkgbW92ZSBvbiBhbmQgZmluZCBgS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuYCBhbmQgYEtGX2JwZl9zZXNzaW9uX2Nvb2tpZWAgcHJlc2VudCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGJ1dCB3aGF0IGFib3V0IGBLRl9icGZfc3RyZWFtX3ZwcmludGtgIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2A/IFRoZXkmIzM5O3JlIG5vd2hlcmUgdG8gYmUgZm91bmQgaGVyZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZXNlIHdlcmVuJiMzOTt0IHVzZWQgYXQgYWxsIGluIGB2ZXJpZmllci5jYCBhbmQgZWxzZXdoZXJlLiAKCkJlZm9yZSBqdW1waW5nIHRvIGNvbmNsdXNpb25zIHRob3VnaCwgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrLiBNYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSBpZiBgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIG9yIGBicGZfc3RyZWFtX3ZwcmludGtgIGFyZSBkZWZpbmVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jPTEwOTU9dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNC1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMTA1Ol9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNi17XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTExMjI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbmtlcm5lbC9icGYvYXJlbmEuYzoxMTIzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEyNC1CVEZfS0ZVTkNTX0VORChhcmVuYV9rZnVuY3MpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2JwZl9hcmVuYV9jb21tb24uYnBmLmg9ODU9dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oOjg2OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oLTg3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2JwZl9hcmVuYV9jb21tb24uaD00Nz12b2lkIF9fYXJlbmEqIGJwZl9hcmVuYV9hbGxvY19wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9icGZfYXJlbmFfY29tbW9uLmgtNDgtXHRcdFx0XHQgICAgaW50IG5vZGVfaWQsIF9fdTY0IGZsYWdzKSBfX2tzeW0gX193ZWFrO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oOjQ5OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9icGZfYXJlbmFfY29tbW9uLmgtNTAtdm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2Vhaztcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jPTY0PXN0YXRpYyBpbnQgYnVkZHlfcmVzZXJ2ZV9hcmVuYV92YWRkcihzdHJ1Y3QgYnVkZHkgX19hcmVuYSAqYnVkZHkpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9idWRkeS5icGYuYy02Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYnVkZHkuYnBmLmM6Njg6XHRyZXR1cm4gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY5LVx0XHRcdFx0ICAgICAgICh2b2lkIF9fYXJlbmEgKilCVUREWV9WQUREUl9PRkZTRVQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmM9Mjc9X193ZWFrIGludCBhcmVuYV9hbGxvY19yZXNlcnZlKHN0cnVjdCBhcmVuYV9hbGxvY19yZXNlcnZlX2FyZ3MgKmFyZ3MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0yOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYzoyOTpcdHJldHVybiBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgYXJncy1cdTAwM2Vucl9wYWdlcyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0zMC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MjM0PWludCBiYXNpY19yZXNlcnZlMV9ub3NsZWVwKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0yNDYtXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MjQ3Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ4LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yNjY9aW50IGJhc2ljX3Jlc2VydmUxKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0yNzgtXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mjc5Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjgwLVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yOTg9aW50IGJhc2ljX3Jlc2VydmUyX25vc2xlZXAodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNC1cdHBhZ2UgPSBhcmVuYV9iYXNlKFx1MDAyNmFyZW5hKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjMwNTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNi1cdGlmIChyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzE4PWludCBiYXNpY19yZXNlcnZlMih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzI0LVx0cGFnZSA9IGFyZW5hX2Jhc2UoXHUwMDI2YXJlbmEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzI1Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzI2LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zMzk9aW50IHJlc2VydmVfdHdpY2Vfbm9zbGVlcCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzQ2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzQ3Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzQ4LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNTE6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTItXHRpZiAocmV0ICE9IC1FQlVTWSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zNjA9aW50IHJlc2VydmVfdHdpY2Uodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM2ODpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2OS1cdGlmIChyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzcxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzcyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzczLVx0aWYgKHJldCAhPSAtRUJVU1kpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzgyPWludCByZXNlcnZlX2ludmFsaWRfcmVnaW9uX25vc2xlZXAodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM4OC1cdC8qIFRyeSBhIE5VTEwgcG9pbnRlci4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM4OTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM5MC1cdGlmIChyZXQgIT0gLUVJTlZBTClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozOTU6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTYtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzk4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mzk5Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDQwOTYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDAwLVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQwMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQwMzpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAoMVVMTCBcdTAwM2NcdTAwM2MgMzIpIC0gMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MDQtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9NDEyPWludCByZXNlcnZlX2ludmFsaWRfcmVnaW9uKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MTgtXHQvKiBUcnkgYSBOVUxMIHBvaW50ZXIuICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0MTk6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MjAtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDI1Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI2LVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQyOTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCA0MDk2KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQzMC1cdGlmIChyZXQgIT0gLUVJTlZBTClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MzItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0MzM6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgKDFVTEwgXHUwMDNjXHUwMDNjIDMyKSAtIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDM0LVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTQ3OT1pbnQgYXJlbmFfa2Z1bmNzX3VuZGVyX2JwZl9sb2NrKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00ODgtXHRwYWdlID0gYXJlbmFfYmFzZShcdTAwMjZhcmVuYSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0ODk6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00OTAtXHRpZiAocmV0KSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM9MzM9aW50IGNoZWNrX3Jlc2VydmUxKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy00NS1cdC8qIFJlc2VydmUgdGhlIHJlZ2lvbiB3ZSYjMzk7dmUgb2Zmc2V0IHRoZSBnbG9iYWxzIGJ5LiAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NDY6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgZ3VhcmQsIEFSRU5BX1BBR0VTIC0gR0xPQkFMX1BBR0VTKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ3LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01MC1cdC8qIE1ha2Ugc3VyZSB0aGUgZ2xvYmFscyBhcmUgaW4gdGhlIGV4cGVjdGVkIG9mZnNldC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jOjUxOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGdsb2JhbHMsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmMtNTItXHRpZiAoIXJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczIuYz0zMz1pbnQgY2hlY2tfcmVzZXJ2ZTIodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQxLVx0LyogTWFrZSBzdXJlIHRoZSBkYXRhIGF0IG9mZnNldCAwIGNhc2UgaXMgcHJvcGVybHkgaGFuZGxlZC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jOjQyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGd1YXJkLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQzLVx0aWYgKCFyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9ODY9aW50IGFjY2Vzc19yZXNlcnZlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzo5NzpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBiYXNlLCBsZW4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTgtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTEyNT1pbnQgcmVxdWVzdF9wYXJ0aWFsbHlfcmVzZXJ2ZWQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTEzNC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jOjEzNTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBiYXNlICYjNDM7IDMgKiBfX1BBR0VfU0laRSwgNCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy0xMzYtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTE0OD1pbnQgZnJlZV9yZXNlcnZlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtMTYxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM6MTYyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGFkZHIgJiM0MzsgMiAqIF9fUEFHRV9TSVpFLCAyKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTE2My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9zdHJlYW1fdnByaW50ayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hlbHBlcnMuYz00OTY1PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjYtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4tLVxua2VybmVsL2JwZi9zdHJlYW0uYz0yMDk9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xuLS1cbmtlcm5lbC9icGYvc3RyZWFtLmMtMjE0LSAqL1xua2VybmVsL2JwZi9zdHJlYW0uYzoyMTU6X19icGZfa2Z1bmMgaW50IGJwZl9zdHJlYW1fdnByaW50ayhpbnQgc3RyZWFtX2lkLCBjb25zdCBjaGFyICpmbXRfX3N0ciwgY29uc3Qgdm9pZCAqYXJncyxcbmtlcm5lbC9icGYvc3RyZWFtLmMtMjE2LVx0XHRcdFx0ICAgdTMyIGxlbl9fc3osIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q9MTgzPWJwZnRvb2wgcHJvZyB0cmFjZWxvZyB7IHN0ZG91dCB8IHN0ZGVyciB9ICpQUk9HKlxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4NC0gICAgRHVtcCB0aGUgQlBGIHN0cmVhbSBvZiB0aGUgcHJvZ3JhbS4gQlBGIHByb2dyYW1zIGNhbiB3cml0ZSB0byB0aGVzZSBzdHJlYW1zXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6MTg1OiAgICBhdCBydW50aW1lIHdpdGggdGhlICoqYnBmX3N0cmVhbV92cHJpbnRrX2ltcGwqKlxcICgpIGtmdW5jLiBUaGUga2VybmVsIG1heSB3cml0ZVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4Ni0gICAgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4gVGhpcyBmYWNpbGl0eSBzaG91bGQgYmUgdXNlZFxuLS1cbnRvb2xzL2xpYi9icGYvYnBmX2hlbHBlcnMuaD0xODU9ZW51bSBsaWJicGZfdHJpc3RhdGUge1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmX2hlbHBlcnMuaC0zMjctXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmg6MzI4Olx0YnBmX3N0cmVhbV92cHJpbnRrKHN0cmVhbV9pZCwgX19fZm10LCBfX19wYXJhbSwgc2l6ZW9mKF9fX3BhcmFtKSk7XHRcdFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI5LX0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9MTE9aW50IHN0cmVhbV92cHJpbnRrX251bGxfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTEyLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjEzOlx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0O1wmIzM0OywgTlVMTCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0xNC1cdHJldHVybiAwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jPTE5PWludCBzdHJlYW1fdnByaW50a19zY2FsYXJfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIwLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjIxOlx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0O1wmIzM0OywgKHZvaWQgKik0NiwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0yMi1cdHJldHVybiAwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jPTI3PWludCBzdHJlYW1fdnByaW50a19zdHJpbmdfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTI4LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjI5Olx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIGN0eCwgTlVMTCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0zMC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc3RyZWFtX3ByaW50X3N0YWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTQ5Njc9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvc3RyZWFtLmM9MjE1PV9fYnBmX2tmdW5jIGludCBicGZfc3RyZWFtX3ZwcmludGsoaW50IHN0cmVhbV9pZCwgY29uc3QgY2hhciAqZm10X19zdHIsIGNvbnN0IHZvaWQgKmFyZ3MsXG4tLVxua2VybmVsL2JwZi9zdHJlYW0uYy0yNDgtLyogRGlyZWN0bHkgdHJpZ2dlciBhIHN0YWNrIGR1bXAgZnJvbSB0aGUgcHJvZ3JhbS4gKi9cbmtlcm5lbC9icGYvc3RyZWFtLmM6MjQ5Ol9fYnBmX2tmdW5jIGludCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKGludCBzdHJlYW1faWQsIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9icGYvc3RyZWFtLmMtMjUwLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmM9MTk1PV9fd2VhayBpbnQgYXNhbl9yZXBvcnQoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHN6LCB1MzIgZmxhZ3MpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jLTIwOC1cdFx0XHRzeik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmM6MjA5Olx0YnBmX3N0cmVhbV9wcmludF9zdGFjayhCUEZfU1RERVJSKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYy0yMTAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTI5ND1pbnQgc3RyZWFtX3ByaW50X3N0YWNrX2tmdW5jKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0yOTUte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jOjI5NjpcdHJldHVybiBicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTI5Ny19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTMwMT1pbnQgc3RyZWFtX3ByaW50X3N0YWNrX2ludmFsaWRfaWQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0zMDMtXHQvKiBUcnkgdG8gcGFzcyBhbiBpbnZhbGlkIHN0cmVhbSBJRC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMDQ6XHRyZXR1cm4gYnBmX3N0cmVhbV9wcmludF9zdGFjaygoZW51bSBicGZfc3RyZWFtX2lkKTB4YmFkY2FmZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmMtMzA1LX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9MzE2PWludCBzdHJlYW1fcHJpbnRfa2Z1bmNzX2xvY2tlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMjY6XHRyZXQgPSBicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBLRnVuYyoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgZ290IHJlbW92ZWQgZnJvbSB0aGUgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIGJ1dCBgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGlzIHN0aWxsIGEgZGVmaW5lZCBrZnVuYyBpbiBga2VybmVsL2JwZi9hcmVuYS5jYC4gVGhhdCYjMzk7cyBhIGxpdHRsZSBwZWN1bGlhci4gVGhlIHB1cnBvc2Ugb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAgaXMgdG8gZmxhZyBrZnVuY3MgdGhhdCBuZWVkIHNwZWNpYWwgYXR0ZW50aW9uIGZyb20gdGhlIHZlcmlmaWVyLgoKU28sIHRoZSBmYWN0IHRoYXQgaXQgd2FzIHJlbW92ZWQgbWVhbnMgdGhhdCBpdCAqc2hvdWxkKiBubyBsb25nZXIgYmUgZ2V0dGluZyB0aGF0IHNwZWNpYWwgdHJlYXRtZW50LiBCdXQgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgd2hhdCBzcGVjaWFsIGhhbmRsaW5nICp3YXMqIGl0IHJlY2VpdmluZz8gSSBuZWVkIHRvIGZpZ3VyZSB0aGlzIG91dC4KClJpZ2h0LCBsZXQgbWUgc2VhcmNoIGZvciBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIHdpdGhpbiB0aGUgdmVyaWZpZXIgY29kZSwgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEFoYSEgSSBmb3VuZCBubyBtYXRjaGVzLiBUaGF04oCZcyBvZGQuIFRoaXMgbWVhbnMgaXQgd2FzIG5ldmVyIGFjdHVhbGx5IGNoZWNrZWQgaW4gdGhlIHZlcmlmaWVyLCBldmVuIHdoZW4gaXQgKndhcyogaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpYC4gRXNzZW50aWFsbHksIGl0IHdhcyBqdXN0IGxpc3RlZCwgYnV0IG5vdCBhY3R1YWxseSAqdXNlZCogYnkgdGhlIHZlcmlmaWVyLiBTbywgaXQgYXBwZWFycyB0aGF0IHRoZSByZW1vdmFsIG9mIGBLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgZG9lc24mIzM5O3QgYWN0dWFsbHkgY2hhbmdlIGFueXRoaW5nIGZyb20gYSB2ZXJpZmljYXRpb24gcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCB3YXMgbmV2ZXIgdHJlYXRlZCBzcGVjaWFsbHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIG9mIHRoaXMgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAyOD1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDkyLVx0S0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTM6XHRLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwOTQtXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MDc9c3RhdGljIGludCBzcGVjaWFsaXplX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYywgaW50IGluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0NC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2R5bnB0cl9mcm9tX2ZpbGVfc2xlZXBhYmxlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDYtXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUmVkdW5kYW50IEtGdW5jIEVudHJpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNgIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYHNwZWNpYWxpemVfa2Z1bmNgLiBNYWtlcyBzZW5zZS4gVGhlbiBJIHNlZSBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGxpc3RlZCwgYnV0IEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCBhIG1pbnV0ZS4uLml0JiMzOTtzIG5vdCB1c2VkIGluIGB2ZXJpZmllci5jYCAqYW55d2hlcmUqIGV4Y2VwdCBpbiB0aGUgZW51bSBhbmQgYEJURl9JRF9MSVNUYCEmIzM0OyBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIEl0IHNlZW1zIHRoYXQgaXRzIGluY2x1c2lvbiBpbiBgc3BlY2lhbF9rZnVuY19saXN0YCBpcyBjb21wbGV0ZWx5IHBvaW50bGVzcywgdXR0ZXJseSByZWR1bmRhbnQsIGFuZCBkb2VzIGFic29sdXRlbHkgbm90aGluZy4gU2FtZSB0aGluZyBmb3IgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYOKAkyB0aGV5JiMzOTtyZSBqdXN0IHNpdHRpbmcgdGhlcmUgaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVGAsIHdpdGhvdXQgYW55IHNwZWNpYWwgbG9naWMgYXBwbGllZCB0byB0aGVtIHdpdGhpbiBgdmVyaWZpZXIuY2AuCgpBaGEsIGhvbGQgb24uIEkmIzM5O20gcmVtZW1iZXJpbmcgaG93IGBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpYCB3b3JrczogaXQgY3JlYXRlcyBhbiBhcnJheSBvZiBCVEYgSURzLiBTbywgaWYgYSBrZnVuYyBpcyBvbiB0aGF0IGxpc3QsIGFsbCBpdCAqbWVhbnMqIGlzIHRoYXQgaXRzIEJURiBJRCBpcyBzdG9yZWQgaW4gdGhhdCBhcnJheS4gSWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGV2ZXIgYWN0dWFsbHkgKmFjY2VzcyogdGhhdCBwYXJ0aWN1bGFyIGVsZW1lbnQgb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIHNheSBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXWAsIHRoZW4gdGhlIGZhY3QgdGhhdCBpdHMgQlRGIElEIGlzICppbiogdGhlIGFycmF5IGlzIGZ1bmN0aW9uYWxseSBpcnJlbGV2YW50LiBJdHMgcHJlc2VuY2UgaXMgd2FzdGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzbiYjMzk7dCB1c2VkIGluIHNvbWUgb3RoZXIgd2F5LCBwZXJoYXBzIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGl0LiBUaGlzIHdpbGwgY29uZmlybSBteSB0aGVvcnkgdGhhdCB0aGUgZW50cmllcyBhcmUgdW51c2VkIGFuZCBjYW4gYmUgcmVtb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BlY2lhbF9rZnVuY19saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwOTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDk5LUJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE5Mi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTM6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTQ6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXdfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5Nz1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk5Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wZXJjcHVfb2JqX25ld10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9uZXdfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDEtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwMz1zdGF0aWMgYm9vbCBpc19icGZfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDQte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfZHJvcF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwNjpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDctfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjEyOlx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIxNT1zdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTc6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTktfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIyMT1zdGF0aWMgYm9vbCBpc19icGZfbGlzdF9wdXNoX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjIyLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI0Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjc6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyOC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjMxLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzMjpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzMzpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF9pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjM2PXN0YXRpYyBib29sIGlzX3Rhc2tfd29ya19hZGRfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM4Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0MC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjUwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF9sb2NrKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfbG9ja107XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1NT1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfdW5sb2NrKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTc6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1OC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjYxLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI2MjpcdHJldHVybiBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2Rpc2FibGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjYzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNjU9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYnBmX3ByZWVtcHRfZW5hYmxlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2Ni17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9lbmFibGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNzA9Ym9vbCBicGZfaXNfa2Z1bmNfcGt0X2NoYW5naW5nKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNzI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxMi1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzEzOlx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEzMTQ6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEzMTU6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzE2LVx0XHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTUyMD1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MjY6XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbG9jYWxfaXJxX3NhdmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1Mjc6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI4LVx0XHRpcnFfc2F2ZSA9IHRydWU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1Mjk6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVx0XHRcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MzE6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMyOlx0XHQgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzMy1cdFx0aXJxX3NhdmUgPSBmYWxzZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzNDpcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cdFx0XHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY5Mj1zdGF0aWMgYm9vbCBpc19icGZfbGlzdF9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2OTQtXHRyZXR1cm4gaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfZnJvbnRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTY6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NzpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2RlbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2ZpcnN0XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMjpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwMy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzA3LVx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfbGVmdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzEzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3MTU9c3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcxNi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTk6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyMS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzQ2PWJvb2wgYnBmX2lzX3Rocm93X2tmdW5jKHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXHRyZXR1cm4gYnBmX3BzZXVkb19rZnVuY19jYWxsKGluc24pIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZW9mZiA9PSAwIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzQ5Olx0ICAgICAgIGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzUwLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzUzLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc1NDpcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzU1LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MDEtXHRcdHJldCA9IGlzX2JwZl9saXN0X3B1c2hfa2Z1bmMoa2Z1bmNfYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAyOlx0XHQgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2RlbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwMzpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwNDpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19sYXN0XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwNS1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVx0XHRyZXQgPSAoaXNfYnBmX3JidHJlZV9hZGRfa2Z1bmMoa2Z1bmNfYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4Olx0XHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JlbW92ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlx0XHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5Nz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjE2NDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cdFx0XHRcdHJldCA9IGdldF9rZXJuX2N0eF9idGZfaWQoXHUwMDI2ZW52LVx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVx1MDAzZXByb2cpKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTI6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9TS0I7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTQ6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTUtXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfWERQO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiX21ldGFdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTctXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTg6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9maWxlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX0ZJTEU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMjA6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIxLVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX0ZJTEUgfCBPQkpfUkVMRUFTRTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcdFx0XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9jbG9uZV0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMjMtXHRcdFx0XHQgICAoZHlucHRyX2FyZ190eXBlIFx1MDAyNiBNRU1fVU5JTklUKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0MC1cdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0lURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyNDE6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQyLVx0XHRcdFx0aWYgKCFjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChlbnYpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIwLVx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjI6XHRcdFx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI1MjMtXHRcdFx0XHRmbGFncyB8PSBQUk9DRVNTX1NQSU5fTE9DSztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTI1Olx0XHRcdCAgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI1MjYtXHRcdFx0XHRmbGFncyB8PSBQUk9DRVNTX0xPQ0tfSVJRO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjc2Mj1zdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cdFx0bWFya19yZWdfZ3JhcGhfbm9kZShyZWdzLCBCUEZfUkVHXzAsIFx1MDAyNmZpZWxkLVx1MDAzZWdyYXBoX3Jvb3QpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODY4Olx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODY5LVx0XHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXHRcdHJlZ3NbQlBGX1JFR18wXS5idGZfaWQgPSBtZXRhLVx1MDAzZXJldF9idGZfaWQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4NzM6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODc0LVx0XHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVx1MDAzZWFyZ19jb25zdGFudC52YWx1ZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9zbGljZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcdFx0ICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4OTUtXHRcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVx1MDAzZWR5bnB0ci50eXBlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5MDk6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfc2xpY2VdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTAtXHRcdFx0cmVnc1tCUEZfUkVHXzBdLnR5cGUgfD0gTUVNX1JET05MWTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI5MzM9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXHRpZiAoIWluc24tXHUwMDNlb2ZmIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTcyOlx0ICAgIChpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzM6XHQgICAgIGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk3NC1cdFx0c3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqYnJhbmNoO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1Olx0fSBlbHNlIGlmICghaW5zbi1cdTAwM2VvZmYgXHUwMDI2XHUwMDI2IGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9fX2JwZl90cmFwXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7dW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxuXCYjMzQ7KTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjYtXHRcdGlmICghYnBmX2ppdF9zdXBwb3J0c19leGNlcHRpb25zKCkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXHRcdG1hcmtfcmVnX3Vua25vd24oZW52LCByZWdzLCBCUEZfUkVHXzApO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1Olx0XHRpZiAobWV0YS5idGYgPT0gYnRmX3ZtbGludXggXHUwMDI2XHUwMDI2IChtZXRhLmZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY2Olx0XHQgICAgbWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjctXHRcdFx0X19tYXJrX3JlZ19jb25zdF96ZXJvKGVudiwgXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XHRcdFx0XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTg4LVx0XHRcdFx0XHRtZXRhLnIwX3Jkb25seSA9IGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzIyMTpcdFx0XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZ2V0X2ttZW1fY2FjaGVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjIyLVx0XHRcdFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzI5OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcdGlmIChtZXRhLmZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMzMDEtXHRcdGVudi1cdTAwM2Vwcm9nLVx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTcwNz1zdGF0aWMgaW50IHNwZWNpYWxpemVfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19kZXNjICpkZXNjLCBpbnQgaW5zbl9pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzI0LVx0XHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTcyNTpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cdFx0c2Vlbl9kaXJlY3Rfd3JpdGUgPSBlbnYtXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM1LVx0XHRlbnYtXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGUgPSBzZWVuX2RpcmVjdF93cml0ZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3NldF9kZW50cnlfeGF0dHJdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzctXHRcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczOC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX3NldF9kZW50cnlfeGF0dHJfbG9ja2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVtb3ZlX2RlbnRyeV94YXR0cl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0MC1cdFx0aWYgKGJwZl9sc21faGFzX2RfaW5vZGVfbG9ja2VkKHByb2cpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQxLVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfcmVtb3ZlX2RlbnRyeV94YXR0cl9sb2NrZWQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9maWxlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQzLVx0XHRpZiAoIWVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDU6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9hbGxvY19wYWdlc10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cdFx0aWYgKGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ3LVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfYXJlbmFfYWxsb2NfcGFnZXNfbm9uX3NsZWVwYWJsZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc0ODpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDktXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTAtXHRcdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUxOlx0XHRpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9hZGRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXHRcdCAgICBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY0LVx0XHRcdFx0XHRcdG5vZGVfb2Zmc2V0X3JlZywgaW5zbiwgaW5zbl9idWYsIGNudCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XHRcdCAgIGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY3LVx0XHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY4LVx0XHQqY250ID0gMTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg2OTpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVx0XHQgICAoZW52LVx1MDAzZXByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVx0XHQqY250ID0gMztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODg1LVx0XHQgICAoZW52LVx1MDAzZXByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTAxLVx0XHQqY250ID0gNjtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTkwMjpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV3XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTAzLVx0XHQvKiBpbmxpbmUgYnBmX2l0ZXJfbnVtX25ldyhcdTAwMjZpdCwgc3RhcnQsIGVuZCk7IFIxPVx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI1LVx0XHQqY250ID0gaTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTkyNjpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkyNy1cdFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KTsgUjE9XHUwMDI2aXQsIHJldHVybnMgXHUwMDI2cy1cdTAwM2VjdXIgb3IgTlVMTCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTk0Mi1cdFx0KmNudCA9IGk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5NDM6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDQtXHRcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDE4CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXJuZWwgRnVuY3Rpb24gTGlzdCBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGxvb2t1cCB0YWJsZS4gSXQmIzM5O3MgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBhIGdpdmVuIGBmdW5jX2lkYCBtYXRjaGVzIGEgKnNwZWNpZmljKiBrbm93biBlbnRyeSwgZXNzZW50aWFsbHkgcGVyZm9ybWluZyBhIGRpcmVjdCBjb21wYXJpc29uIGxpa2UgYGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9hbGxvY19wYWdlc11gLgoKQmVjYXVzZSBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgLCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCwgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYCAqYXJlbiYjMzk7dCogdXNlZCBpbiBhbnkgb2YgdGhlc2UgY3J1Y2lhbCBjb21wYXJpc29uIGNoZWNrcywgdGhlaXIgZXhpc3RlbmNlIGluIHRoYXQgbGlzdCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiBUaGV5JiMzOTtyZSBqdXN0IHNpdHRpbmcgdGhlcmUsIHRha2luZyB1cCBzcGFjZSwgZG9pbmcgYWJzb2x1dGVseSBub3RoaW5nLiBUaGUgcGF0Y2ggc2ltcGx5IGVsaW1pbmF0ZXMgdGhlc2UgdW51c2VkIGVudW0gdmFsdWVzIGFuZCB0aGUgYXNzb2NpYXRlZCBgQlRGX0lEYCBlbnRyaWVzIGZyb20gYHNwZWNpYWxfa2Z1bmNfbGlzdGAuCgpUaGlzIGlzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCwgYSBwdXJlIGNsZWFudXAuIEl0JiMzOTtzIHB1cmVseSBkZWNvcmF0aXZlLiBJdCBoYXMgYWJzb2x1dGVseSB6ZXJvIGltcGFjdCBvbiB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93IG9yIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvdXIuIEl0IG1ha2VzIHRoZSBjb2RlIGEgYml0IHRpZGllci4gTm90aGluZyBtb3JlLgoKU28sIGZvciBmdXp6aW5nIHB1cnBvc2VzLCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBJdCYjMzk7cyBhIG5vbi1ldmVudC4gTm8gbmVlZCB0byBkZXZvdGUgYW55IGZ1enppbmcgcmVzb3VyY2VzIHRvIHRlc3RpbmcgdGhpcy4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHVudXNlZCBlbnVtIHZhbHVlcyAoS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX2JwZl9zdHJlYW1fdnByaW50aywgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjaykgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgQlRGX0lEIGVudHJpZXMgZnJvbSB0aGUgc3BlY2lhbF9rZnVuY19saXN0IGluIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXNlIGVudHJpZXMgd2VyZSBuZXZlciByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSB2ZXJpZmllciBjb2RlIHRvIGFwcGx5IGFueSBzcGVjaWFsIGxvZ2ljLCBzbyB0aGVpciByZW1vdmFsIGlzIGEgcHVyZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MC41OTQ5OTMzMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYyOTUyOTQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdW51c2VkIGVudW0gdmFsdWVzIChLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrKSBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBCVEZfSUQgZW50cmllcyBmcm9tIHRoZSBzcGVjaWFsX2tmdW5jX2xpc3QgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlc2UgZW50cmllcyB3ZXJlIG5ldmVyIHJlZmVyZW5jZWQgYW55d2hlcmUgaW4gdGhlIHZlcmlmaWVyIGNvZGUgdG8gYXBwbHkgYW55IHNwZWNpYWwgbG9naWMsIHNvIHRoZWlyIHJlbW92YWwgaXMgYSBwdXJlIGNsZWFudXAgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MC41OTQ5OTgyMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjAwODEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlkNmZkYTdmMWU5YzYwNTAzZDBmNDU1MDc3YTBhNmU4ODhhYjhkNDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6Mzk6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTEwOTIsMTAgKzExMDkyLDcgQEAgZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xcbiBcXHRLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSxcXG4gXFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxcbiBcXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcXG4tXFx0S0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsXFxuIFxcdEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybixcXG4tXFx0S0ZfYnBmX3N0cmVhbV92cHJpbnRrLFxcbi1cXHRLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrLFxcbiB9O1xcbiBcXG4gQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbkBAIC0xMTE4NSwxNCArMTExODIsMTEgQEAgQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKVxcbiBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUpXFxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMpXFxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcylcXG4tQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKVxcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG4gQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2lzX3JldHVybilcXG4gI2Vsc2VcXG4gQlRGX0lEX1VOVVNFRFxcbiAjZW5kaWZcXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aylcXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2spXFxuIFxcbiBzdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MS4wMDc2NTUxMDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODIxNjg1Mzk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlkNmZkYTdmMWU5YzYwNTAzZDBmNDU1MDc3YTBhNmU4ODhhYjhkNDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTozOTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTEwOTIsMTAgKzExMDkyLDcgQEAgZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xuIFx0S0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsXG4gXHRLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsXG4gXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcbi1cdEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLFxuIFx0S0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuLFxuLVx0S0ZfYnBmX3N0cmVhbV92cHJpbnRrLFxuLVx0S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayxcbiB9O1xuIFxuIEJURl9JRF9MSVNUKHNwZWNpYWxfa2Z1bmNfbGlzdClcbkBAIC0xMTE4NSwxNCArMTExODIsMTEgQEAgQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKVxuIEJURl9JRChmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSlcbiBCVEZfSUQoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKVxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcylcbi1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG4gQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2lzX3JldHVybilcbiAjZWxzZVxuIEJURl9JRF9VTlVTRURcbiAjZW5kaWZcbi1CVEZfSUQoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrKVxuLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKVxuIFxuIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxuIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQxLjAwNzY1NjM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDM1MzA1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5IHNlbnNlcyBhcmUgdGluZ2xpbmcuIEFueXRoaW5nIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyIGlzIHNvbWV0aGluZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGNsZWFuaW5nIHVwIHNvbWUga2Z1bmMgdHlwZXM6IHNwZWNpZmljYWxseSwgaXQncyBheGluZyBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgLCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCwgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYCwgYWxvbmcgd2l0aCB0aGVpciBhc3NvY2lhdGVkIGBCVEZfSURgIGVudHJpZXMuIFRoYXQncyBhIGZvY3VzZWQgc2V0IG9mIGNoYW5nZXMsIGF0IGxlYXN0LlxuXG5MZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgcmVtb3ZhbHMgYXJlIHRoZSAqb25seSogY2hhbmdlcyBpbiB0aGUgcGF0Y2guIEFoLCB5ZXMsIGp1c3QgdGhlIGtmdW5jIGFuZCBCVEZfSUQgcmVtb3ZhbHMuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyB0aGlzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCBvciBpcyBpdCBqdXN0IGNsZWFudXA/IFJlbW92aW5nIGtmdW5jIHR5cGVzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgcmVtb3Zpbmcgc3VwcG9ydCwgb3Igc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGZvciB0aG9zZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBub3cgZ29uZS5cblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBzZWUgaG93IHRob3NlIGBLRl9gIGVudW1zIHdlcmUgYmVpbmcgdXNlZCwgYW5kIHdoYXQgdGhhdCBtZWFucyBpbiB0ZXJtcyBvZiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5kZXJzdGFuZCB0aGUgcmFtaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNiwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0Ny4xMTExOTAyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk5MDc0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0Ny4xNTUxODc0NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMzkwODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQ3LjIwMDMzMjMwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzNzk5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQ3LjI0NTg3ODE3NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTExMTY5MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgRGlzYXBwZWFyYW5jZSBvZiBUaG9zZSBEZWZpbml0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIGRlZmluaXRpb25zIGFyZSBnb25lLCByZW1vdmVkIGluIGEgcGF0Y2guIFRoYXQgZXhwbGFpbnMgd2h5IHRoZXkncmUgbm90IGxpbmluZyB1cCB3aXRoIHdoYXQgSSdtIGN1cnJlbnRseSBsb29raW5nIGF0LiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGNvbmZpcm0gdGhhdCB0aGVzZSBkZWZpbml0aW9ucyB3ZXJlbid0IHNpbXBseSByZWZhY3RvcmVkIG9yIG1vdmVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBiZWZvcmUgdGhlIHBhdGNoLiBXZXJlIHRoZXkgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhhdCBmaWxlICpiZWZvcmUqIHRoaXMgY2hhbmdlPyBJIGhhdmUgYSBodW5jaC4uLiBpZiB0aGV5IHdlcmUgeWFua2VkIGZyb20gdGhlIGVudW0gYW5kIHRoZSBCVEZfSUQgbGlzdCwgYW5kIHRoYXQgcGF0Y2ggaXMgdGhlIG9ubHkgb25lLCB0aGVuIGl0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkgd2VyZSAqb25seSogZGVmaW5lZCB0aGVyZS4gQmFzaWNhbGx5LCB0aGV5IHdlcmUgZGVhZCBjb2RlLCBuZXZlciBhY3R1YWxseSByZWZlcmVuY2VkIGluIHRoZSB2ZXJpZmllcidzIGxvZ2ljLiBTdGlsbCwgbGV0J3MgYmUgc3VyZS4gSnVzdCBiZWNhdXNlIHRoZXkgd2VyZW4ndCBpbiB0aGF0IHBhcnRpY3VsYXIgZmlsZSBkb2Vzbid0IG1lYW4gdGhleSB3ZXJlbid0IGluIGFub3RoZXIuIEknbGwgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoIHRvIGFsbCByZWxhdGVkIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE1LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6Mzk6NTEuNjM2OTk4NjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjQ5Mjg0NTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6Mzk6NTMuMjYxOTMyODkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTE2MjQ3NTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjU0LjkxMzU2MzgyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTA5NTU2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjU2LjQwMjY3MDUzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzkwMzc5ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVbnVzZWQgRW51bXMgYW5kIEJURl9JRHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBlbnVtcyBhbmQgQlRGX0lEcywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSdyZSBqdXN0IHNpdHRpbmcgdGhlcmUsIHVudXNlZC4gQSBiaXQgb2YgYSBob3VzZWtlZXBpbmcgaXNzdWUsIHBlcmhhcHMuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQuIElmIHRoZXNlIHRoaW5ncyB3ZXJlICphY3R1YWxseSogaW4gdGhlIGBzcGVjaWFsX2tmdW5jX2xpc3RgLCB0aGV5IHdvdWxkIGhhdmUgYmVlbiB0aWVkIHRvIGEgc3BlY2lmaWMgZW50cnk6IGBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfLi4uXWAuIE5vdywgaGVyZSdzIHRoZSBrZXk6IGlmIHdlIG5ldmVyIGFjdHVhbGx5ICp1c2VkKiB0aGVtLCBsaWtlIGZvciBpbnN0YW5jZSwgYXNzaWduaW5nIG9uZSB0byBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fdnByaW50a11gLCB0aGVuIHRoZWlyIHJlbW92YWwgc2hvdWxkbid0IGFmZmVjdCBhbnl0aGluZyBhdCBydW50aW1lLiBJdCdzIGp1c3QgZGVhZCBjb2RlLCBlc3NlbnRpYWxseS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCB0byBjb25maXJtIHRoaXMgaHVuY2guIExldCdzIG1ha2Ugc3VyZSBpdCdzIGFzIEkgZXhwZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDowMC4xOTMwNTMyMDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTE2NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwZWNpYWxfa2Z1bmNfbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5MzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwNC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA2OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PXN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjQ6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNzpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjMyOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfYWRkX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMzY9c3RhdGljIGJvb2wgaXNfdGFza193b3JrX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjQwLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yY3VfcmVhZF9sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjU1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF91bmxvY2soc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3OlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjYyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2VuYWJsZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3MD1ib29sIGJwZl9pc19rZnVuY19wa3RfY2hhbmdpbmcoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzEyLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cXHRcXHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTIwPXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNjpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNzpcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjgtXFx0XFx0aXJxX3NhdmUgPSB0cnVlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyOTpcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVxcdFxcdFxcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMzLVxcdFxcdGlycV9zYXZlID0gZmFsc2U7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTM0OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cXHRcXHRcXHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjkyPXN0YXRpYyBib29sIGlzX2JwZl9saXN0X2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVxcdHJldHVybiBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfZGVsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTk6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAyOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDctXFx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzEwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzE2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE4OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzIxLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXFx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VvZmYgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcXHQgICAgICAgaW5zbi1cXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzU0OlxcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwMS1cXHRcXHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDI6XFx0XFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAzOlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA0OlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA1LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVxcdFxcdHJldCA9IChpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhrZnVuY19idGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4OlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcXHRcXHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cXHRcXHRcXHRcXHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVxcdTAwM2Vwcm9nKSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlxcdFxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9YRFA7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxNy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX2ZpbGVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfRklMRSB8IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVxcdFxcdFxcdFxcdCAgIChkeW5wdHJfYXJnX3R5cGUgXFx1MDAyNiBNRU1fVU5JTklUKSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQwLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjI0MTpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cXHRcXHRcXHRcXHRpZiAoIWNoZWNrX2Nzc190YXNrX2l0ZXJfYWxsb3dsaXN0KGVudikpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyMjpcXHRcXHRcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjU6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfTE9DS19JUlE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cXHRcXHRtYXJrX3JlZ19ncmFwaF9ub2RlKHJlZ3MsIEJQRl9SRUdfMCwgXFx1MDAyNmZpZWxkLVxcdTAwM2VncmFwaF9yb290KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4Njg6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjktXFx0XFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXFx0XFx0cmVnc1tCUEZfUkVHXzBdLmJ0Zl9pZCA9IG1ldGEtXFx1MDAzZXJldF9idGZfaWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cXHRcXHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVxcdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVxcdFxcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVxcdTAwM2VkeW5wdHIudHlwZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMC1cXHRcXHRcXHRyZWdzW0JQRl9SRUdfMF0udHlwZSB8PSBNRU1fUkRPTkxZO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXFx0aWYgKCFpbnNuLVxcdTAwM2VvZmYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzI6XFx0ICAgIChpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MzpcXHQgICAgIGluc24tXFx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVxcdFxcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1OlxcdH0gZWxzZSBpZiAoIWluc24tXFx1MDAzZW9mZiBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX19fYnBmX3RyYXBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVxcdFxcdHZlcmJvc2UoZW52LCBcXFwidW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxcXG5cXFwiKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNi1cXHRcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXFx0XFx0bWFya19yZWdfdW5rbm93bihlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1OlxcdFxcdGlmIChtZXRhLmJ0ZiA9PSBidGZfdm1saW51eCBcXHUwMDI2XFx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNjY6XFx0XFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE2Ny1cXHRcXHRcXHRfX21hcmtfcmVnX2NvbnN0X3plcm8oZW52LCBcXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XFx0XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODgtXFx0XFx0XFx0XFx0XFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjItXFx0XFx0XFx0XFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjk5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcXHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzMwMS1cXHRcXHRlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzA3PXN0YXRpYyBpbnQgc3BlY2lhbGl6ZV9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2Rlc2MgKmRlc2MsIGludCBpbnNuX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cXHRcXHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cXHRcXHRzZWVuX2RpcmVjdF93cml0ZSA9IGVudi1cXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzUtXFx0XFx0ZW52LVxcdTAwM2VzZWVuX2RpcmVjdF93cml0ZSA9IHNlZW5fZGlyZWN0X3dyaXRlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcXHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNy1cXHRcXHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM4LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfc2V0X2RlbnRyeV94YXR0cl9sb2NrZWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQwLVxcdFxcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDEtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9yZW1vdmVfZGVudHJ5X3hhdHRyX2xvY2tlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDMtXFx0XFx0aWYgKCFlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cXHRcXHRcXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ4OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1MC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTE6XFx0XFx0aWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFx0XFx0ICAgIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NjQtXFx0XFx0XFx0XFx0XFx0XFx0bm9kZV9vZmZzZXRfcmVnLCBpbnNuLCBpbnNuX2J1ZiwgY250KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XFx0XFx0ICAgZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cXHRcXHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cXHRcXHQqY250ID0gMTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVxcdFxcdCAgIChlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVxcdFxcdCpjbnQgPSAzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4ODUtXFx0XFx0ICAgKGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDEtXFx0XFx0KmNudCA9IDY7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTAyOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDMtXFx0XFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXFx1MDAyNml0LCBzdGFydCwgZW5kKTsgUjE9XFx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjUtXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTI2OlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI3LVxcdFxcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcXHUwMDI2aXQpOyBSMT1cXHUwMDI2aXQsIHJldHVybnMgXFx1MDAyNnMtXFx1MDAzZWN1ciBvciBOVUxMICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVxcdFxcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjAwLjIzOTE3NDAxN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY5MjcwNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEtlcm5lbCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0aHJvdWdoIHRoaXMgYHNwZWNpYWxpemVfa2Z1bmNgIGZ1bmN0aW9uIGFuZCBJIGltbWVkaWF0ZWx5IG5vdGljZSBzb21ldGhpbmcncyBvZmYuIEknbSBzZWVpbmcgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgd2l0aCBgS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzYCBhbmQgYEtGX2JwZl9hcmVuYV9mcmVlX3BhZ2VzYCwgd2hpY2ggaXMgZmluZSwgYnV0IHdoZXJlJ3MgdGhlICpyZXNlcnZhdGlvbiogY2FsbCwgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYD8gVGhhdCdzIGEgcmVkIGZsYWcuIEkgd291bGQgZXhwZWN0IHRvIHNlZSB0aGF0IGluIGEgbWVtb3J5IG1hbmFnZW1lbnQgY29udGV4dC5cblxuVGhlbiBJIG1vdmUgb24gYW5kIGZpbmQgYEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybmAgYW5kIGBLRl9icGZfc2Vzc2lvbl9jb29raWVgIHByZXNlbnQsIHdoaWNoIGlzIGFzIGV4cGVjdGVkLCBidXQgd2hhdCBhYm91dCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCBhbmQgYEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tgPyBUaGV5J3JlIG5vd2hlcmUgdG8gYmUgZm91bmQgaGVyZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZXNlIHdlcmVuJ3QgdXNlZCBhdCBhbGwgaW4gYHZlcmlmaWVyLmNgIGFuZCBlbHNld2hlcmUuIFxuXG5CZWZvcmUganVtcGluZyB0byBjb25jbHVzaW9ucyB0aG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IGlmIGBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2Agb3IgYGJwZl9zdHJlYW1fdnByaW50a2AgYXJlIGRlZmluZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAyMSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDowNS4yMDg0NDgxMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTY1MzA2MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYXJlbmEuYz0xMDk1PXZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNC1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTEwNTpfX2JwZl9rZnVuYyBpbnQgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY250KVxcbmtlcm5lbC9icGYvYXJlbmEuYy0xMTA2LXtcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYz0xMTIyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9hcmVuYS5jOjExMjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEyNC1CVEZfS0ZVTkNTX0VORChhcmVuYV9rZnVuY3MpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvYnBmX2FyZW5hX2NvbW1vbi5icGYuaD04NT12b2lkIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKHZvaWQgKm1hcCwgdm9pZCBfX2FyZW5hICpwdHIsIF9fdTMyIHBhZ2VfY250KSBfX2tzeW0gX193ZWFrO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oOjg2OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvYnBmX2FyZW5hX2NvbW1vbi5icGYuaC04Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2JwZl9hcmVuYV9jb21tb24uaD00Nz12b2lkIF9fYXJlbmEqIGJwZl9hcmVuYV9hbGxvY19wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oLTQ4LVxcdFxcdFxcdFxcdCAgICBpbnQgbm9kZV9pZCwgX191NjQgZmxhZ3MpIF9fa3N5bSBfX3dlYWs7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oOjQ5OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oLTUwLXZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXModm9pZCAqbWFwLCB2b2lkIF9fYXJlbmEgKnB0ciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jPTY0PXN0YXRpYyBpbnQgYnVkZHlfcmVzZXJ2ZV9hcmVuYV92YWRkcihzdHJ1Y3QgYnVkZHkgX19hcmVuYSAqYnVkZHkpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYnVkZHkuYnBmLmM6Njg6XFx0cmV0dXJuIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY5LVxcdFxcdFxcdFxcdCAgICAgICAodm9pZCBfX2FyZW5hICopQlVERFlfVkFERFJfT0ZGU0VULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmM9Mjc9X193ZWFrIGludCBhcmVuYV9hbGxvY19yZXNlcnZlKHN0cnVjdCBhcmVuYV9hbGxvY19yZXNlcnZlX2FyZ3MgKmFyZ3MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmMtMjgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvY29tbW9uLmJwZi5jOjI5OlxcdHJldHVybiBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIGFyZ3MtXFx1MDAzZW5yX3BhZ2VzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0zMC19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yMzQ9aW50IGJhc2ljX3Jlc2VydmUxX25vc2xlZXAodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ2LVxcdC8qIFJlc2VydmUgdGhlIHNlY29uZCBwYWdlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MjQ3OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ4LVxcdGlmIChyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yNjY9aW50IGJhc2ljX3Jlc2VydmUxKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTI3OC1cXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjI3OTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTI4MC1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9Mjk4PWludCBiYXNpY19yZXNlcnZlMl9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNC1cXHRwYWdlID0gYXJlbmFfYmFzZShcXHUwMDI2YXJlbmEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjMwNTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNi1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzE4PWludCBiYXNpY19yZXNlcnZlMih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zMjQtXFx0cGFnZSA9IGFyZW5hX2Jhc2UoXFx1MDAyNmFyZW5hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozMjU6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zMjYtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTMzOT1pbnQgcmVzZXJ2ZV90d2ljZV9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM0Ni1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNDc6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNDgtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM1MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNTE6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTItXFx0aWYgKHJldCAhPSAtRUJVU1kpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zNjA9aW50IHJlc2VydmVfdHdpY2Uodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzY3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM2ODpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2OS1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzcxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM3MjpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM3My1cXHRpZiAocmV0ICE9IC1FQlVTWSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTM4Mj1pbnQgcmVzZXJ2ZV9pbnZhbGlkX3JlZ2lvbl9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM4OC1cXHQvKiBUcnkgYSBOVUxMIHBvaW50ZXIuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mzg5OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgTlVMTCwgMyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzkwLVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM5NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozOTU6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTYtXFx0aWYgKHJldCAhPSAtRUlOVkFMKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzk4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM5OTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDQwOTYpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQwMC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MDItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDAzOlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgKDFVTEwgXFx1MDAzY1xcdTAwM2MgMzIpIC0gMSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDA0LVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTQxMj1pbnQgcmVzZXJ2ZV9pbnZhbGlkX3JlZ2lvbih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MTgtXFx0LyogVHJ5IGEgTlVMTCBwb2ludGVyLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQxOTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyMC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MjQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDI1OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgMyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI2LVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0Mjk6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCA0MDk2KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MzAtXFx0aWYgKHJldCAhPSAtRUlOVkFMKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDMyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQzMzpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsICgxVUxMIFxcdTAwM2NcXHUwMDNjIDMyKSAtIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQzNC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz00Nzk9aW50IGFyZW5hX2tmdW5jc191bmRlcl9icGZfbG9jayh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00ODgtXFx0cGFnZSA9IGFyZW5hX2Jhc2UoXFx1MDAyNmFyZW5hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0ODk6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00OTAtXFx0aWYgKHJldCkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM9MzM9aW50IGNoZWNrX3Jlc2VydmUxKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ1LVxcdC8qIFJlc2VydmUgdGhlIHJlZ2lvbiB3ZSd2ZSBvZmZzZXQgdGhlIGdsb2JhbHMgYnkuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NDY6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBndWFyZCwgQVJFTkFfUEFHRVMgLSBHTE9CQUxfUEFHRVMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ3LVxcdGlmIChyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01MC1cXHQvKiBNYWtlIHN1cmUgdGhlIGdsb2JhbHMgYXJlIGluIHRoZSBleHBlY3RlZCBvZmZzZXQuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NTE6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBnbG9iYWxzLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01Mi1cXHRpZiAoIXJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jPTMzPWludCBjaGVja19yZXNlcnZlMih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczIuYy00MS1cXHQvKiBNYWtlIHN1cmUgdGhlIGRhdGEgYXQgb2Zmc2V0IDAgY2FzZSBpcyBwcm9wZXJseSBoYW5kbGVkLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jOjQyOlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgZ3VhcmQsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQzLVxcdGlmICghcmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9ODY9aW50IGFjY2Vzc19yZXNlcnZlZCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy05Ni1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzo5NzpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIGJhc2UsIGxlbik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTgtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTEyNT1pbnQgcmVxdWVzdF9wYXJ0aWFsbHlfcmVzZXJ2ZWQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtMTM0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jOjEzNTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIGJhc2UgKyAzICogX19QQUdFX1NJWkUsIDQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTEzNi1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9MTQ4PWludCBmcmVlX3Jlc2VydmVkKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTE2MS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzoxNjI6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBhZGRyICsgMiAqIF9fUEFHRV9TSVpFLCAyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy0xNjMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDYuNzA0OTgyNjg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyMDYyODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2NT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2Ni0jZW5kaWZcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYz0yMDk9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yMTQtICovXFxua2VybmVsL2JwZi9zdHJlYW0uYzoyMTU6X19icGZfa2Z1bmMgaW50IGJwZl9zdHJlYW1fdnByaW50ayhpbnQgc3RyZWFtX2lkLCBjb25zdCBjaGFyICpmbXRfX3N0ciwgY29uc3Qgdm9pZCAqYXJncyxcXG5rZXJuZWwvYnBmL3N0cmVhbS5jLTIxNi1cXHRcXHRcXHRcXHQgICB1MzIgbGVuX19zeiwgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0PTE4Mz1icGZ0b29sIHByb2cgdHJhY2Vsb2cgeyBzdGRvdXQgfCBzdGRlcnIgfSAqUFJPRypcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtMTg0LSAgICBEdW1wIHRoZSBCUEYgc3RyZWFtIG9mIHRoZSBwcm9ncmFtLiBCUEYgcHJvZ3JhbXMgY2FuIHdyaXRlIHRvIHRoZXNlIHN0cmVhbXNcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6MTg1OiAgICBhdCBydW50aW1lIHdpdGggdGhlICoqYnBmX3N0cmVhbV92cHJpbnRrX2ltcGwqKlxcXFwgKCkga2Z1bmMuIFRoZSBrZXJuZWwgbWF5IHdyaXRlXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4Ni0gICAgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4gVGhpcyBmYWNpbGl0eSBzaG91bGQgYmUgdXNlZFxcbi0tXFxudG9vbHMvbGliL2JwZi9icGZfaGVscGVycy5oPTE4NT1lbnVtIGxpYmJwZl90cmlzdGF0ZSB7XFxuLS1cXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmg6MzI4OlxcdGJwZl9zdHJlYW1fdnByaW50ayhzdHJlYW1faWQsIF9fX2ZtdCwgX19fcGFyYW0sIHNpemVvZihfX19wYXJhbSkpO1xcdFxcdFxcXFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI5LX0pXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYz0xMT1pbnQgc3RyZWFtX3ZwcmludGtfbnVsbF9hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTEyLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoxMzpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgXFxcIlxcXCIsIE5VTEwsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTE0LVxcdHJldHVybiAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9MTk9aW50IHN0cmVhbV92cHJpbnRrX3NjYWxhcl9hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoyMTpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgXFxcIlxcXCIsICh2b2lkICopNDYsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIyLVxcdHJldHVybiAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9Mjc9aW50IHN0cmVhbV92cHJpbnRrX3N0cmluZ19hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTI4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoyOTpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgY3R4LCBOVUxMLCAwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0zMC1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDguMTc3MDUwMTAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzNDI4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zdHJlYW1fcHJpbnRfc3RhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGVscGVycy5jPTQ5Njc9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2ODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3N0cmVhbS5jPTIxNT1fX2JwZl9rZnVuYyBpbnQgYnBmX3N0cmVhbV92cHJpbnRrKGludCBzdHJlYW1faWQsIGNvbnN0IGNoYXIgKmZtdF9fc3RyLCBjb25zdCB2b2lkICphcmdzLFxcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yNDgtLyogRGlyZWN0bHkgdHJpZ2dlciBhIHN0YWNrIGR1bXAgZnJvbSB0aGUgcHJvZ3JhbS4gKi9cXG5rZXJuZWwvYnBmL3N0cmVhbS5jOjI0OTpfX2JwZl9rZnVuYyBpbnQgYnBmX3N0cmVhbV9wcmludF9zdGFjayhpbnQgc3RyZWFtX2lkLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yNTAte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jPTE5NT1fX3dlYWsgaW50IGFzYW5fcmVwb3J0KHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzeiwgdTMyIGZsYWdzKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jLTIwOC1cXHRcXHRcXHRzeik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jOjIwOTpcXHRicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYy0yMTAtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9Mjk0PWludCBzdHJlYW1fcHJpbnRfc3RhY2tfa2Z1bmModm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0yOTUte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzoyOTY6XFx0cmV0dXJuIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soQlBGX1NUREVSUik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTI5Ny19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9MzAxPWludCBzdHJlYW1fcHJpbnRfc3RhY2tfaW52YWxpZF9pZCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmMtMzAzLVxcdC8qIFRyeSB0byBwYXNzIGFuIGludmFsaWQgc3RyZWFtIElELiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMDQ6XFx0cmV0dXJuIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soKGVudW0gYnBmX3N0cmVhbV9pZCkweGJhZGNhZmUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0zMDUtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTMxNj1pbnQgc3RyZWFtX3ByaW50X2tmdW5jc19sb2NrZWQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM6MzI2OlxcdHJldCA9IGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soQlBGX1NUREVSUik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDkuNjYwNDg0MDM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNzc5MDMzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBLRnVuYyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBnb3QgcmVtb3ZlZCBmcm9tIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCwgYnV0IGBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgaXMgc3RpbGwgYSBkZWZpbmVkIGtmdW5jIGluIGBrZXJuZWwvYnBmL2FyZW5hLmNgLiBUaGF0J3MgYSBsaXR0bGUgcGVjdWxpYXIuIFRoZSBwdXJwb3NlIG9mIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHRvIGZsYWcga2Z1bmNzIHRoYXQgbmVlZCBzcGVjaWFsIGF0dGVudGlvbiBmcm9tIHRoZSB2ZXJpZmllci5cblxuU28sIHRoZSBmYWN0IHRoYXQgaXQgd2FzIHJlbW92ZWQgbWVhbnMgdGhhdCBpdCAqc2hvdWxkKiBubyBsb25nZXIgYmUgZ2V0dGluZyB0aGF0IHNwZWNpYWwgdHJlYXRtZW50LiBCdXQgaWYgdGhhdCdzIHRoZSBjYXNlLCB3aGF0IHNwZWNpYWwgaGFuZGxpbmcgKndhcyogaXQgcmVjZWl2aW5nPyBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0LlxuXG5SaWdodCwgbGV0IG1lIHNlYXJjaCBmb3IgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCB3aXRoaW4gdGhlIHZlcmlmaWVyIGNvZGUsIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBBaGEhIEkgZm91bmQgbm8gbWF0Y2hlcy4gVGhhdOKAmXMgb2RkLiBUaGlzIG1lYW5zIGl0IHdhcyBuZXZlciBhY3R1YWxseSBjaGVja2VkIGluIHRoZSB2ZXJpZmllciwgZXZlbiB3aGVuIGl0ICp3YXMqIGluIHRoZSBlbnVtIGFuZCBgQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KWAuIEVzc2VudGlhbGx5LCBpdCB3YXMganVzdCBsaXN0ZWQsIGJ1dCBub3QgYWN0dWFsbHkgKnVzZWQqIGJ5IHRoZSB2ZXJpZmllci4gU28sIGl0IGFwcGVhcnMgdGhhdCB0aGUgcmVtb3ZhbCBvZiBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIGFueXRoaW5nIGZyb20gYSB2ZXJpZmljYXRpb24gcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCB3YXMgbmV2ZXIgdHJlYXRlZCBzcGVjaWFsbHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIG9mIHRoaXMgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDoxNy44MzgzOTA1MzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTAzMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9hcmVuYV9hbGxvY19wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Mi1cXHRLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTM6XFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5NC1cXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTcwNz1zdGF0aWMgaW50IHNwZWNpYWxpemVfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19kZXNjICpkZXNjLCBpbnQgaW5zbl9pZHgpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDQtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9keW5wdHJfZnJvbV9maWxlX3NsZWVwYWJsZTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ2LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjE3Ljg4MTI5OTk5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODMxMTQ2MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFJlZHVuZGFudCBLRnVuYyBFbnRyaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYEtGX2JwZl9hcmVuYV9hbGxvY19wYWdlc2AgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIGBzcGVjaWFsaXplX2tmdW5jYC4gTWFrZXMgc2Vuc2UuIFRoZW4gSSBzZWUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBsaXN0ZWQsIGJ1dCBJJ20gdGhpbmtpbmcsIFwiV2FpdCBhIG1pbnV0ZS4uLml0J3Mgbm90IHVzZWQgaW4gYHZlcmlmaWVyLmNgICphbnl3aGVyZSogZXhjZXB0IGluIHRoZSBlbnVtIGFuZCBgQlRGX0lEX0xJU1RgIVwiIFRoYXQncyBhIHJlZCBmbGFnLiBJdCBzZWVtcyB0aGF0IGl0cyBpbmNsdXNpb24gaW4gYHNwZWNpYWxfa2Z1bmNfbGlzdGAgaXMgY29tcGxldGVseSBwb2ludGxlc3MsIHV0dGVybHkgcmVkdW5kYW50LCBhbmQgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcuIFNhbWUgdGhpbmcgZm9yIGBLRl9icGZfc3RyZWFtX3ZwcmludGtgIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2DigJMgdGhleSdyZSBqdXN0IHNpdHRpbmcgdGhlcmUgaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVGAsIHdpdGhvdXQgYW55IHNwZWNpYWwgbG9naWMgYXBwbGllZCB0byB0aGVtIHdpdGhpbiBgdmVyaWZpZXIuY2AuXG5cbkFoYSwgaG9sZCBvbi4gSSdtIHJlbWVtYmVyaW5nIGhvdyBgQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KWAgd29ya3M6IGl0IGNyZWF0ZXMgYW4gYXJyYXkgb2YgQlRGIElEcy4gU28sIGlmIGEga2Z1bmMgaXMgb24gdGhhdCBsaXN0LCBhbGwgaXQgKm1lYW5zKiBpcyB0aGF0IGl0cyBCVEYgSUQgaXMgc3RvcmVkIGluIHRoYXQgYXJyYXkuIElmIHRoZSB2ZXJpZmllciBkb2Vzbid0IGV2ZXIgYWN0dWFsbHkgKmFjY2VzcyogdGhhdCBwYXJ0aWN1bGFyIGVsZW1lbnQgb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIHNheSBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXWAsIHRoZW4gdGhlIGZhY3QgdGhhdCBpdHMgQlRGIElEIGlzICppbiogdGhlIGFycmF5IGlzIGZ1bmN0aW9uYWxseSBpcnJlbGV2YW50LiBJdHMgcHJlc2VuY2UgaXMgd2FzdGVkLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBgc3BlY2lhbF9rZnVuY19saXN0YCBpc24ndCB1c2VkIGluIHNvbWUgb3RoZXIgd2F5LCBwZXJoYXBzIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGl0LiBUaGlzIHdpbGwgY29uZmlybSBteSB0aGVvcnkgdGhhdCB0aGUgZW50cmllcyBhcmUgdW51c2VkIGFuZCBjYW4gYmUgcmVtb3ZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMDgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MjMuNzEyNDQ4ODY1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGVjaWFsX2tmdW5jX2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5MzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwNC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA2OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PXN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjQ6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNzpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjMyOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfYWRkX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMzY9c3RhdGljIGJvb2wgaXNfdGFza193b3JrX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjQwLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yY3VfcmVhZF9sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjU1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF91bmxvY2soc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3OlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjYyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2VuYWJsZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3MD1ib29sIGJwZl9pc19rZnVuY19wa3RfY2hhbmdpbmcoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzEyLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cXHRcXHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTIwPXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNjpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNzpcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjgtXFx0XFx0aXJxX3NhdmUgPSB0cnVlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyOTpcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVxcdFxcdFxcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMzLVxcdFxcdGlycV9zYXZlID0gZmFsc2U7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTM0OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cXHRcXHRcXHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjkyPXN0YXRpYyBib29sIGlzX2JwZl9saXN0X2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVxcdHJldHVybiBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfZGVsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTk6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAyOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDctXFx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzEwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzE2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE4OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzIxLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXFx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VvZmYgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcXHQgICAgICAgaW5zbi1cXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzU0OlxcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwMS1cXHRcXHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDI6XFx0XFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAzOlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA0OlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA1LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVxcdFxcdHJldCA9IChpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhrZnVuY19idGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4OlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcXHRcXHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cXHRcXHRcXHRcXHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVxcdTAwM2Vwcm9nKSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlxcdFxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9YRFA7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxNy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX2ZpbGVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfRklMRSB8IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVxcdFxcdFxcdFxcdCAgIChkeW5wdHJfYXJnX3R5cGUgXFx1MDAyNiBNRU1fVU5JTklUKSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQwLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjI0MTpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cXHRcXHRcXHRcXHRpZiAoIWNoZWNrX2Nzc190YXNrX2l0ZXJfYWxsb3dsaXN0KGVudikpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyMjpcXHRcXHRcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjU6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfTE9DS19JUlE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cXHRcXHRtYXJrX3JlZ19ncmFwaF9ub2RlKHJlZ3MsIEJQRl9SRUdfMCwgXFx1MDAyNmZpZWxkLVxcdTAwM2VncmFwaF9yb290KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4Njg6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjktXFx0XFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXFx0XFx0cmVnc1tCUEZfUkVHXzBdLmJ0Zl9pZCA9IG1ldGEtXFx1MDAzZXJldF9idGZfaWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cXHRcXHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVxcdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVxcdFxcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVxcdTAwM2VkeW5wdHIudHlwZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMC1cXHRcXHRcXHRyZWdzW0JQRl9SRUdfMF0udHlwZSB8PSBNRU1fUkRPTkxZO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXFx0aWYgKCFpbnNuLVxcdTAwM2VvZmYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzI6XFx0ICAgIChpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MzpcXHQgICAgIGluc24tXFx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVxcdFxcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1OlxcdH0gZWxzZSBpZiAoIWluc24tXFx1MDAzZW9mZiBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX19fYnBmX3RyYXBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVxcdFxcdHZlcmJvc2UoZW52LCBcXFwidW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxcXG5cXFwiKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNi1cXHRcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXFx0XFx0bWFya19yZWdfdW5rbm93bihlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1OlxcdFxcdGlmIChtZXRhLmJ0ZiA9PSBidGZfdm1saW51eCBcXHUwMDI2XFx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNjY6XFx0XFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE2Ny1cXHRcXHRcXHRfX21hcmtfcmVnX2NvbnN0X3plcm8oZW52LCBcXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XFx0XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODgtXFx0XFx0XFx0XFx0XFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjItXFx0XFx0XFx0XFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjk5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcXHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzMwMS1cXHRcXHRlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzA3PXN0YXRpYyBpbnQgc3BlY2lhbGl6ZV9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2Rlc2MgKmRlc2MsIGludCBpbnNuX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cXHRcXHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cXHRcXHRzZWVuX2RpcmVjdF93cml0ZSA9IGVudi1cXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzUtXFx0XFx0ZW52LVxcdTAwM2VzZWVuX2RpcmVjdF93cml0ZSA9IHNlZW5fZGlyZWN0X3dyaXRlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcXHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNy1cXHRcXHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM4LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfc2V0X2RlbnRyeV94YXR0cl9sb2NrZWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQwLVxcdFxcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDEtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9yZW1vdmVfZGVudHJ5X3hhdHRyX2xvY2tlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDMtXFx0XFx0aWYgKCFlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cXHRcXHRcXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ4OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1MC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTE6XFx0XFx0aWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFx0XFx0ICAgIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NjQtXFx0XFx0XFx0XFx0XFx0XFx0bm9kZV9vZmZzZXRfcmVnLCBpbnNuLCBpbnNuX2J1ZiwgY250KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XFx0XFx0ICAgZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cXHRcXHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cXHRcXHQqY250ID0gMTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVxcdFxcdCAgIChlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVxcdFxcdCpjbnQgPSAzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4ODUtXFx0XFx0ICAgKGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDEtXFx0XFx0KmNudCA9IDY7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTAyOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDMtXFx0XFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXFx1MDAyNml0LCBzdGFydCwgZW5kKTsgUjE9XFx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjUtXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTI2OlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI3LVxcdFxcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcXHUwMDI2aXQpOyBSMT1cXHUwMDI2aXQsIHJldHVybnMgXFx1MDAyNnMtXFx1MDAzZWN1ciBvciBOVUxMICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVxcdFxcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjIzLjc1OTE4OTUyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDY1MjkyNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBGdW5jdGlvbiBMaXN0IENsZWFudXAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGxvb2t1cCB0YWJsZS4gSXQncyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gYGZ1bmNfaWRgIG1hdGNoZXMgYSAqc3BlY2lmaWMqIGtub3duIGVudHJ5LCBlc3NlbnRpYWxseSBwZXJmb3JtaW5nIGEgZGlyZWN0IGNvbXBhcmlzb24gbGlrZSBgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXWAuXG5cbkJlY2F1c2UgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCwgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AsIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2AgKmFyZW4ndCogdXNlZCBpbiBhbnkgb2YgdGhlc2UgY3J1Y2lhbCBjb21wYXJpc29uIGNoZWNrcywgdGhlaXIgZXhpc3RlbmNlIGluIHRoYXQgbGlzdCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiBUaGV5J3JlIGp1c3Qgc2l0dGluZyB0aGVyZSwgdGFraW5nIHVwIHNwYWNlLCBkb2luZyBhYnNvbHV0ZWx5IG5vdGhpbmcuIFRoZSBwYXRjaCBzaW1wbHkgZWxpbWluYXRlcyB0aGVzZSB1bnVzZWQgZW51bSB2YWx1ZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGBCVEZfSURgIGVudHJpZXMgZnJvbSBgc3BlY2lhbF9rZnVuY19saXN0YC5cblxuVGhpcyBpcywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQsIGEgcHVyZSBjbGVhbnVwLiBJdCdzIHB1cmVseSBkZWNvcmF0aXZlLiBJdCBoYXMgYWJzb2x1dGVseSB6ZXJvIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgb3IgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3VyLiBJdCBtYWtlcyB0aGUgY29kZSBhIGJpdCB0aWRpZXIuIE5vdGhpbmcgbW9yZS5cblxuU28sIGZvciBmdXp6aW5nIHB1cnBvc2VzLCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBJdCdzIGEgbm9uLWV2ZW50LiBObyBuZWVkIHRvIGRldm90ZSBhbnkgZnV6emluZyByZXNvdXJjZXMgdG8gdGVzdGluZyB0aGlzLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQxOCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MjkuMjI0NDg0OTU1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdW51c2VkIGVudW0gdmFsdWVzIChLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrKSBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBCVEZfSUQgZW50cmllcyBmcm9tIHRoZSBzcGVjaWFsX2tmdW5jX2xpc3QgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlc2UgZW50cmllcyB3ZXJlIG5ldmVyIHJlZmVyZW5jZWQgYW55d2hlcmUgaW4gdGhlIHZlcmlmaWVyIGNvZGUgdG8gYXBwbHkgYW55IHNwZWNpYWwgbG9naWMsIHNvIHRoZWlyIHJlbW92YWwgaXMgYSBwdXJlIGNsZWFudXAgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDoyOS4yMjQ1MTEzNzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww4dt7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 19:08:11 +0000 UTC FinishedAt: 2026-08-12 19:40:29 +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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOWQ2ZmRhN2YxZTljNjA1MDNkMGY0NTUwNzdhMGE2ZTg4OGFiOGQ0NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE5OjM5OjM5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTEwOTIsMTAgJiM0MzsxMTA5Miw3IEBAIGVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbiBcdEtGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lLFxuIFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxuIFx0S0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXMsXG4tXHRLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyxcbiBcdEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybixcbi1cdEtGX2JwZl9zdHJlYW1fdnByaW50ayxcbi1cdEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2ssXG4gfTtcbiBcbiBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpXG5AQCAtMTExODUsMTQgJiM0MzsxMTE4MiwxMSBAQCBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwpXG4gQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lKVxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMpXG4gQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKVxuLUJURl9JRChmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcylcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcbiBCVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKVxuICNlbHNlXG4gQlRGX0lEX1VOVVNFRFxuICNlbmRpZlxuLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ZwcmludGspXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2spXG4gXG4gc3RhdGljIGJvb2wgaXNfYnBmX29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG4ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHVudXNlZCBlbnVtIHZhbHVlcyAoS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX2JwZl9zdHJlYW1fdnByaW50aywgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjaykgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgQlRGX0lEIGVudHJpZXMgZnJvbSB0aGUgc3BlY2lhbF9rZnVuY19saXN0IGluIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXNlIGVudHJpZXMgd2VyZSBuZXZlciByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSB2ZXJpZmllciBjb2RlIHRvIGFwcGx5IGFueSBzcGVjaWFsIGxvZ2ljLCBzbyB0aGVpciByZW1vdmFsIGlzIGEgcHVyZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZDZmZGE3ZjFlOWM2MDUwM2QwZjQ1NTA3N2EwYTZlODg4YWI4ZDQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTk6Mzk6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmMKaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDQKLS0tIGEva2VybmVsL2JwZi92ZXJpZmllci5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuYwpAQCAtMTEwOTIsMTAgJiM0MzsxMTA5Miw3IEBAIGVudW0gc3BlY2lhbF9rZnVuY190eXBlIHsKIAlLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSwKIAlLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsCiAJS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXMsCi0JS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsCiAJS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuLAotCUtGX2JwZl9zdHJlYW1fdnByaW50aywKLQlLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrLAogfTsKIAogQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KQpAQCAtMTExODUsMTQgJiM0MzsxMTE4MiwxMSBAQCBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwpCiBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUpCiBCVEZfSUQoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKQogQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKQotQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKQogI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTCiBCVEZfSUQoZnVuYywgYnBmX3Nlc3Npb25faXNfcmV0dXJuKQogI2Vsc2UKIEJURl9JRF9VTlVTRUQKICNlbmRpZgotQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aykKLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKQogCiBzdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZCkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIxNgoJCQkJCQkJb3V0cHV0OiAxMTMKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5IHNlbnNlcyBhcmUgdGluZ2xpbmcuIEFueXRoaW5nIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyIGlzIHNvbWV0aGluZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGNsZWFuaW5nIHVwIHNvbWUga2Z1bmMgdHlwZXM6IHNwZWNpZmljYWxseSwgaXQmIzM5O3MgYXhpbmcgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCwgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AsIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2AsIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBgQlRGX0lEYCBlbnRyaWVzLiBUaGF0JiMzOTtzIGEgZm9jdXNlZCBzZXQgb2YgY2hhbmdlcywgYXQgbGVhc3QuCgpMZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgcmVtb3ZhbHMgYXJlIHRoZSAqb25seSogY2hhbmdlcyBpbiB0aGUgcGF0Y2guIEFoLCB5ZXMsIGp1c3QgdGhlIGtmdW5jIGFuZCBCVEZfSUQgcmVtb3ZhbHMuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyB0aGlzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCBvciBpcyBpdCBqdXN0IGNsZWFudXA/IFJlbW92aW5nIGtmdW5jIHR5cGVzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgcmVtb3Zpbmcgc3VwcG9ydCwgb3Igc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGZvciB0aG9zZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBub3cgZ29uZS4KClJpZ2h0LCBzbyBJIG5lZWQgdG8gZ28gYmFjayBhbmQgY2hlY2sgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgdG8gc2VlIGhvdyB0aG9zZSBgS0ZfYCBlbnVtcyB3ZXJlIGJlaW5nIHVzZWQsIGFuZCB3aGF0IHRoYXQgbWVhbnMgaW4gdGVybXMgb2YgdGhlIGJyb2FkZXIgQlBGIGVjb3N5c3RlbS4gVGltZSB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtLRl9icGZfc3RyZWFtX3ZwcmludGsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL3ZlcmlmaWVyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNQoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBEaXNhcHBlYXJhbmNlIG9mIFRob3NlIERlZmluaXRpb25zKioKCk9rYXksIHNvIEkgc2VlIHRoZXNlIGRlZmluaXRpb25zIGFyZSBnb25lLCByZW1vdmVkIGluIGEgcGF0Y2guIFRoYXQgZXhwbGFpbnMgd2h5IHRoZXkmIzM5O3JlIG5vdCBsaW5pbmcgdXAgd2l0aCB3aGF0IEkmIzM5O20gY3VycmVudGx5IGxvb2tpbmcgYXQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIGNvbmZpcm0gdGhhdCB0aGVzZSBkZWZpbml0aW9ucyB3ZXJlbiYjMzk7dCBzaW1wbHkgcmVmYWN0b3JlZCBvciBtb3ZlZCB3aXRoaW4gYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AgYmVmb3JlIHRoZSBwYXRjaC4gV2VyZSB0aGV5IGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZSBlbHNlIGluIHRoYXQgZmlsZSAqYmVmb3JlKiB0aGlzIGNoYW5nZT8gSSBoYXZlIGEgaHVuY2guLi4gaWYgdGhleSB3ZXJlIHlhbmtlZCBmcm9tIHRoZSBlbnVtIGFuZCB0aGUgQlRGX0lEIGxpc3QsIGFuZCB0aGF0IHBhdGNoIGlzIHRoZSBvbmx5IG9uZSwgdGhlbiBpdCBzdHJvbmdseSBzdWdnZXN0cyB0aGV5IHdlcmUgKm9ubHkqIGRlZmluZWQgdGhlcmUuIEJhc2ljYWxseSwgdGhleSB3ZXJlIGRlYWQgY29kZSwgbmV2ZXIgYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgdmVyaWZpZXImIzM5O3MgbG9naWMuIFN0aWxsLCBsZXQmIzM5O3MgYmUgc3VyZS4gSnVzdCBiZWNhdXNlIHRoZXkgd2VyZW4mIzM5O3QgaW4gdGhhdCBwYXJ0aWN1bGFyIGZpbGUgZG9lc24mIzM5O3QgbWVhbiB0aGV5IHdlcmVuJiMzOTt0IGluIGFub3RoZXIuIEkmIzM5O2xsIG5lZWQgdG8gZXhwYW5kIG15IHNlYXJjaCB0byBhbGwgcmVsYXRlZCBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0tGX2JwZl9zdHJlYW1fdnByaW50ayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTgKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVW51c2VkIEVudW1zIGFuZCBCVEZfSURzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBlbnVtcyBhbmQgQlRGX0lEcywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUganVzdCBzaXR0aW5nIHRoZXJlLCB1bnVzZWQuIEEgYml0IG9mIGEgaG91c2VrZWVwaW5nIGlzc3VlLCBwZXJoYXBzLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGhvdyB0aGUgc3lzdGVtIGlzIGRlc2lnbmVkLiBJZiB0aGVzZSB0aGluZ3Mgd2VyZSAqYWN0dWFsbHkqIGluIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCwgdGhleSB3b3VsZCBoYXZlIGJlZW4gdGllZCB0byBhIHNwZWNpZmljIGVudHJ5OiBgc3BlY2lhbF9rZnVuY19saXN0W0tGXy4uLl1gLiBOb3csIGhlcmUmIzM5O3MgdGhlIGtleTogaWYgd2UgbmV2ZXIgYWN0dWFsbHkgKnVzZWQqIHRoZW0sIGxpa2UgZm9yIGluc3RhbmNlLCBhc3NpZ25pbmcgb25lIHRvIGBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3N0cmVhbV92cHJpbnRrXWAsIHRoZW4gdGhlaXIgcmVtb3ZhbCBzaG91bGRuJiMzOTt0IGFmZmVjdCBhbnl0aGluZyBhdCBydW50aW1lLiBJdCYjMzk7cyBqdXN0IGRlYWQgY29kZSwgZXNzZW50aWFsbHkuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhlIGBzcGVjaWFsX2tmdW5jX2xpc3RgIHRvIGNvbmZpcm0gdGhpcyBodW5jaC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBpdCYjMzk7cyBhcyBJIGV4cGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BlY2lhbF9rZnVuY19saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAyOD1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDk3LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMDk4OkJURl9JRF9MSVNUKHNwZWNpYWxfa2Z1bmNfbGlzdClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExOTE9c3RhdGljIGJvb2wgaXNfYnBmX29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTkzOlx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfbmV3X2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTk1LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTExOTc9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMTk4LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9uZXddIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMDA6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjAxLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA0LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwNTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMDY6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9kcm9wX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDk9c3RhdGljIGJvb2wgaXNfYnBmX3BlcmNwdV9vYmpfZHJvcF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTE6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMTU9c3RhdGljIGJvb2wgaXNfYnBmX3JlZmNvdW50X2FjcXVpcmVfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE4Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjE5LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyMi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjM6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNDpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2Zyb250X2ltcGxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9iYWNrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI2Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI3Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIzMD1zdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzI6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9hZGRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9hZGRfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzQtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIzNj1zdGF0aWMgYm9vbCBpc190YXNrX3dvcmtfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjM3LXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3NpZ25hbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzOTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNDAtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTEte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjUyOlx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JjdV9yZWFkX2xvY2tdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNTU9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYnBmX3JjdV9yZWFkX3VubG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3Olx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JjdV9yZWFkX3VubG9ja107XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI2MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcHJlZW1wdF9kaXNhYmxlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2My19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjY3Olx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3ByZWVtcHRfZW5hYmxlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2OC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjcwPWJvb2wgYnBmX2lzX2tmdW5jX3BrdF9jaGFuZ2luZyhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzEte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlx0cmV0dXJuIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3hkcF9wdWxsX2RhdGFdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNzY9Z2V0X2tmdW5jX2FyZ190eXBlKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEzMTItXHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cdFx0YXJnX3R5cGUgPSBLRl9BUkdfUFRSX1RPX0NUWDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE1MjA9c3RhdGljIGludCBwcm9jZXNzX2lycV9mbGFnKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfcmVnX3N0YXRlICpyZWcsIGFyZ25vX3QgYXJnbm8sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI2Olx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI3Olx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUyOC1cdFx0aXJxX3NhdmUgPSB0cnVlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTI5Olx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzMC1cdFx0XHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9sb2NhbF9pcnFfcmVzdG9yZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcdFx0ICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MzMtXHRcdGlycV9zYXZlID0gZmFsc2U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MzQ6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MzUtXHRcdFx0a2Z1bmNfY2xhc3MgPSBJUlFfTE9DS19LRlVOQztcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE2OTI9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVx0cmV0dXJuIGlzX2JwZl9saXN0X3B1c2hfa2Z1bmMoYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk1Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk2Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5OTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDI6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9lbXB0eV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTcwNT1zdGF0aWMgYm9vbCBpc19icGZfcmJ0cmVlX2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwNy1cdHJldHVybiBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JlbW92ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwOTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTA6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3Jvb3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTI6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcxMy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTYte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE3Olx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTg6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcyMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MjEtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzQ4LVx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcdTAwMjZcdTAwMjYgaW5zbi1cdTAwM2VvZmYgPT0gMCBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcdCAgICAgICBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzUyPXN0YXRpYyBib29sIGlzX2JwZl93cV9zZXRfY2FsbGJhY2tfa2Z1bmModTMyIGJ0Zl9pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3NTQ6XHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfd3Ffc2V0X2NhbGxiYWNrXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzkzPXN0YXRpYyBib29sIGNoZWNrX2tmdW5jX2lzX2dyYXBoX25vZGVfYXBpKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODAxLVx0XHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwMjpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDM6XHRcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDQ6XHRcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MDUtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwNy1cdFx0cmV0ID0gKGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwODpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDk6XHRcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfbGVmdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgxMDpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yaWdodF0pO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExODExLVx0XHRicmVhaztcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIxNjMtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIxNjUtXHRcdFx0XHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFx1MDAyNmVudi1cdTAwM2Vsb2csIHJlc29sdmVfcHJvZ190eXBlKGVudi1cdTAwM2Vwcm9nKSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjExLVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9za2JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTMtXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE0Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21feGRwXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX1hEUDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNjpcdFx0XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE3LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX1NLQl9NRVRBO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxOS1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjIwOlx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2ZpbGVfZGlzY2FyZF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFIHwgT0JKX1JFTEVBU0U7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMjI6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVx0XHRcdFx0ICAgKGR5bnB0cl9hcmdfdHlwZSBcdTAwMjYgTUVNX1VOSU5JVCkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyNDAtXHRcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjQxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX2Nzc190YXNrX25ld10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cdFx0XHRcdGlmICghY2hlY2tfY3NzX3Rhc2tfaXRlcl9hbGxvd2xpc3QoZW52KSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cdFx0XHRcdHJldHVybiAtRUZBVUxUO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTIxOlx0XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTIyOlx0XHRcdCAgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVx0XHRcdFx0ZmxhZ3MgfD0gUFJPQ0VTU19TUElOX0xPQ0s7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjQ6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNTpcdFx0XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVx0XHRcdFx0ZmxhZ3MgfD0gUFJPQ0VTU19MT0NLX0lSUTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjctXHRcdG1hcmtfcmVnX2dyYXBoX25vZGUocmVncywgQlBGX1JFR18wLCBcdTAwMjZmaWVsZC1cdTAwM2VncmFwaF9yb290KTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg2ODpcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2OS1cdFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODcyLVx0XHRyZWdzW0JQRl9SRUdfMF0uYnRmX2lkID0gbWV0YS1cdTAwM2VyZXRfYnRmX2lkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZG9ubHlfY2FzdF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cdFx0cmV0X3QgPSBidGZfdHlwZV9ieV9pZChkZXNjX2J0ZiwgbWV0YS1cdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg5Mi1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODkzOlx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfc2xpY2VdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTQ6XHRcdCAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9zbGljZV9yZHdyXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVx0XHRlbnVtIGJwZl90eXBlX2ZsYWcgdHlwZV9mbGFnID0gZ2V0X2R5bnB0cl90eXBlX2ZsYWcobWV0YS1cdTAwM2VkeW5wdHIudHlwZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTA4LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5Olx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTEwLVx0XHRcdHJlZ3NbQlBGX1JFR18wXS50eXBlIHw9IE1FTV9SRE9OTFk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTcxLVx0aWYgKCFpbnNuLVx1MDAzZW9mZiBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MjpcdCAgICAoaW5zbi1cdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTczOlx0ICAgICBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzQtXHRcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5OTQtXHRcdH1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk5NTpcdH0gZWxzZSBpZiAoIWluc24tXHUwMDNlb2ZmIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfX19icGZfdHJhcF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5Ni1cdFx0dmVyYm9zZShlbnYsIFwmIzM0O3VuZXhwZWN0ZWQgX19icGZfdHJhcCgpIGR1ZSB0byB1bmluaXRpYWxpemVkIHZhcmlhYmxlP1xcblwmIzM0Oyk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTI0LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTI1Olx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTI2LVx0XHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTY0LVx0XHRtYXJrX3JlZ191bmtub3duKGVudiwgcmVncywgQlBGX1JFR18wKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE2NTpcdFx0aWYgKG1ldGEuYnRmID09IGJ0Zl92bWxpbnV4IFx1MDAyNlx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzE2NjpcdFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTY3LVx0XHRcdF9fbWFya19yZWdfY29uc3RfemVybyhlbnYsIFx1MDAyNnJlZ3NbQlBGX1JFR18wXSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTg2LVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTg3Olx0XHRcdFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4OC1cdFx0XHRcdFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjAtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XHRcdFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMi1cdFx0XHRcdHR5cGUgfD0gUFRSX1VOVFJVU1RFRDtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyOTktXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMzMDA6XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMzAxLVx0XHRlbnYtXHUwMDNlcHJvZy1cdTAwM2VjYWxsX3Nlc3Npb25fY29va2llID0gdHJ1ZTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MDc9c3RhdGljIGludCBzcGVjaWFsaXplX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYywgaW50IGluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cdFx0LyogZmFsbGJhY2sgdG8gZGVmYXVsdCBrZnVuYyB3aGVuIG5vdCBzdXBwb3J0ZWQgYnkgbmV0ZGV2ICovXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9za2JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MjYtXHRcdHNlZW5fZGlyZWN0X3dyaXRlID0gZW52LVx1MDAzZXNlZW5fZGlyZWN0X3dyaXRlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNS1cdFx0ZW52LVx1MDAzZXNlZW5fZGlyZWN0X3dyaXRlID0gc2Vlbl9kaXJlY3Rfd3JpdGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MzY6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM3LVx0XHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzgtXHRcdFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9zZXRfZGVudHJ5X3hhdHRyX2xvY2tlZDtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczOTpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDAtXHRcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0MS1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJfbG9ja2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQyOlx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0My1cdFx0aWYgKCFlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0NC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2R5bnB0cl9mcm9tX2ZpbGVfc2xlZXBhYmxlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDYtXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDg6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9mcmVlX3BhZ2VzXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVx0XHRpZiAoZW52LVx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzczPWludCBicGZfZml4dXBfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUwLVx0XHQgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg1MTpcdFx0aWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODUyLVx0XHQgICAgaXNfYnBmX3JidHJlZV9hZGRfa2Z1bmMoZGVzYy1cdTAwM2VmdW5jX2lkKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2NC1cdFx0XHRcdFx0XHRub2RlX29mZnNldF9yZWcsIGluc24sIGluc25fYnVmLCBjbnQpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY1Olx0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODY2Olx0XHQgICBkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZG9ubHlfY2FzdF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cdFx0aW5zbl9idWZbMF0gPSBCUEZfTU9WNjRfUkVHKEJQRl9SRUdfMCwgQlBGX1JFR18xKTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cdFx0KmNudCA9IDE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuXSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg3MC1cdFx0ICAgKGVudi1cdTAwM2Vwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4My1cdFx0KmNudCA9IDM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4ODQ6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSBcdTAwMjZcdTAwMjZcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg4NS1cdFx0ICAgKGVudi1cdTAwM2Vwcm9nLVx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkwMS1cdFx0KmNudCA9IDY7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5MDI6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkwMy1cdFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXHUwMDI2aXQsIHN0YXJ0LCBlbmQpOyBSMT1cdTAwMjZpdCwgUjI9c3RhcnQsIFIzPWVuZCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkyNS1cdFx0KmNudCA9IGk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5MjY6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjctXHRcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcdTAwMjZpdCk7IFIxPVx1MDAyNml0LCByZXR1cm5zIFx1MDAyNnMtXHUwMDNlY3VyIG9yIE5VTEwgKi9cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXHRcdCpjbnQgPSBpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlx0fSBlbHNlIGlmIChkZXNjLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9pdGVyX251bV9kZXN0cm95XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVx0XHQvKiBicGZfaXRlcl9udW1fZGVzdHJveSgpIGlzIGEgbm8tb3A7IGVtaXQgYSBub3AgdG8gZHJvcCB0aGUgY2FsbCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjAyMQoJCQkJCQkJb3V0cHV0OiA4MwoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBLZXJuZWwgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyB0aHJvdWdoIHRoaXMgYHNwZWNpYWxpemVfa2Z1bmNgIGZ1bmN0aW9uIGFuZCBJIGltbWVkaWF0ZWx5IG5vdGljZSBzb21ldGhpbmcmIzM5O3Mgb2ZmLiBJJiMzOTttIHNlZWluZyBhbGxvY2F0aW9ucyBhbmQgZGVhbGxvY2F0aW9ucyB3aXRoIGBLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNgIGFuZCBgS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNgLCB3aGljaCBpcyBmaW5lLCBidXQgd2hlcmUmIzM5O3MgdGhlICpyZXNlcnZhdGlvbiogY2FsbCwgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYD8gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLiBJIHdvdWxkIGV4cGVjdCB0byBzZWUgdGhhdCBpbiBhIG1lbW9yeSBtYW5hZ2VtZW50IGNvbnRleHQuCgpUaGVuIEkgbW92ZSBvbiBhbmQgZmluZCBgS0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuYCBhbmQgYEtGX2JwZl9zZXNzaW9uX2Nvb2tpZWAgcHJlc2VudCwgd2hpY2ggaXMgYXMgZXhwZWN0ZWQsIGJ1dCB3aGF0IGFib3V0IGBLRl9icGZfc3RyZWFtX3ZwcmludGtgIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2A/IFRoZXkmIzM5O3JlIG5vd2hlcmUgdG8gYmUgZm91bmQgaGVyZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZXNlIHdlcmVuJiMzOTt0IHVzZWQgYXQgYWxsIGluIGB2ZXJpZmllci5jYCBhbmQgZWxzZXdoZXJlLiAKCkJlZm9yZSBqdW1waW5nIHRvIGNvbmNsdXNpb25zIHRob3VnaCwgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrLiBNYXliZSBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSBpZiBgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIG9yIGBicGZfc3RyZWFtX3ZwcmludGtgIGFyZSBkZWZpbmVkIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi9hcmVuYS5jPTEwOTU9dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlc19ub25fc2xlZXBhYmxlKHZvaWQgKnBfX21hcCwgdm9pZCAqcHRyX19pZ24sIHUzMiBwYWdlX2NudClcbi0tXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNC1cbmtlcm5lbC9icGYvYXJlbmEuYzoxMTA1Ol9fYnBmX2tmdW5jIGludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNi17XG4tLVxua2VybmVsL2JwZi9hcmVuYS5jPTExMjI9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9mcmVlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbmtlcm5lbC9icGYvYXJlbmEuYzoxMTIzOkJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEyNC1CVEZfS0ZVTkNTX0VORChhcmVuYV9rZnVuY3MpXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2JwZl9hcmVuYV9jb21tb24uYnBmLmg9ODU9dm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oOjg2OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oLTg3LVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2JwZl9hcmVuYV9jb21tb24uaD00Nz12b2lkIF9fYXJlbmEqIGJwZl9hcmVuYV9hbGxvY19wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9icGZfYXJlbmFfY29tbW9uLmgtNDgtXHRcdFx0XHQgICAgaW50IG5vZGVfaWQsIF9fdTY0IGZsYWdzKSBfX2tzeW0gX193ZWFrO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oOjQ5OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvaW5jbHVkZS9icGZfYXJlbmFfY29tbW9uLmgtNTAtdm9pZCBicGZfYXJlbmFfZnJlZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2Vhaztcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jPTY0PXN0YXRpYyBpbnQgYnVkZHlfcmVzZXJ2ZV9hcmVuYV92YWRkcihzdHJ1Y3QgYnVkZHkgX19hcmVuYSAqYnVkZHkpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9idWRkeS5icGYuYy02Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYnVkZHkuYnBmLmM6Njg6XHRyZXR1cm4gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY5LVx0XHRcdFx0ICAgICAgICh2b2lkIF9fYXJlbmEgKilCVUREWV9WQUREUl9PRkZTRVQsXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmM9Mjc9X193ZWFrIGludCBhcmVuYV9hbGxvY19yZXNlcnZlKHN0cnVjdCBhcmVuYV9hbGxvY19yZXNlcnZlX2FyZ3MgKmFyZ3MpXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0yOC17XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYzoyOTpcdHJldHVybiBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgYXJncy1cdTAwM2Vucl9wYWdlcyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0zMC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MjM0PWludCBiYXNpY19yZXNlcnZlMV9ub3NsZWVwKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0yNDYtXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MjQ3Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ4LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yNjY9aW50IGJhc2ljX3Jlc2VydmUxKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0yNzgtXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mjc5Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjgwLVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yOTg9aW50IGJhc2ljX3Jlc2VydmUyX25vc2xlZXAodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNC1cdHBhZ2UgPSBhcmVuYV9iYXNlKFx1MDAyNmFyZW5hKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjMwNTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNi1cdGlmIChyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzE4PWludCBiYXNpY19yZXNlcnZlMih2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzI0LVx0cGFnZSA9IGFyZW5hX2Jhc2UoXHUwMDI2YXJlbmEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzI1Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzI2LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zMzk9aW50IHJlc2VydmVfdHdpY2Vfbm9zbGVlcCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzQ2LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzQ3Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzQ4LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTAtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNTE6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTItXHRpZiAocmV0ICE9IC1FQlVTWSlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zNjA9aW50IHJlc2VydmVfdHdpY2Uodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2Ny1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM2ODpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2OS1cdGlmIChyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzcxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MzcyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzczLVx0aWYgKHJldCAhPSAtRUJVU1kpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzgyPWludCByZXNlcnZlX2ludmFsaWRfcmVnaW9uX25vc2xlZXAodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM4OC1cdC8qIFRyeSBhIE5VTEwgcG9pbnRlci4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM4OTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBOVUxMLCAzKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM5MC1cdGlmIChyZXQgIT0gLUVJTlZBTClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTQtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozOTU6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTYtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzk4LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mzk5Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDQwOTYpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDAwLVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQwMi1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQwMzpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCAoMVVMTCBcdTAwM2NcdTAwM2MgMzIpIC0gMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MDQtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9NDEyPWludCByZXNlcnZlX2ludmFsaWRfcmVnaW9uKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MTgtXHQvKiBUcnkgYSBOVUxMIHBvaW50ZXIuICovXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0MTk6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgTlVMTCwgMyk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MjAtXHRpZiAocmV0ICE9IC1FSU5WQUwpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI0LVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDI1Olx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIHBhZ2UsIDMpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI2LVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyOC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQyOTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBwYWdlLCA0MDk2KTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQzMC1cdGlmIChyZXQgIT0gLUVJTlZBTClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MzItXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0MzM6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgKDFVTEwgXHUwMDNjXHUwMDNjIDMyKSAtIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDM0LVx0aWYgKHJldCAhPSAtRUlOVkFMKVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTQ3OT1pbnQgYXJlbmFfa2Z1bmNzX3VuZGVyX2JwZl9sb2NrKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00ODgtXHRwYWdlID0gYXJlbmFfYmFzZShcdTAwMjZhcmVuYSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0ODk6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00OTAtXHRpZiAocmV0KSB7XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM9MzM9aW50IGNoZWNrX3Jlc2VydmUxKHZvaWQgKmN0eClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy00NS1cdC8qIFJlc2VydmUgdGhlIHJlZ2lvbiB3ZSYjMzk7dmUgb2Zmc2V0IHRoZSBnbG9iYWxzIGJ5LiAqL1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NDY6XHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcdTAwMjZhcmVuYSwgZ3VhcmQsIEFSRU5BX1BBR0VTIC0gR0xPQkFMX1BBR0VTKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ3LVx0aWYgKHJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01MC1cdC8qIE1ha2Ugc3VyZSB0aGUgZ2xvYmFscyBhcmUgaW4gdGhlIGV4cGVjdGVkIG9mZnNldC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jOjUxOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGdsb2JhbHMsIDEpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmMtNTItXHRpZiAoIXJldClcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczIuYz0zMz1pbnQgY2hlY2tfcmVzZXJ2ZTIodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQxLVx0LyogTWFrZSBzdXJlIHRoZSBkYXRhIGF0IG9mZnNldCAwIGNhc2UgaXMgcHJvcGVybHkgaGFuZGxlZC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jOjQyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGd1YXJkLCAxKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQzLVx0aWYgKCFyZXQpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9ODY9aW50IGFjY2Vzc19yZXNlcnZlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTYtXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzo5NzpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBiYXNlLCBsZW4pO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTgtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTEyNT1pbnQgcmVxdWVzdF9wYXJ0aWFsbHlfcmVzZXJ2ZWQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTEzNC1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jOjEzNTpcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFx1MDAyNmFyZW5hLCBiYXNlICYjNDM7IDMgKiBfX1BBR0VfU0laRSwgNCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy0xMzYtXHRpZiAocmV0KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTE0OD1pbnQgZnJlZV9yZXNlcnZlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtMTYxLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM6MTYyOlx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXHUwMDI2YXJlbmEsIGFkZHIgJiM0MzsgMiAqIF9fUEFHRV9TSVpFLCAyKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTE2My1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JwZl9zdHJlYW1fdnByaW50ayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvYnBmL2hlbHBlcnMuYz00OTY1PUJURl9JRF9GTEFHUyhmdW5jLCBicGZfY2dyb3VwX3JlYWRfeGF0dHIsIEtGX1JDVSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjYtI2VuZGlmXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OC1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG4tLVxua2VybmVsL2JwZi9zdHJlYW0uYz0yMDk9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xuLS1cbmtlcm5lbC9icGYvc3RyZWFtLmMtMjE0LSAqL1xua2VybmVsL2JwZi9zdHJlYW0uYzoyMTU6X19icGZfa2Z1bmMgaW50IGJwZl9zdHJlYW1fdnByaW50ayhpbnQgc3RyZWFtX2lkLCBjb25zdCBjaGFyICpmbXRfX3N0ciwgY29uc3Qgdm9pZCAqYXJncyxcbmtlcm5lbC9icGYvc3RyZWFtLmMtMjE2LVx0XHRcdFx0ICAgdTMyIGxlbl9fc3osIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbi0tXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q9MTgzPWJwZnRvb2wgcHJvZyB0cmFjZWxvZyB7IHN0ZG91dCB8IHN0ZGVyciB9ICpQUk9HKlxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4NC0gICAgRHVtcCB0aGUgQlBGIHN0cmVhbSBvZiB0aGUgcHJvZ3JhbS4gQlBGIHByb2dyYW1zIGNhbiB3cml0ZSB0byB0aGVzZSBzdHJlYW1zXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6MTg1OiAgICBhdCBydW50aW1lIHdpdGggdGhlICoqYnBmX3N0cmVhbV92cHJpbnRrX2ltcGwqKlxcICgpIGtmdW5jLiBUaGUga2VybmVsIG1heSB3cml0ZVxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4Ni0gICAgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4gVGhpcyBmYWNpbGl0eSBzaG91bGQgYmUgdXNlZFxuLS1cbnRvb2xzL2xpYi9icGYvYnBmX2hlbHBlcnMuaD0xODU9ZW51bSBsaWJicGZfdHJpc3RhdGUge1xuLS1cbnRvb2xzL2xpYi9icGYvYnBmX2hlbHBlcnMuaC0zMjctXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmg6MzI4Olx0YnBmX3N0cmVhbV92cHJpbnRrKHN0cmVhbV9pZCwgX19fZm10LCBfX19wYXJhbSwgc2l6ZW9mKF9fX3BhcmFtKSk7XHRcdFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI5LX0pXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9MTE9aW50IHN0cmVhbV92cHJpbnRrX251bGxfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTEyLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjEzOlx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0O1wmIzM0OywgTlVMTCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0xNC1cdHJldHVybiAwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jPTE5PWludCBzdHJlYW1fdnByaW50a19zY2FsYXJfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIwLXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjIxOlx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIFwmIzM0O1wmIzM0OywgKHZvaWQgKik0NiwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0yMi1cdHJldHVybiAwO1xuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jPTI3PWludCBzdHJlYW1fdnByaW50a19zdHJpbmdfYXJnKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTI4LXtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jOjI5Olx0YnBmX3N0cmVhbV92cHJpbnRrKEJQRl9TVERPVVQsIGN0eCwgTlVMTCwgMCk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0zMC1cdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticGZfc3RyZWFtX3ByaW50X3N0YWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvaGVscGVycy5jPTQ5Njc9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY4OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrLCBLRl9JTVBMSUNJVF9BUkdTIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjktQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsLCBLRl9JTVBMSUNJVF9BUkdTKVxuLS1cbmtlcm5lbC9icGYvc3RyZWFtLmM9MjE1PV9fYnBmX2tmdW5jIGludCBicGZfc3RyZWFtX3ZwcmludGsoaW50IHN0cmVhbV9pZCwgY29uc3QgY2hhciAqZm10X19zdHIsIGNvbnN0IHZvaWQgKmFyZ3MsXG4tLVxua2VybmVsL2JwZi9zdHJlYW0uYy0yNDgtLyogRGlyZWN0bHkgdHJpZ2dlciBhIHN0YWNrIGR1bXAgZnJvbSB0aGUgcHJvZ3JhbS4gKi9cbmtlcm5lbC9icGYvc3RyZWFtLmM6MjQ5Ol9fYnBmX2tmdW5jIGludCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKGludCBzdHJlYW1faWQsIHN0cnVjdCBicGZfcHJvZ19hdXggKmF1eClcbmtlcm5lbC9icGYvc3RyZWFtLmMtMjUwLXtcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmM9MTk1PV9fd2VhayBpbnQgYXNhbl9yZXBvcnQoczggX19hcmVuYSAqYWRkciwgc2l6ZV90IHN6LCB1MzIgZmxhZ3MpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jLTIwOC1cdFx0XHRzeik7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2FzYW4uYnBmLmM6MjA5Olx0YnBmX3N0cmVhbV9wcmludF9zdGFjayhCUEZfU1RERVJSKTtcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYy0yMTAtXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTI5ND1pbnQgc3RyZWFtX3ByaW50X3N0YWNrX2tmdW5jKHZvaWQgKmN0eClcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0yOTUte1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jOjI5NjpcdHJldHVybiBicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTI5Ny19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTMwMT1pbnQgc3RyZWFtX3ByaW50X3N0YWNrX2ludmFsaWRfaWQodm9pZCAqY3R4KVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0zMDMtXHQvKiBUcnkgdG8gcGFzcyBhbiBpbnZhbGlkIHN0cmVhbSBJRC4gKi9cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMDQ6XHRyZXR1cm4gYnBmX3N0cmVhbV9wcmludF9zdGFjaygoZW51bSBicGZfc3RyZWFtX2lkKTB4YmFkY2FmZSk7XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmMtMzA1LX1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9MzE2PWludCBzdHJlYW1fcHJpbnRfa2Z1bmNzX2xvY2tlZCh2b2lkICpjdHgpXG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMjY6XHRyZXQgPSBicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBLRnVuYyoqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgZ290IHJlbW92ZWQgZnJvbSB0aGUgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIGJ1dCBgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGlzIHN0aWxsIGEgZGVmaW5lZCBrZnVuYyBpbiBga2VybmVsL2JwZi9hcmVuYS5jYC4gVGhhdCYjMzk7cyBhIGxpdHRsZSBwZWN1bGlhci4gVGhlIHB1cnBvc2Ugb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAgaXMgdG8gZmxhZyBrZnVuY3MgdGhhdCBuZWVkIHNwZWNpYWwgYXR0ZW50aW9uIGZyb20gdGhlIHZlcmlmaWVyLgoKU28sIHRoZSBmYWN0IHRoYXQgaXQgd2FzIHJlbW92ZWQgbWVhbnMgdGhhdCBpdCAqc2hvdWxkKiBubyBsb25nZXIgYmUgZ2V0dGluZyB0aGF0IHNwZWNpYWwgdHJlYXRtZW50LiBCdXQgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZSwgd2hhdCBzcGVjaWFsIGhhbmRsaW5nICp3YXMqIGl0IHJlY2VpdmluZz8gSSBuZWVkIHRvIGZpZ3VyZSB0aGlzIG91dC4KClJpZ2h0LCBsZXQgbWUgc2VhcmNoIGZvciBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIHdpdGhpbiB0aGUgdmVyaWZpZXIgY29kZSwgYGtlcm5lbC9icGYvdmVyaWZpZXIuY2AuIEFoYSEgSSBmb3VuZCBubyBtYXRjaGVzLiBUaGF04oCZcyBvZGQuIFRoaXMgbWVhbnMgaXQgd2FzIG5ldmVyIGFjdHVhbGx5IGNoZWNrZWQgaW4gdGhlIHZlcmlmaWVyLCBldmVuIHdoZW4gaXQgKndhcyogaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpYC4gRXNzZW50aWFsbHksIGl0IHdhcyBqdXN0IGxpc3RlZCwgYnV0IG5vdCBhY3R1YWxseSAqdXNlZCogYnkgdGhlIHZlcmlmaWVyLiBTbywgaXQgYXBwZWFycyB0aGF0IHRoZSByZW1vdmFsIG9mIGBLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgZG9lc24mIzM5O3QgYWN0dWFsbHkgY2hhbmdlIGFueXRoaW5nIGZyb20gYSB2ZXJpZmljYXRpb24gcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCB3YXMgbmV2ZXIgdHJlYXRlZCBzcGVjaWFsbHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIG9mIHRoaXMgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTAyOD1lbnVtIHNwZWNpYWxfa2Z1bmNfdHlwZSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDkyLVx0S0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTM6XHRLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwOTQtXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3MDc9c3RhdGljIGludCBzcGVjaWFsaXplX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyAqZGVzYywgaW50IGluc25faWR4KVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0NC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2R5bnB0cl9mcm9tX2ZpbGVfc2xlZXBhYmxlO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDYtXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkzMDgKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgUmVkdW5kYW50IEtGdW5jIEVudHJpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNgIGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gYHNwZWNpYWxpemVfa2Z1bmNgLiBNYWtlcyBzZW5zZS4gVGhlbiBJIHNlZSBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGxpc3RlZCwgYnV0IEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7V2FpdCBhIG1pbnV0ZS4uLml0JiMzOTtzIG5vdCB1c2VkIGluIGB2ZXJpZmllci5jYCAqYW55d2hlcmUqIGV4Y2VwdCBpbiB0aGUgZW51bSBhbmQgYEJURl9JRF9MSVNUYCEmIzM0OyBUaGF0JiMzOTtzIGEgcmVkIGZsYWcuIEl0IHNlZW1zIHRoYXQgaXRzIGluY2x1c2lvbiBpbiBgc3BlY2lhbF9rZnVuY19saXN0YCBpcyBjb21wbGV0ZWx5IHBvaW50bGVzcywgdXR0ZXJseSByZWR1bmRhbnQsIGFuZCBkb2VzIGFic29sdXRlbHkgbm90aGluZy4gU2FtZSB0aGluZyBmb3IgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYOKAkyB0aGV5JiMzOTtyZSBqdXN0IHNpdHRpbmcgdGhlcmUgaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVGAsIHdpdGhvdXQgYW55IHNwZWNpYWwgbG9naWMgYXBwbGllZCB0byB0aGVtIHdpdGhpbiBgdmVyaWZpZXIuY2AuCgpBaGEsIGhvbGQgb24uIEkmIzM5O20gcmVtZW1iZXJpbmcgaG93IGBCVEZfSURfTElTVChzcGVjaWFsX2tmdW5jX2xpc3QpYCB3b3JrczogaXQgY3JlYXRlcyBhbiBhcnJheSBvZiBCVEYgSURzLiBTbywgaWYgYSBrZnVuYyBpcyBvbiB0aGF0IGxpc3QsIGFsbCBpdCAqbWVhbnMqIGlzIHRoYXQgaXRzIEJURiBJRCBpcyBzdG9yZWQgaW4gdGhhdCBhcnJheS4gSWYgdGhlIHZlcmlmaWVyIGRvZXNuJiMzOTt0IGV2ZXIgYWN0dWFsbHkgKmFjY2VzcyogdGhhdCBwYXJ0aWN1bGFyIGVsZW1lbnQgb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIHNheSBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXWAsIHRoZW4gdGhlIGZhY3QgdGhhdCBpdHMgQlRGIElEIGlzICppbiogdGhlIGFycmF5IGlzIGZ1bmN0aW9uYWxseSBpcnJlbGV2YW50LiBJdHMgcHJlc2VuY2UgaXMgd2FzdGVkLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzbiYjMzk7dCB1c2VkIGluIHNvbWUgb3RoZXIgd2F5LCBwZXJoYXBzIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGl0LiBUaGlzIHdpbGwgY29uZmlybSBteSB0aGVvcnkgdGhhdCB0aGUgZW50cmllcyBhcmUgdW51c2VkIGFuZCBjYW4gYmUgcmVtb3ZlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTk6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3BlY2lhbF9rZnVuY19saXN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEwOTctXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMDk5LUJURl9JRChmdW5jLCBicGZfb2JqX25ld19pbXBsKVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTE5Mi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTM6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTExOTQ6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXdfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5Nz1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9uZXdfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk5Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wZXJjcHVfb2JqX25ld10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9uZXdfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDEtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwMz1zdGF0aWMgYm9vbCBpc19icGZfb2JqX2Ryb3Bfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDQte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9vYmpfZHJvcF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwNjpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMDctfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjEwLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMTpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjEyOlx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wZXJjcHVfb2JqX2Ryb3BfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIxNT1zdGF0aWMgYm9vbCBpc19icGZfcmVmY291bnRfYWNxdWlyZV9rZnVuYyh1MzIgZnVuY19pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTc6XHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlZmNvdW50X2FjcXVpcmVfaW1wbF07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTktfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIyMT1zdGF0aWMgYm9vbCBpc19icGZfbGlzdF9wdXNoX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjIyLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjI0Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNTpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wdXNoX2JhY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9iYWNrX2ltcGxdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjc6XHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIyOC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjMxLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzMjpcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzMzpcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF9pbXBsXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjM2PXN0YXRpYyBib29sIGlzX3Rhc2tfd29ya19hZGRfa2Z1bmModTMyIGZ1bmNfaWQpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM4Olx0cmV0dXJuIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5Olx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl90YXNrX3dvcmtfc2NoZWR1bGVfcmVzdW1lXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI0MC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjUwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF9sb2NrKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfbG9ja107XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1NT1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfdW5sb2NrKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTc6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1OC19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjYxLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTI2MjpcdHJldHVybiBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2Rpc2FibGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjYzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNjU9c3RhdGljIGJvb2wgaXNfa2Z1bmNfYnBmX3ByZWVtcHRfZW5hYmxlKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2Ni17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9lbmFibGVdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyNzA9Ym9vbCBicGZfaXNfa2Z1bmNfcGt0X2NoYW5naW5nKHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNzI6XHRyZXR1cm4gbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNzMtfVxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxMi1cdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzEzOlx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEzMTQ6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEzMTU6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzE2LVx0XHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTUyMD1zdGF0aWMgaW50IHByb2Nlc3NfaXJxX2ZsYWcoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9yZWdfc3RhdGUgKnJlZywgYXJnbm9fdCBhcmdubyxcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjUtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MjY6XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbG9jYWxfaXJxX3NhdmVdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1Mjc6XHQgICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI4LVx0XHRpcnFfc2F2ZSA9IHRydWU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1Mjk6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVx0XHRcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE1MzE6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMyOlx0XHQgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzMy1cdFx0aXJxX3NhdmUgPSBmYWxzZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzNDpcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlXSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cdFx0XHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTY5Mj1zdGF0aWMgYm9vbCBpc19icGZfbGlzdF9hcGlfa2Z1bmModTMyIGJ0Zl9pZClcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE2OTQtXHRyZXR1cm4gaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyhidGZfaWQpIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfZnJvbnRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTY6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NzpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2RlbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2Zyb250XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNjk5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2ZpcnN0XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwMjpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcwMy19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzA3LVx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcwODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5Olx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMDpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMTpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfbGVmdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzEzLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3MTU9c3RhdGljIGJvb2wgaXNfYnBmX3Jlc19zcGluX2xvY2tfa2Z1bmModTMyIGJ0Zl9pZClcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcxNi17XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XHRyZXR1cm4gYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxODpcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTk6XHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX3VubG9ja19pcnFyZXN0b3JlXTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTcyMS19XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzQ2PWJvb2wgYnBmX2lzX3Rocm93X2tmdW5jKHN0cnVjdCBicGZfaW5zbiAqaW5zbilcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXHRyZXR1cm4gYnBmX3BzZXVkb19rZnVuY19jYWxsKGluc24pIFx1MDAyNlx1MDAyNiBpbnNuLVx1MDAzZW9mZiA9PSAwIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzQ5Olx0ICAgICAgIGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzUwLX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzUzLXtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc1NDpcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzU1LX1cbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MDEtXHRcdHJldCA9IGlzX2JwZl9saXN0X3B1c2hfa2Z1bmMoa2Z1bmNfYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAyOlx0XHQgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2RlbF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwMzpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19maXJzdF0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwNDpcdFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9pc19sYXN0XTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwNS1cdFx0YnJlYWs7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVx0XHRyZXQgPSAoaXNfYnBmX3JidHJlZV9hZGRfa2Z1bmMoa2Z1bmNfYnRmX2lkKSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4Olx0XHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JlbW92ZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcdFx0ICAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlx0XHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XSk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXHRcdGJyZWFrO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTk5Nz1zdGF0aWMgaW50IGNoZWNrX2tmdW5jX2FyZ3Moc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjE2NDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cdFx0XHRcdHJldCA9IGdldF9rZXJuX2N0eF9idGZfaWQoXHUwMDI2ZW52LVx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVx1MDAzZXByb2cpKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTI6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cdFx0XHRcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9TS0I7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTQ6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTUtXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfWERQO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2Olx0XHRcdH0gZWxzZSBpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiX21ldGFdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTctXHRcdFx0XHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMTg6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9maWxlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX0ZJTEU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyMjA6XHRcdFx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIxLVx0XHRcdFx0ZHlucHRyX2FyZ190eXBlIHw9IERZTlBUUl9UWVBFX0ZJTEUgfCBPQkpfUkVMRUFTRTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcdFx0XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9jbG9uZV0gXHUwMDI2XHUwMDI2XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMjMtXHRcdFx0XHQgICAoZHlucHRyX2FyZ190eXBlIFx1MDAyNiBNRU1fVU5JTklUKSkge1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0MC1cdFx0Y2FzZSBLRl9BUkdfUFRSX1RPX0lURVI6XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIyNDE6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQyLVx0XHRcdFx0aWYgKCFjaGVja19jc3NfdGFza19pdGVyX2FsbG93bGlzdChlbnYpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIwLVx0XHRcdFx0cmV0dXJuIC1FRkFVTFQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XHRcdFx0aWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjI6XHRcdFx0ICAgIG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI1MjMtXHRcdFx0XHRmbGFncyB8PSBQUk9DRVNTX1NQSU5fTE9DSztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcdFx0XHRpZiAobWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyNTI1Olx0XHRcdCAgICBtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI1MjYtXHRcdFx0XHRmbGFncyB8PSBQUk9DRVNTX0xPQ0tfSVJRO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMjc2Mj1zdGF0aWMgaW50IGNoZWNrX3NwZWNpYWxfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cdFx0bWFya19yZWdfZ3JhcGhfbm9kZShyZWdzLCBCUEZfUkVHXzAsIFx1MDAyNmZpZWxkLVx1MDAzZWdyYXBoX3Jvb3QpO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODY4Olx0fSBlbHNlIGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODY5LVx0XHRtYXJrX3JlZ19rbm93bl96ZXJvKGVudiwgcmVncywgQlBGX1JFR18wKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXHRcdHJlZ3NbQlBGX1JFR18wXS5idGZfaWQgPSBtZXRhLVx1MDAzZXJldF9idGZfaWQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4NzM6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODc0LVx0XHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVx1MDAzZWFyZ19jb25zdGFudC52YWx1ZSk7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVx0XHR9XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XHR9IGVsc2UgaWYgKG1ldGEtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9zbGljZV0gfHxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcdFx0ICAgbWV0YS1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4OTUtXHRcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVx1MDAzZWR5bnB0ci50eXBlKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5MDk6XHRcdGlmIChtZXRhLVx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfc2xpY2VdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MTAtXHRcdFx0cmVnc1tCUEZfUkVHXzBdLnR5cGUgfD0gTUVNX1JET05MWTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI5MzM9c3RhdGljIGludCBjaGVja19rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXHRpZiAoIWluc24tXHUwMDNlb2ZmIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTcyOlx0ICAgIChpbnNuLVx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzM6XHQgICAgIGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkpIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk3NC1cdFx0c3RydWN0IGJwZl92ZXJpZmllcl9zdGF0ZSAqYnJhbmNoO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cdFx0fVxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1Olx0fSBlbHNlIGlmICghaW5zbi1cdTAwM2VvZmYgXHUwMDI2XHUwMDI2IGluc24tXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9fX2JwZl90cmFwXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVx0XHR2ZXJib3NlKGVudiwgXCYjMzQ7dW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxuXCYjMzQ7KTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjQtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxMjYtXHRcdGlmICghYnBmX2ppdF9zdXBwb3J0c19leGNlcHRpb25zKCkpIHtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXHRcdG1hcmtfcmVnX3Vua25vd24oZW52LCByZWdzLCBCUEZfUkVHXzApO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1Olx0XHRpZiAobWV0YS5idGYgPT0gYnRmX3ZtbGludXggXHUwMDI2XHUwMDI2IChtZXRhLmZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY2Olx0XHQgICAgbWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja19pcnFzYXZlXSkpXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjctXHRcdFx0X19tYXJrX3JlZ19jb25zdF96ZXJvKGVudiwgXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODYtXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XHRcdFx0XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMTg4LVx0XHRcdFx0XHRtZXRhLnIwX3Jkb25seSA9IGZhbHNlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzIyMTpcdFx0XHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZ2V0X2ttZW1fY2FjaGVdKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjIyLVx0XHRcdFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzI5OS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcdGlmIChtZXRhLmZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0pXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMzMDEtXHRcdGVudi1cdTAwM2Vwcm9nLVx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTcwNz1zdGF0aWMgaW50IHNwZWNpYWxpemVfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19kZXNjICpkZXNjLCBpbnQgaW5zbl9pZHgpXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzI0LVx0XHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTcyNTpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cdFx0c2Vlbl9kaXJlY3Rfd3JpdGUgPSBlbnYtXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM1LVx0XHRlbnYtXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGUgPSBzZWVuX2RpcmVjdF93cml0ZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3NldF9kZW50cnlfeGF0dHJdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzctXHRcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczOC1cdFx0XHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX3NldF9kZW50cnlfeGF0dHJfbG9ja2VkO1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5Olx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVtb3ZlX2RlbnRyeV94YXR0cl0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0MC1cdFx0aWYgKGJwZl9sc21faGFzX2RfaW5vZGVfbG9ja2VkKHByb2cpKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQxLVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfcmVtb3ZlX2RlbnRyeV94YXR0cl9sb2NrZWQ7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV9maWxlXSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQzLVx0XHRpZiAoIWVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDU6XHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9hbGxvY19wYWdlc10pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cdFx0aWYgKGVudi1cdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ3LVx0XHRcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfYXJlbmFfYWxsb2NfcGFnZXNfbm9uX3NsZWVwYWJsZTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTc0ODpcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDktXHRcdGlmIChlbnYtXHUwMDNlaW5zbl9hdXhfZGF0YVtpbnNuX2lkeF0ubm9uX3NsZWVwYWJsZSlcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcbi0tXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTAtXHRcdCAqL1xua2VybmVsL2JwZi92ZXJpZmllci5jOjE5ODUxOlx0XHRpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9hZGRdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXHRcdCAgICBpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhkZXNjLVx1MDAzZWZ1bmNfaWQpKSB7XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY0LVx0XHRcdFx0XHRcdG5vZGVfb2Zmc2V0X3JlZywgaW5zbiwgaW5zbl9idWYsIGNudCk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XHRcdCAgIGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY3LVx0XHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODY4LVx0XHQqY250ID0gMTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg2OTpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVx0XHQgICAoZW52LVx1MDAzZXByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVx0XHQqY250ID0gMztcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdIFx1MDAyNlx1MDAyNlxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODg1LVx0XHQgICAoZW52LVx1MDAzZXByb2ctXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTAxLVx0XHQqY250ID0gNjtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTkwMjpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV3XSkge1xua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTAzLVx0XHQvKiBpbmxpbmUgYnBmX2l0ZXJfbnVtX25ldyhcdTAwMjZpdCwgc3RhcnQsIGVuZCk7IFIxPVx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXG4tLVxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI1LVx0XHQqY250ID0gaTtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTkyNjpcdH0gZWxzZSBpZiAoZGVzYy1cdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfaXRlcl9udW1fbmV4dF0pIHtcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTkyNy1cdFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXh0KFx1MDAyNml0KTsgUjE9XHUwMDI2aXQsIHJldHVybnMgXHUwMDI2cy1cdTAwM2VjdXIgb3IgTlVMTCAqL1xuLS1cbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTk0Mi1cdFx0KmNudCA9IGk7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk5NDM6XHR9IGVsc2UgaWYgKGRlc2MtXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDQtXHRcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDE4CgkJCQkJCQlvdXRwdXQ6IDEyOQoJCQkJCQkJdGhvdWdodHM6IDE3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBLZXJuZWwgRnVuY3Rpb24gTGlzdCBDbGVhbnVwKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGxvb2t1cCB0YWJsZS4gSXQmIzM5O3MgdXNlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiBhIGdpdmVuIGBmdW5jX2lkYCBtYXRjaGVzIGEgKnNwZWNpZmljKiBrbm93biBlbnRyeSwgZXNzZW50aWFsbHkgcGVyZm9ybWluZyBhIGRpcmVjdCBjb21wYXJpc29uIGxpa2UgYGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9hbGxvY19wYWdlc11gLgoKQmVjYXVzZSBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgLCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCwgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYCAqYXJlbiYjMzk7dCogdXNlZCBpbiBhbnkgb2YgdGhlc2UgY3J1Y2lhbCBjb21wYXJpc29uIGNoZWNrcywgdGhlaXIgZXhpc3RlbmNlIGluIHRoYXQgbGlzdCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiBUaGV5JiMzOTtyZSBqdXN0IHNpdHRpbmcgdGhlcmUsIHRha2luZyB1cCBzcGFjZSwgZG9pbmcgYWJzb2x1dGVseSBub3RoaW5nLiBUaGUgcGF0Y2ggc2ltcGx5IGVsaW1pbmF0ZXMgdGhlc2UgdW51c2VkIGVudW0gdmFsdWVzIGFuZCB0aGUgYXNzb2NpYXRlZCBgQlRGX0lEYCBlbnRyaWVzIGZyb20gYHNwZWNpYWxfa2Z1bmNfbGlzdGAuCgpUaGlzIGlzLCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCwgYSBwdXJlIGNsZWFudXAuIEl0JiMzOTtzIHB1cmVseSBkZWNvcmF0aXZlLiBJdCBoYXMgYWJzb2x1dGVseSB6ZXJvIGltcGFjdCBvbiB0aGUga2VybmVsJiMzOTtzIGV4ZWN1dGlvbiBmbG93IG9yIHRoZSB2ZXJpZmllciYjMzk7cyBiZWhhdmlvdXIuIEl0IG1ha2VzIHRoZSBjb2RlIGEgYml0IHRpZGllci4gTm90aGluZyBtb3JlLgoKU28sIGZvciBmdXp6aW5nIHB1cnBvc2VzLCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBJdCYjMzk7cyBhIG5vbi1ldmVudC4gTm8gbmVlZCB0byBkZXZvdGUgYW55IGZ1enppbmcgcmVzb3VyY2VzIHRvIHRlc3RpbmcgdGhpcy4KClRoZXJlZm9yZSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwmIzM5O3MgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZW1vdmVzIHVudXNlZCBlbnVtIHZhbHVlcyAoS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsIEtGX2JwZl9zdHJlYW1fdnByaW50aywgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjaykgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgQlRGX0lEIGVudHJpZXMgZnJvbSB0aGUgc3BlY2lhbF9rZnVuY19saXN0IGluIHRoZSBCUEYgdmVyaWZpZXIuIFRoZXNlIGVudHJpZXMgd2VyZSBuZXZlciByZWZlcmVuY2VkIGFueXdoZXJlIGluIHRoZSB2ZXJpZmllciBjb2RlIHRvIGFwcGx5IGFueSBzcGVjaWFsIGxvZ2ljLCBzbyB0aGVpciByZW1vdmFsIGlzIGEgcHVyZSBjbGVhbnVwIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gdGhlIGtlcm5lbCYjMzk7cyBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE5OjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MC41OTQ5OTMzMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYyOTUyOTQ1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdW51c2VkIGVudW0gdmFsdWVzIChLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrKSBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBCVEZfSUQgZW50cmllcyBmcm9tIHRoZSBzcGVjaWFsX2tmdW5jX2xpc3QgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlc2UgZW50cmllcyB3ZXJlIG5ldmVyIHJlZmVyZW5jZWQgYW55d2hlcmUgaW4gdGhlIHZlcmlmaWVyIGNvZGUgdG8gYXBwbHkgYW55IHNwZWNpYWwgbG9naWMsIHNvIHRoZWlyIHJlbW92YWwgaXMgYSBwdXJlIGNsZWFudXAgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MC41OTQ5OTgyMTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxMjAwODEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlkNmZkYTdmMWU5YzYwNTAzZDBmNDU1MDc3YTBhNmU4ODhhYjhkNDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTk6Mzk6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jXFxuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG4rKysgYi9rZXJuZWwvYnBmL3ZlcmlmaWVyLmNcXG5AQCAtMTEwOTIsMTAgKzExMDkyLDcgQEAgZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xcbiBcXHRLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSxcXG4gXFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxcbiBcXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcXG4tXFx0S0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMsXFxuIFxcdEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybixcXG4tXFx0S0ZfYnBmX3N0cmVhbV92cHJpbnRrLFxcbi1cXHRLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrLFxcbiB9O1xcbiBcXG4gQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbkBAIC0xMTE4NSwxNCArMTExODIsMTEgQEAgQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKVxcbiBCVEZfSUQoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUpXFxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfYWxsb2NfcGFnZXMpXFxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcylcXG4tQlRGX0lEKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKVxcbiAjaWZkZWYgQ09ORklHX0JQRl9FVkVOVFNcXG4gQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2lzX3JldHVybilcXG4gI2Vsc2VcXG4gQlRGX0lEX1VOVVNFRFxcbiAjZW5kaWZcXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aylcXG4tQlRGX0lEKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2spXFxuIFxcbiBzdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG4ge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0MS4wMDc2NTUxMDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODIxNjg1Mzk4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDlkNmZkYTdmMWU5YzYwNTAzZDBmNDU1MDc3YTBhNmU4ODhhYjhkNDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxOTozOTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvdmVyaWZpZXIuYyBiL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuaW5kZXggYWRkM2FmZmM1NzAzNS4uODc5N2FlMDhmMjMyNSAxMDA2NDRcbi0tLSBhL2tlcm5lbC9icGYvdmVyaWZpZXIuY1xuKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jXG5AQCAtMTEwOTIsMTAgKzExMDkyLDcgQEAgZW51bSBzcGVjaWFsX2tmdW5jX3R5cGUge1xuIFx0S0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9yZXN1bWUsXG4gXHRLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXMsXG4gXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcbi1cdEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLFxuIFx0S0ZfYnBmX3Nlc3Npb25faXNfcmV0dXJuLFxuLVx0S0ZfYnBmX3N0cmVhbV92cHJpbnRrLFxuLVx0S0ZfYnBmX3N0cmVhbV9wcmludF9zdGFjayxcbiB9O1xuIFxuIEJURl9JRF9MSVNUKHNwZWNpYWxfa2Z1bmNfbGlzdClcbkBAIC0xMTE4NSwxNCArMTExODIsMTEgQEAgQlRGX0lEKGZ1bmMsIGJwZl90YXNrX3dvcmtfc2NoZWR1bGVfc2lnbmFsKVxuIEJURl9JRChmdW5jLCBicGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSlcbiBCVEZfSUQoZnVuYywgYnBmX2FyZW5hX2FsbG9jX3BhZ2VzKVxuIEJURl9JRChmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcylcbi1CVEZfSUQoZnVuYywgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMpXG4gI2lmZGVmIENPTkZJR19CUEZfRVZFTlRTXG4gQlRGX0lEKGZ1bmMsIGJwZl9zZXNzaW9uX2lzX3JldHVybilcbiAjZWxzZVxuIEJURl9JRF9VTlVTRURcbiAjZW5kaWZcbi1CVEZfSUQoZnVuYywgYnBmX3N0cmVhbV92cHJpbnRrKVxuLUJURl9JRChmdW5jLCBicGZfc3RyZWFtX3ByaW50X3N0YWNrKVxuIFxuIHN0YXRpYyBib29sIGlzX2JwZl9vYmpfbmV3X2tmdW5jKHUzMiBmdW5jX2lkKVxuIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQxLjAwNzY1NjM2OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMDM1MzA1MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBCUEYgVmVyaWZpZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBJbW1lZGlhdGVseSwgbXkgc3BpZGV5IHNlbnNlcyBhcmUgdGluZ2xpbmcuIEFueXRoaW5nIG1vZGlmeWluZyB0aGUgQlBGIHZlcmlmaWVyIGlzIHNvbWV0aGluZyB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvLiBJdCBzZWVtcyB0aGlzIHBhdGNoIGlzIGNsZWFuaW5nIHVwIHNvbWUga2Z1bmMgdHlwZXM6IHNwZWNpZmljYWxseSwgaXQncyBheGluZyBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgLCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCwgYW5kIGBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrYCwgYWxvbmcgd2l0aCB0aGVpciBhc3NvY2lhdGVkIGBCVEZfSURgIGVudHJpZXMuIFRoYXQncyBhIGZvY3VzZWQgc2V0IG9mIGNoYW5nZXMsIGF0IGxlYXN0LlxuXG5MZXQgbWUgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlc2UgcmVtb3ZhbHMgYXJlIHRoZSAqb25seSogY2hhbmdlcyBpbiB0aGUgcGF0Y2guIEFoLCB5ZXMsIGp1c3QgdGhlIGtmdW5jIGFuZCBCVEZfSUQgcmVtb3ZhbHMuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gcG9wcyB1cC4gRG9lcyB0aGlzIGhhdmUgYSBmdW5jdGlvbmFsIGltcGFjdCBvciBpcyBpdCBqdXN0IGNsZWFudXA/IFJlbW92aW5nIGtmdW5jIHR5cGVzIGFsbW9zdCBjZXJ0YWlubHkgbWVhbnMgcmVtb3Zpbmcgc3VwcG9ydCwgb3Igc3BlY2lhbGl6ZWQgaGFuZGxpbmcsIGZvciB0aG9zZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIEJQRiBzeXN0ZW0uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZnVuY3Rpb25hbGl0eSBpcyBub3cgZ29uZS5cblxuUmlnaHQsIHNvIEkgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayBga2VybmVsL2JwZi92ZXJpZmllci5jYCB0byBzZWUgaG93IHRob3NlIGBLRl9gIGVudW1zIHdlcmUgYmVpbmcgdXNlZCwgYW5kIHdoYXQgdGhhdCBtZWFucyBpbiB0ZXJtcyBvZiB0aGUgYnJvYWRlciBCUEYgZWNvc3lzdGVtLiBUaW1lIHRvIGRpZyBpbiBhbmQgdW5kZXJzdGFuZCB0aGUgcmFtaWZpY2F0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxNiwiT3V0cHV0VG9rZW5zIjoxMTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0Ny4xMTExOTAyMloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk5MDc0OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTozOTo0Ny4xNTUxODc0NTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMzkwODgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQ3LjIwMDMzMjMwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUzNzk5OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjQ3LjI0NTg3ODE3NloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTExMTY5MzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgRGlzYXBwZWFyYW5jZSBvZiBUaG9zZSBEZWZpbml0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIGRlZmluaXRpb25zIGFyZSBnb25lLCByZW1vdmVkIGluIGEgcGF0Y2guIFRoYXQgZXhwbGFpbnMgd2h5IHRoZXkncmUgbm90IGxpbmluZyB1cCB3aXRoIHdoYXQgSSdtIGN1cnJlbnRseSBsb29raW5nIGF0LiBGaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGNvbmZpcm0gdGhhdCB0aGVzZSBkZWZpbml0aW9ucyB3ZXJlbid0IHNpbXBseSByZWZhY3RvcmVkIG9yIG1vdmVkIHdpdGhpbiBga2VybmVsL2JwZi92ZXJpZmllci5jYCBiZWZvcmUgdGhlIHBhdGNoLiBXZXJlIHRoZXkgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhhdCBmaWxlICpiZWZvcmUqIHRoaXMgY2hhbmdlPyBJIGhhdmUgYSBodW5jaC4uLiBpZiB0aGV5IHdlcmUgeWFua2VkIGZyb20gdGhlIGVudW0gYW5kIHRoZSBCVEZfSUQgbGlzdCwgYW5kIHRoYXQgcGF0Y2ggaXMgdGhlIG9ubHkgb25lLCB0aGVuIGl0IHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZXkgd2VyZSAqb25seSogZGVmaW5lZCB0aGVyZS4gQmFzaWNhbGx5LCB0aGV5IHdlcmUgZGVhZCBjb2RlLCBuZXZlciBhY3R1YWxseSByZWZlcmVuY2VkIGluIHRoZSB2ZXJpZmllcidzIGxvZ2ljLiBTdGlsbCwgbGV0J3MgYmUgc3VyZS4gSnVzdCBiZWNhdXNlIHRoZXkgd2VyZW4ndCBpbiB0aGF0IHBhcnRpY3VsYXIgZmlsZSBkb2Vzbid0IG1lYW4gdGhleSB3ZXJlbid0IGluIGFub3RoZXIuIEknbGwgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoIHRvIGFsbCByZWxhdGVkIGZpbGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE1LCJPdXRwdXRUb2tlbnMiOjg5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6Mzk6NTEuNjM2OTk4NjYxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjQ5Mjg0NTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6Mzk6NTMuMjYxOTMyODkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTE2MjQ3NTAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjU0LjkxMzU2MzgyMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4OTA5NTU2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjM5OjU2LjQwMjY3MDUzNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzkwMzc5ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVbnVzZWQgRW51bXMgYW5kIEJURl9JRHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBlbnVtcyBhbmQgQlRGX0lEcywgYW5kIGl0IHNlZW1zIGxpa2UgdGhleSdyZSBqdXN0IHNpdHRpbmcgdGhlcmUsIHVudXNlZC4gQSBiaXQgb2YgYSBob3VzZWtlZXBpbmcgaXNzdWUsIHBlcmhhcHMuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQuIElmIHRoZXNlIHRoaW5ncyB3ZXJlICphY3R1YWxseSogaW4gdGhlIGBzcGVjaWFsX2tmdW5jX2xpc3RgLCB0aGV5IHdvdWxkIGhhdmUgYmVlbiB0aWVkIHRvIGEgc3BlY2lmaWMgZW50cnk6IGBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfLi4uXWAuIE5vdywgaGVyZSdzIHRoZSBrZXk6IGlmIHdlIG5ldmVyIGFjdHVhbGx5ICp1c2VkKiB0aGVtLCBsaWtlIGZvciBpbnN0YW5jZSwgYXNzaWduaW5nIG9uZSB0byBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zdHJlYW1fdnByaW50a11gLCB0aGVuIHRoZWlyIHJlbW92YWwgc2hvdWxkbid0IGFmZmVjdCBhbnl0aGluZyBhdCBydW50aW1lLiBJdCdzIGp1c3QgZGVhZCBjb2RlLCBlc3NlbnRpYWxseS4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCB0byBjb25maXJtIHRoaXMgaHVuY2guIExldCdzIG1ha2Ugc3VyZSBpdCdzIGFzIEkgZXhwZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjU4LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDowMC4xOTMwNTMyMDhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTE2NTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNwZWNpYWxfa2Z1bmNfbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5MzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwNC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA2OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PXN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjQ6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNzpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjMyOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfYWRkX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMzY9c3RhdGljIGJvb2wgaXNfdGFza193b3JrX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjQwLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yY3VfcmVhZF9sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjU1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF91bmxvY2soc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3OlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjYyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2VuYWJsZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3MD1ib29sIGJwZl9pc19rZnVuY19wa3RfY2hhbmdpbmcoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzEyLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cXHRcXHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTIwPXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNjpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNzpcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjgtXFx0XFx0aXJxX3NhdmUgPSB0cnVlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyOTpcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVxcdFxcdFxcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMzLVxcdFxcdGlycV9zYXZlID0gZmFsc2U7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTM0OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cXHRcXHRcXHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjkyPXN0YXRpYyBib29sIGlzX2JwZl9saXN0X2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVxcdHJldHVybiBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfZGVsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTk6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAyOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDctXFx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzEwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzE2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE4OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzIxLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXFx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VvZmYgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcXHQgICAgICAgaW5zbi1cXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzU0OlxcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwMS1cXHRcXHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDI6XFx0XFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAzOlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA0OlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA1LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVxcdFxcdHJldCA9IChpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhrZnVuY19idGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4OlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcXHRcXHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cXHRcXHRcXHRcXHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVxcdTAwM2Vwcm9nKSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlxcdFxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9YRFA7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxNy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX2ZpbGVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfRklMRSB8IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVxcdFxcdFxcdFxcdCAgIChkeW5wdHJfYXJnX3R5cGUgXFx1MDAyNiBNRU1fVU5JTklUKSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQwLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjI0MTpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cXHRcXHRcXHRcXHRpZiAoIWNoZWNrX2Nzc190YXNrX2l0ZXJfYWxsb3dsaXN0KGVudikpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyMjpcXHRcXHRcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjU6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfTE9DS19JUlE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cXHRcXHRtYXJrX3JlZ19ncmFwaF9ub2RlKHJlZ3MsIEJQRl9SRUdfMCwgXFx1MDAyNmZpZWxkLVxcdTAwM2VncmFwaF9yb290KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4Njg6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjktXFx0XFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXFx0XFx0cmVnc1tCUEZfUkVHXzBdLmJ0Zl9pZCA9IG1ldGEtXFx1MDAzZXJldF9idGZfaWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cXHRcXHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVxcdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVxcdFxcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVxcdTAwM2VkeW5wdHIudHlwZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMC1cXHRcXHRcXHRyZWdzW0JQRl9SRUdfMF0udHlwZSB8PSBNRU1fUkRPTkxZO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXFx0aWYgKCFpbnNuLVxcdTAwM2VvZmYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzI6XFx0ICAgIChpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MzpcXHQgICAgIGluc24tXFx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVxcdFxcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1OlxcdH0gZWxzZSBpZiAoIWluc24tXFx1MDAzZW9mZiBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX19fYnBmX3RyYXBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVxcdFxcdHZlcmJvc2UoZW52LCBcXFwidW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxcXG5cXFwiKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNi1cXHRcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXFx0XFx0bWFya19yZWdfdW5rbm93bihlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1OlxcdFxcdGlmIChtZXRhLmJ0ZiA9PSBidGZfdm1saW51eCBcXHUwMDI2XFx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNjY6XFx0XFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE2Ny1cXHRcXHRcXHRfX21hcmtfcmVnX2NvbnN0X3plcm8oZW52LCBcXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XFx0XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODgtXFx0XFx0XFx0XFx0XFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjItXFx0XFx0XFx0XFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjk5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcXHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzMwMS1cXHRcXHRlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzA3PXN0YXRpYyBpbnQgc3BlY2lhbGl6ZV9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2Rlc2MgKmRlc2MsIGludCBpbnNuX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cXHRcXHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cXHRcXHRzZWVuX2RpcmVjdF93cml0ZSA9IGVudi1cXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzUtXFx0XFx0ZW52LVxcdTAwM2VzZWVuX2RpcmVjdF93cml0ZSA9IHNlZW5fZGlyZWN0X3dyaXRlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcXHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNy1cXHRcXHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM4LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfc2V0X2RlbnRyeV94YXR0cl9sb2NrZWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQwLVxcdFxcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDEtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9yZW1vdmVfZGVudHJ5X3hhdHRyX2xvY2tlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDMtXFx0XFx0aWYgKCFlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cXHRcXHRcXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ4OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1MC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTE6XFx0XFx0aWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFx0XFx0ICAgIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NjQtXFx0XFx0XFx0XFx0XFx0XFx0bm9kZV9vZmZzZXRfcmVnLCBpbnNuLCBpbnNuX2J1ZiwgY250KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XFx0XFx0ICAgZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cXHRcXHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cXHRcXHQqY250ID0gMTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVxcdFxcdCAgIChlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVxcdFxcdCpjbnQgPSAzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4ODUtXFx0XFx0ICAgKGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDEtXFx0XFx0KmNudCA9IDY7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTAyOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDMtXFx0XFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXFx1MDAyNml0LCBzdGFydCwgZW5kKTsgUjE9XFx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjUtXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTI2OlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI3LVxcdFxcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcXHUwMDI2aXQpOyBSMT1cXHUwMDI2aXQsIHJldHVybnMgXFx1MDAyNnMtXFx1MDAzZWN1ciBvciBOVUxMICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVxcdFxcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjAwLjIzOTE3NDAxN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY5MjcwNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQlBGIEtlcm5lbCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyB0aHJvdWdoIHRoaXMgYHNwZWNpYWxpemVfa2Z1bmNgIGZ1bmN0aW9uIGFuZCBJIGltbWVkaWF0ZWx5IG5vdGljZSBzb21ldGhpbmcncyBvZmYuIEknbSBzZWVpbmcgYWxsb2NhdGlvbnMgYW5kIGRlYWxsb2NhdGlvbnMgd2l0aCBgS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzYCBhbmQgYEtGX2JwZl9hcmVuYV9mcmVlX3BhZ2VzYCwgd2hpY2ggaXMgZmluZSwgYnV0IHdoZXJlJ3MgdGhlICpyZXNlcnZhdGlvbiogY2FsbCwgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYD8gVGhhdCdzIGEgcmVkIGZsYWcuIEkgd291bGQgZXhwZWN0IHRvIHNlZSB0aGF0IGluIGEgbWVtb3J5IG1hbmFnZW1lbnQgY29udGV4dC5cblxuVGhlbiBJIG1vdmUgb24gYW5kIGZpbmQgYEtGX2JwZl9zZXNzaW9uX2lzX3JldHVybmAgYW5kIGBLRl9icGZfc2Vzc2lvbl9jb29raWVgIHByZXNlbnQsIHdoaWNoIGlzIGFzIGV4cGVjdGVkLCBidXQgd2hhdCBhYm91dCBgS0ZfYnBmX3N0cmVhbV92cHJpbnRrYCBhbmQgYEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2tgPyBUaGV5J3JlIG5vd2hlcmUgdG8gYmUgZm91bmQgaGVyZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHRoZXNlIHdlcmVuJ3QgdXNlZCBhdCBhbGwgaW4gYHZlcmlmaWVyLmNgIGFuZCBlbHNld2hlcmUuIFxuXG5CZWZvcmUganVtcGluZyB0byBjb25jbHVzaW9ucyB0aG91Z2gsIGxldCBtZSBqdXN0IGRvdWJsZSBjaGVjay4gTWF5YmUgSSdtIG1pc3Npbmcgc29tZXRoaW5nLCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IGlmIGBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2Agb3IgYGJwZl9zdHJlYW1fdnByaW50a2AgYXJlIGRlZmluZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUga2VybmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjAyMSwiT3V0cHV0VG9rZW5zIjo4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDowNS4yMDg0NDgxMDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTY1MzA2MTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvYXJlbmEuYz0xMDk1PXZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXNfbm9uX3NsZWVwYWJsZSh2b2lkICpwX19tYXAsIHZvaWQgKnB0cl9faWduLCB1MzIgcGFnZV9jbnQpXFxuLS1cXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEwNC1cXG5rZXJuZWwvYnBmL2FyZW5hLmM6MTEwNTpfX2JwZl9rZnVuYyBpbnQgYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXModm9pZCAqcF9fbWFwLCB2b2lkICpwdHJfX2lnbiwgdTMyIHBhZ2VfY250KVxcbmtlcm5lbC9icGYvYXJlbmEuYy0xMTA2LXtcXG4tLVxcbmtlcm5lbC9icGYvYXJlbmEuYz0xMTIyPUJURl9JRF9GTEFHUyhmdW5jLCBicGZfYXJlbmFfZnJlZV9wYWdlcywgS0ZfQVJFTkFfQVJHMiB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9hcmVuYS5jOjExMjM6QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9BUkVOQV9BUkcyIHwgS0ZfU1BJTkxPQ0tfU0FGRSlcXG5rZXJuZWwvYnBmL2FyZW5hLmMtMTEyNC1CVEZfS0ZVTkNTX0VORChhcmVuYV9rZnVuY3MpXFxuLS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvYnBmX2FyZW5hX2NvbW1vbi5icGYuaD04NT12b2lkIGJwZl9hcmVuYV9mcmVlX3BhZ2VzKHZvaWQgKm1hcCwgdm9pZCBfX2FyZW5hICpwdHIsIF9fdTMyIHBhZ2VfY250KSBfX2tzeW0gX193ZWFrO1xcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9icGZfYXJlbmFfY29tbW9uLmJwZi5oOjg2OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqcHRyLCBfX3UzMiBwYWdlX2NudCkgX19rc3ltIF9fd2VhaztcXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvYnBmX2FyZW5hX2NvbW1vbi5icGYuaC04Ny1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9pbmNsdWRlL2JwZl9hcmVuYV9jb21tb24uaD00Nz12b2lkIF9fYXJlbmEqIGJwZl9hcmVuYV9hbGxvY19wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQsXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oLTQ4LVxcdFxcdFxcdFxcdCAgICBpbnQgbm9kZV9pZCwgX191NjQgZmxhZ3MpIF9fa3N5bSBfX3dlYWs7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oOjQ5OmludCBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyh2b2lkICptYXAsIHZvaWQgX19hcmVuYSAqYWRkciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL2luY2x1ZGUvYnBmX2FyZW5hX2NvbW1vbi5oLTUwLXZvaWQgYnBmX2FyZW5hX2ZyZWVfcGFnZXModm9pZCAqbWFwLCB2b2lkIF9fYXJlbmEgKnB0ciwgX191MzIgcGFnZV9jbnQpIF9fa3N5bSBfX3dlYWs7XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jPTY0PXN0YXRpYyBpbnQgYnVkZHlfcmVzZXJ2ZV9hcmVuYV92YWRkcihzdHJ1Y3QgYnVkZHkgX19hcmVuYSAqYnVkZHkpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYnVkZHkuYnBmLmM6Njg6XFx0cmV0dXJuIGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSxcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2J1ZGR5LmJwZi5jLTY5LVxcdFxcdFxcdFxcdCAgICAgICAodm9pZCBfX2FyZW5hICopQlVERFlfVkFERFJfT0ZGU0VULFxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmM9Mjc9X193ZWFrIGludCBhcmVuYV9hbGxvY19yZXNlcnZlKHN0cnVjdCBhcmVuYV9hbGxvY19yZXNlcnZlX2FyZ3MgKmFyZ3MpXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9jb21tb24uYnBmLmMtMjgte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvY29tbW9uLmJwZi5jOjI5OlxcdHJldHVybiBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIGFyZ3MtXFx1MDAzZW5yX3BhZ2VzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvbGliYXJlbmEvc3JjL2NvbW1vbi5icGYuYy0zMC19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yMzQ9aW50IGJhc2ljX3Jlc2VydmUxX25vc2xlZXAodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ2LVxcdC8qIFJlc2VydmUgdGhlIHNlY29uZCBwYWdlICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6MjQ3OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgMSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMjQ4LVxcdGlmIChyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0yNjY9aW50IGJhc2ljX3Jlc2VydmUxKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTI3OC1cXHQvKiBSZXNlcnZlIHRoZSBzZWNvbmQgcGFnZSAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjI3OTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTI4MC1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9Mjk4PWludCBiYXNpY19yZXNlcnZlMl9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNC1cXHRwYWdlID0gYXJlbmFfYmFzZShcXHUwMDI2YXJlbmEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjMwNTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTMwNi1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM9MzE4PWludCBiYXNpY19yZXNlcnZlMih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zMjQtXFx0cGFnZSA9IGFyZW5hX2Jhc2UoXFx1MDAyNmFyZW5hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozMjU6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zMjYtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTMzOT1pbnQgcmVzZXJ2ZV90d2ljZV9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM0Ni1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNDc6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNDgtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM1MC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozNTE6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zNTItXFx0aWYgKHJldCAhPSAtRUJVU1kpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz0zNjA9aW50IHJlc2VydmVfdHdpY2Uodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzY3LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM2ODpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM2OS1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzcxLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM3MjpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM3My1cXHRpZiAocmV0ICE9IC1FQlVTWSlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTM4Mj1pbnQgcmVzZXJ2ZV9pbnZhbGlkX3JlZ2lvbl9ub3NsZWVwKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM4OC1cXHQvKiBUcnkgYSBOVUxMIHBvaW50ZXIuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6Mzg5OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgTlVMTCwgMyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzkwLVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTM5NC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzozOTU6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAzKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy0zOTYtXFx0aWYgKHJldCAhPSAtRUlOVkFMKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtMzk4LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjM5OTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsIDQwOTYpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQwMC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MDItXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDAzOlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgKDFVTEwgXFx1MDAzY1xcdTAwM2MgMzIpIC0gMSk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDA0LVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jPTQxMj1pbnQgcmVzZXJ2ZV9pbnZhbGlkX3JlZ2lvbih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MTgtXFx0LyogVHJ5IGEgTlVMTCBwb2ludGVyLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQxOTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIE5VTEwsIDMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyMC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MjQtXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmM6NDI1OlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgcGFnZSwgMyk7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDI2LVxcdGlmIChyZXQgIT0gLUVJTlZBTClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQyOC1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0Mjk6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCA0MDk2KTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00MzAtXFx0aWYgKHJldCAhPSAtRUlOVkFMKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hLmMtNDMyLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jOjQzMzpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIHBhZ2UsICgxVUxMIFxcdTAwM2NcXHUwMDNjIDMyKSAtIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYS5jLTQzNC1cXHRpZiAocmV0ICE9IC1FSU5WQUwpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYz00Nzk9aW50IGFyZW5hX2tmdW5jc191bmRlcl9icGZfbG9jayh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00ODgtXFx0cGFnZSA9IGFyZW5hX2Jhc2UoXFx1MDAyNmFyZW5hKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYzo0ODk6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBwYWdlLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmEuYy00OTAtXFx0aWYgKHJldCkge1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM9MzM9aW50IGNoZWNrX3Jlc2VydmUxKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ1LVxcdC8qIFJlc2VydmUgdGhlIHJlZ2lvbiB3ZSd2ZSBvZmZzZXQgdGhlIGdsb2JhbHMgYnkuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NDY6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBndWFyZCwgQVJFTkFfUEFHRVMgLSBHTE9CQUxfUEFHRVMpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMS5jLTQ3LVxcdGlmIChyZXQpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01MC1cXHQvKiBNYWtlIHN1cmUgdGhlIGdsb2JhbHMgYXJlIGluIHRoZSBleHBlY3RlZCBvZmZzZXQuICovXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2dsb2JhbHMxLmM6NTE6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBnbG9iYWxzLCAxKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczEuYy01Mi1cXHRpZiAoIXJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jPTMzPWludCBjaGVja19yZXNlcnZlMih2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfZ2xvYmFsczIuYy00MS1cXHQvKiBNYWtlIHN1cmUgdGhlIGRhdGEgYXQgb2Zmc2V0IDAgY2FzZSBpcyBwcm9wZXJseSBoYW5kbGVkLiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jOjQyOlxcdHJldCA9IGJwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzKFxcdTAwMjZhcmVuYSwgZ3VhcmQsIDEpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9nbG9iYWxzMi5jLTQzLVxcdGlmICghcmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9ODY9aW50IGFjY2Vzc19yZXNlcnZlZCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy05Ni1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzo5NzpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIGJhc2UsIGxlbik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtOTgtXFx0aWYgKHJldClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jPTEyNT1pbnQgcmVxdWVzdF9wYXJ0aWFsbHlfcmVzZXJ2ZWQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmMtMTM0LVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jOjEzNTpcXHRyZXQgPSBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcyhcXHUwMDI2YXJlbmEsIGJhc2UgKyAzICogX19QQUdFX1NJWkUsIDQpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTEzNi1cXHRpZiAocmV0KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3ZlcmlmaWVyX2FyZW5hX2xhcmdlLmM9MTQ4PWludCBmcmVlX3Jlc2VydmVkKHZvaWQgKmN0eClcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy92ZXJpZmllcl9hcmVuYV9sYXJnZS5jLTE2MS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYzoxNjI6XFx0cmV0ID0gYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXMoXFx1MDAyNmFyZW5hLCBhZGRyICsgMiAqIF9fUEFHRV9TSVpFLCAyKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3MvdmVyaWZpZXJfYXJlbmFfbGFyZ2UuYy0xNjMtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDYuNzA0OTgyNjg4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyMDYyODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zdHJlYW1fdnByaW50a1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi9oZWxwZXJzLmM9NDk2NT1CVEZfSURfRkxBR1MoZnVuYywgYnBmX2Nncm91cF9yZWFkX3hhdHRyLCBLRl9SQ1UpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2Ni0jZW5kaWZcXG5rZXJuZWwvYnBmL2hlbHBlcnMuYzo0OTY3OkJURl9JRF9GTEFHUyhmdW5jLCBicGZfc3RyZWFtX3ZwcmludGssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbmtlcm5lbC9icGYvaGVscGVycy5jLTQ5NjgtQlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2ssIEtGX0lNUExJQ0lUX0FSR1MgfCBLRl9TUElOTE9DS19TQUZFKVxcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYz0yMDk9X19icGZfa2Z1bmNfc3RhcnRfZGVmcygpO1xcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yMTQtICovXFxua2VybmVsL2JwZi9zdHJlYW0uYzoyMTU6X19icGZfa2Z1bmMgaW50IGJwZl9zdHJlYW1fdnByaW50ayhpbnQgc3RyZWFtX2lkLCBjb25zdCBjaGFyICpmbXRfX3N0ciwgY29uc3Qgdm9pZCAqYXJncyxcXG5rZXJuZWwvYnBmL3N0cmVhbS5jLTIxNi1cXHRcXHRcXHRcXHQgICB1MzIgbGVuX19zeiwgc3RydWN0IGJwZl9wcm9nX2F1eCAqYXV4KVxcbi0tXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0PTE4Mz1icGZ0b29sIHByb2cgdHJhY2Vsb2cgeyBzdGRvdXQgfCBzdGRlcnIgfSAqUFJPRypcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3QtMTg0LSAgICBEdW1wIHRoZSBCUEYgc3RyZWFtIG9mIHRoZSBwcm9ncmFtLiBCUEYgcHJvZ3JhbXMgY2FuIHdyaXRlIHRvIHRoZXNlIHN0cmVhbXNcXG50b29scy9icGYvYnBmdG9vbC9Eb2N1bWVudGF0aW9uL2JwZnRvb2wtcHJvZy5yc3Q6MTg1OiAgICBhdCBydW50aW1lIHdpdGggdGhlICoqYnBmX3N0cmVhbV92cHJpbnRrX2ltcGwqKlxcXFwgKCkga2Z1bmMuIFRoZSBrZXJuZWwgbWF5IHdyaXRlXFxudG9vbHMvYnBmL2JwZnRvb2wvRG9jdW1lbnRhdGlvbi9icGZ0b29sLXByb2cucnN0LTE4Ni0gICAgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbS4gVGhpcyBmYWNpbGl0eSBzaG91bGQgYmUgdXNlZFxcbi0tXFxudG9vbHMvbGliL2JwZi9icGZfaGVscGVycy5oPTE4NT1lbnVtIGxpYmJwZl90cmlzdGF0ZSB7XFxuLS1cXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmg6MzI4OlxcdGJwZl9zdHJlYW1fdnByaW50ayhzdHJlYW1faWQsIF9fX2ZtdCwgX19fcGFyYW0sIHNpemVvZihfX19wYXJhbSkpO1xcdFxcdFxcXFxcXG50b29scy9saWIvYnBmL2JwZl9oZWxwZXJzLmgtMzI5LX0pXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYz0xMT1pbnQgc3RyZWFtX3ZwcmludGtfbnVsbF9hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTEyLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoxMzpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgXFxcIlxcXCIsIE5VTEwsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTE0LVxcdHJldHVybiAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9MTk9aW50IHN0cmVhbV92cHJpbnRrX3NjYWxhcl9hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIwLXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoyMTpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgXFxcIlxcXCIsICh2b2lkICopNDYsIDApO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTIyLVxcdHJldHVybiAwO1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbV9mYWlsLmM9Mjc9aW50IHN0cmVhbV92cHJpbnRrX3N0cmluZ19hcmcodm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW1fZmFpbC5jLTI4LXtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYzoyOTpcXHRicGZfc3RyZWFtX3ZwcmludGsoQlBGX1NURE9VVCwgY3R4LCBOVUxMLCAwKTtcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtX2ZhaWwuYy0zMC1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDguMTc3MDUwMTAyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDgzNDI4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJwZl9zdHJlYW1fcHJpbnRfc3RhY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvaGVscGVycy5jPTQ5Njc9QlRGX0lEX0ZMQUdTKGZ1bmMsIGJwZl9zdHJlYW1fdnByaW50aywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmM6NDk2ODpCVEZfSURfRkxBR1MoZnVuYywgYnBmX3N0cmVhbV9wcmludF9zdGFjaywgS0ZfSU1QTElDSVRfQVJHUyB8IEtGX1NQSU5MT0NLX1NBRkUpXFxua2VybmVsL2JwZi9oZWxwZXJzLmMtNDk2OS1CVEZfSURfRkxBR1MoZnVuYywgYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWwsIEtGX0lNUExJQ0lUX0FSR1MpXFxuLS1cXG5rZXJuZWwvYnBmL3N0cmVhbS5jPTIxNT1fX2JwZl9rZnVuYyBpbnQgYnBmX3N0cmVhbV92cHJpbnRrKGludCBzdHJlYW1faWQsIGNvbnN0IGNoYXIgKmZtdF9fc3RyLCBjb25zdCB2b2lkICphcmdzLFxcbi0tXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yNDgtLyogRGlyZWN0bHkgdHJpZ2dlciBhIHN0YWNrIGR1bXAgZnJvbSB0aGUgcHJvZ3JhbS4gKi9cXG5rZXJuZWwvYnBmL3N0cmVhbS5jOjI0OTpfX2JwZl9rZnVuYyBpbnQgYnBmX3N0cmVhbV9wcmludF9zdGFjayhpbnQgc3RyZWFtX2lkLCBzdHJ1Y3QgYnBmX3Byb2dfYXV4ICphdXgpXFxua2VybmVsL2JwZi9zdHJlYW0uYy0yNTAte1xcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jPTE5NT1fX3dlYWsgaW50IGFzYW5fcmVwb3J0KHM4IF9fYXJlbmEgKmFkZHIsIHNpemVfdCBzeiwgdTMyIGZsYWdzKVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jLTIwOC1cXHRcXHRcXHRzeik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2xpYmFyZW5hL3NyYy9hc2FuLmJwZi5jOjIwOTpcXHRicGZfc3RyZWFtX3ByaW50X3N0YWNrKEJQRl9TVERFUlIpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9saWJhcmVuYS9zcmMvYXNhbi5icGYuYy0yMTAtXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9Mjk0PWludCBzdHJlYW1fcHJpbnRfc3RhY2tfa2Z1bmModm9pZCAqY3R4KVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0yOTUte1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzoyOTY6XFx0cmV0dXJuIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soQlBGX1NUREVSUik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTI5Ny19XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM9MzAxPWludCBzdHJlYW1fcHJpbnRfc3RhY2tfaW52YWxpZF9pZCh2b2lkICpjdHgpXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmMtMzAzLVxcdC8qIFRyeSB0byBwYXNzIGFuIGludmFsaWQgc3RyZWFtIElELiAqL1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYzozMDQ6XFx0cmV0dXJuIGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soKGVudW0gYnBmX3N0cmVhbV9pZCkweGJhZGNhZmUpO1xcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9wcm9ncy9zdHJlYW0uYy0zMDUtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jPTMxNj1pbnQgc3RyZWFtX3ByaW50X2tmdW5jc19sb2NrZWQodm9pZCAqY3R4KVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvcHJvZ3Mvc3RyZWFtLmM6MzI2OlxcdHJldCA9IGJwZl9zdHJlYW1fcHJpbnRfc3RhY2soQlBGX1NUREVSUik7XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL3Byb2dzL3N0cmVhbS5jLTMyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MDkuNjYwNDg0MDM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxNzc5MDMzMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBLRnVuYyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBnb3QgcmVtb3ZlZCBmcm9tIHRoZSBgc3BlY2lhbF9rZnVuY19saXN0YCwgYnV0IGBicGZfYXJlbmFfcmVzZXJ2ZV9wYWdlc2AgaXMgc3RpbGwgYSBkZWZpbmVkIGtmdW5jIGluIGBrZXJuZWwvYnBmL2FyZW5hLmNgLiBUaGF0J3MgYSBsaXR0bGUgcGVjdWxpYXIuIFRoZSBwdXJwb3NlIG9mIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHRvIGZsYWcga2Z1bmNzIHRoYXQgbmVlZCBzcGVjaWFsIGF0dGVudGlvbiBmcm9tIHRoZSB2ZXJpZmllci5cblxuU28sIHRoZSBmYWN0IHRoYXQgaXQgd2FzIHJlbW92ZWQgbWVhbnMgdGhhdCBpdCAqc2hvdWxkKiBubyBsb25nZXIgYmUgZ2V0dGluZyB0aGF0IHNwZWNpYWwgdHJlYXRtZW50LiBCdXQgaWYgdGhhdCdzIHRoZSBjYXNlLCB3aGF0IHNwZWNpYWwgaGFuZGxpbmcgKndhcyogaXQgcmVjZWl2aW5nPyBJIG5lZWQgdG8gZmlndXJlIHRoaXMgb3V0LlxuXG5SaWdodCwgbGV0IG1lIHNlYXJjaCBmb3IgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCB3aXRoaW4gdGhlIHZlcmlmaWVyIGNvZGUsIGBrZXJuZWwvYnBmL3ZlcmlmaWVyLmNgLiBBaGEhIEkgZm91bmQgbm8gbWF0Y2hlcy4gVGhhdOKAmXMgb2RkLiBUaGlzIG1lYW5zIGl0IHdhcyBuZXZlciBhY3R1YWxseSBjaGVja2VkIGluIHRoZSB2ZXJpZmllciwgZXZlbiB3aGVuIGl0ICp3YXMqIGluIHRoZSBlbnVtIGFuZCBgQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KWAuIEVzc2VudGlhbGx5LCBpdCB3YXMganVzdCBsaXN0ZWQsIGJ1dCBub3QgYWN0dWFsbHkgKnVzZWQqIGJ5IHRoZSB2ZXJpZmllci4gU28sIGl0IGFwcGVhcnMgdGhhdCB0aGUgcmVtb3ZhbCBvZiBgS0ZfYnBmX2FyZW5hX3Jlc2VydmVfcGFnZXNgIGRvZXNuJ3QgYWN0dWFsbHkgY2hhbmdlIGFueXRoaW5nIGZyb20gYSB2ZXJpZmljYXRpb24gcGVyc3BlY3RpdmUgYmVjYXVzZSBpdCB3YXMgbmV2ZXIgdHJlYXRlZCBzcGVjaWFsbHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgYWxsIG9mIHRoaXMgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg0MjgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDoxNy44MzgzOTA1MzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTAzMzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIktGX2JwZl9hcmVuYV9hbGxvY19wYWdlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL3ZlcmlmaWVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Mi1cXHRLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZSxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTM6XFx0S0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzLFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5NC1cXHRLRl9icGZfYXJlbmFfZnJlZV9wYWdlcyxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xOTcwNz1zdGF0aWMgaW50IHNwZWNpYWxpemVfa2Z1bmMoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9rZnVuY19kZXNjICpkZXNjLCBpbnQgaW5zbl9pZHgpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDQtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9keW5wdHJfZnJvbV9maWxlX3NsZWVwYWJsZTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfYXJlbmFfYWxsb2NfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ2LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjE3Ljg4MTI5OTk5NFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODMxMTQ2MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFJlZHVuZGFudCBLRnVuYyBFbnRyaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYEtGX2JwZl9hcmVuYV9hbGxvY19wYWdlc2AgYW5kIGhvdyBpdCdzIHVzZWQgd2l0aGluIGBzcGVjaWFsaXplX2tmdW5jYC4gTWFrZXMgc2Vuc2UuIFRoZW4gSSBzZWUgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCBsaXN0ZWQsIGJ1dCBJJ20gdGhpbmtpbmcsIFwiV2FpdCBhIG1pbnV0ZS4uLml0J3Mgbm90IHVzZWQgaW4gYHZlcmlmaWVyLmNgICphbnl3aGVyZSogZXhjZXB0IGluIHRoZSBlbnVtIGFuZCBgQlRGX0lEX0xJU1RgIVwiIFRoYXQncyBhIHJlZCBmbGFnLiBJdCBzZWVtcyB0aGF0IGl0cyBpbmNsdXNpb24gaW4gYHNwZWNpYWxfa2Z1bmNfbGlzdGAgaXMgY29tcGxldGVseSBwb2ludGxlc3MsIHV0dGVybHkgcmVkdW5kYW50LCBhbmQgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcuIFNhbWUgdGhpbmcgZm9yIGBLRl9icGZfc3RyZWFtX3ZwcmludGtgIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2DigJMgdGhleSdyZSBqdXN0IHNpdHRpbmcgdGhlcmUgaW4gdGhlIGVudW0gYW5kIGBCVEZfSURfTElTVGAsIHdpdGhvdXQgYW55IHNwZWNpYWwgbG9naWMgYXBwbGllZCB0byB0aGVtIHdpdGhpbiBgdmVyaWZpZXIuY2AuXG5cbkFoYSwgaG9sZCBvbi4gSSdtIHJlbWVtYmVyaW5nIGhvdyBgQlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KWAgd29ya3M6IGl0IGNyZWF0ZXMgYW4gYXJyYXkgb2YgQlRGIElEcy4gU28sIGlmIGEga2Z1bmMgaXMgb24gdGhhdCBsaXN0LCBhbGwgaXQgKm1lYW5zKiBpcyB0aGF0IGl0cyBCVEYgSUQgaXMgc3RvcmVkIGluIHRoYXQgYXJyYXkuIElmIHRoZSB2ZXJpZmllciBkb2Vzbid0IGV2ZXIgYWN0dWFsbHkgKmFjY2VzcyogdGhhdCBwYXJ0aWN1bGFyIGVsZW1lbnQgb2YgYHNwZWNpYWxfa2Z1bmNfbGlzdGAsIHNheSBgc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzXWAsIHRoZW4gdGhlIGZhY3QgdGhhdCBpdHMgQlRGIElEIGlzICppbiogdGhlIGFycmF5IGlzIGZ1bmN0aW9uYWxseSBpcnJlbGV2YW50LiBJdHMgcHJlc2VuY2UgaXMgd2FzdGVkLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBgc3BlY2lhbF9rZnVuY19saXN0YCBpc24ndCB1c2VkIGluIHNvbWUgb3RoZXIgd2F5LCBwZXJoYXBzIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGl0LiBUaGlzIHdpbGwgY29uZmlybSBteSB0aGVvcnkgdGhhdCB0aGUgZW50cmllcyBhcmUgdW51c2VkIGFuZCBjYW4gYmUgcmVtb3ZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkzMDgsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MjMuNzEyNDQ4ODY1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjczNjUwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzcGVjaWFsX2tmdW5jX2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2JwZi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2JwZi92ZXJpZmllci5jPTExMDI4PWVudW0gc3BlY2lhbF9rZnVuY190eXBlIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5Ny1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEwOTg6QlRGX0lEX0xJU1Qoc3BlY2lhbF9rZnVuY19saXN0KVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTA5OS1CVEZfSUQoZnVuYywgYnBmX29ial9uZXdfaW1wbClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTE5MT1zdGF0aWMgYm9vbCBpc19icGZfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5MzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX29ial9uZXddIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMTk0OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX25ld19pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTUtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMTk3PXN0YXRpYyBib29sIGlzX2JwZl9wZXJjcHVfb2JqX25ld19rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTExOTgte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTE5OTpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIwMDpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfbmV3X2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwMS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMDM9c3RhdGljIGJvb2wgaXNfYnBmX29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIwNC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA1OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjA2OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfb2JqX2Ryb3BfaW1wbF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjA3LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTIwOT1zdGF0aWMgYm9vbCBpc19icGZfcGVyY3B1X29ial9kcm9wX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxMC17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjExOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcGVyY3B1X29ial9kcm9wXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIxMjpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3BlcmNwdV9vYmpfZHJvcF9pbXBsXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjE1PXN0YXRpYyBib29sIGlzX2JwZl9yZWZjb3VudF9hY3F1aXJlX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxNi17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjE3OlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVmY291bnRfYWNxdWlyZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMTg6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZWZjb3VudF9hY3F1aXJlX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIxOS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMjE9c3RhdGljIGJvb2wgaXNfYnBmX2xpc3RfcHVzaF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjIte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyMzpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcHVzaF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjQ6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfZnJvbnRfaW1wbF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjU6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMjY6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X3B1c2hfYmFja19pbXBsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIyNzpcXHQgICAgICAgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYWRkXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMjgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjMwPXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKHUzMiBmdW5jX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzMS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjMyOlxcdHJldHVybiBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyMzM6XFx0ICAgICAgIGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfYWRkX2ltcGxdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTIzNC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTEyMzY9c3RhdGljIGJvb2wgaXNfdGFza193b3JrX2FkZF9rZnVuYyh1MzIgZnVuY19pZClcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyMzcte1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTIzODpcXHRyZXR1cm4gZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rhc2tfd29ya19zY2hlZHVsZV9zaWduYWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjM5OlxcdCAgICAgICBmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGFza193b3JrX3NjaGVkdWxlX3Jlc3VtZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjQwLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI1MD1zdGF0aWMgYm9vbCBpc19rZnVuY19icGZfcmN1X3JlYWRfbG9jayhzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjUxLXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNTI6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yY3VfcmVhZF9sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjU1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9yY3VfcmVhZF91bmxvY2soc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI1Ni17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjU3OlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmN1X3JlYWRfdW5sb2NrXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNTgtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjYwPXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2Rpc2FibGUoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI2MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjYyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcHJlZW1wdF9kaXNhYmxlXTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTEyNjMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExMjY1PXN0YXRpYyBib29sIGlzX2tmdW5jX2JwZl9wcmVlbXB0X2VuYWJsZShzdHJ1Y3QgYnBmX2NhbGxfYXJnX21ldGEgKm1ldGEpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTEyNjc6XFx0cmV0dXJuIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9wcmVlbXB0X2VuYWJsZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjY4LX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3MD1ib29sIGJwZl9pc19rZnVuY19wa3RfY2hhbmdpbmcoc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTI3MS17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMjcyOlxcdHJldHVybiBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfeGRwX3B1bGxfZGF0YV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMjczLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTI3Nj1nZXRfa2Z1bmNfYXJnX3R5cGUoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudiwgc3RydWN0IGJwZl9jYWxsX2FyZ19tZXRhICptZXRhLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExMzEyLVxcdCAqL1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTMxMzpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2Nhc3RfdG9fa2Vybl9jdHhdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE0OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExMzE1OlxcdCAgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTMxNi1cXHRcXHRhcmdfdHlwZSA9IEtGX0FSR19QVFJfVE9fQ1RYO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNTIwPXN0YXRpYyBpbnQgcHJvY2Vzc19pcnFfZmxhZyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX3JlZ19zdGF0ZSAqcmVnLCBhcmdub190IGFyZ25vLFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTI1LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNjpcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9zYXZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyNzpcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE1MjgtXFx0XFx0aXJxX3NhdmUgPSB0cnVlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUyOTpcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMwLVxcdFxcdFxcdGtmdW5jX2NsYXNzID0gSVJRX0xPQ0tfS0ZVTkM7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTMxOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xvY2FsX2lycV9yZXN0b3JlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTUzMjpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNTMzLVxcdFxcdGlycV9zYXZlID0gZmFsc2U7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNTM0OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fdW5sb2NrX2lycXJlc3RvcmVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTUzNS1cXHRcXHRcXHRrZnVuY19jbGFzcyA9IElSUV9MT0NLX0tGVU5DO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNjkyPXN0YXRpYyBib29sIGlzX2JwZl9saXN0X2FwaV9rZnVuYyh1MzIgYnRmX2lkKVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNjk0LVxcdHJldHVybiBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTU6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfcG9wX2Zyb250XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5NjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9wb3BfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTc6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfZGVsXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTY5ODpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9mcm9udF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE2OTk6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfYmFja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDA6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAxOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2lzX2xhc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzAyOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2VtcHR5XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzA1PXN0YXRpYyBib29sIGlzX2JwZl9yYnRyZWVfYXBpX2tmdW5jKHUzMiBidGZfaWQpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MDctXFx0cmV0dXJuIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGJ0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MDg6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9yZW1vdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzA5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzEwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcm9vdF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTE6XFx0ICAgICAgIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JidHJlZV9sZWZ0XSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTcxMjpcXHQgICAgICAgYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX3JpZ2h0XTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3MTMtfVxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTExNzE1PXN0YXRpYyBib29sIGlzX2JwZl9yZXNfc3Bpbl9sb2NrX2tmdW5jKHUzMiBidGZfaWQpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzE2LXtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE3MTc6XFx0cmV0dXJuIGJ0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE4OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzE5OlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrX2lycXNhdmVdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzIwOlxcdCAgICAgICBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExNzIxLX1cXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYz0xMTc0Nj1ib29sIGJwZl9pc190aHJvd19rZnVuYyhzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE3NDgtXFx0cmV0dXJuIGJwZl9wc2V1ZG9fa2Z1bmNfY2FsbChpbnNuKSBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VvZmYgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTc0OTpcXHQgICAgICAgaW5zbi1cXHUwMDNlaW1tID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfdGhyb3ddO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1MC19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3NTI9c3RhdGljIGJvb2wgaXNfYnBmX3dxX3NldF9jYWxsYmFja19rZnVuYyh1MzIgYnRmX2lkKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1My17XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExNzU0OlxcdHJldHVybiBidGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl93cV9zZXRfY2FsbGJhY2tdO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTc1NS19XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE3OTM9c3RhdGljIGJvb2wgY2hlY2tfa2Z1bmNfaXNfZ3JhcGhfbm9kZV9hcGkoc3RydWN0IGJwZl92ZXJpZmllcl9lbnYgKmVudixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMTgwMS1cXHRcXHRyZXQgPSBpc19icGZfbGlzdF9wdXNoX2tmdW5jKGtmdW5jX2J0Zl9pZCkgfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTE4MDI6XFx0XFx0ICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfbGlzdF9kZWxdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODAzOlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfZmlyc3RdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA0OlxcdFxcdCAgICAgIGtmdW5jX2J0Zl9pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2xpc3RfaXNfbGFzdF07XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA1LVxcdFxcdGJyZWFrO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTExODA3LVxcdFxcdHJldCA9IChpc19icGZfcmJ0cmVlX2FkZF9rZnVuYyhrZnVuY19idGZfaWQpIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODA4OlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmVtb3ZlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMTgwOTpcXHRcXHQgICAgICAga2Z1bmNfYnRmX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmJ0cmVlX2xlZnRdIHx8XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjExODEwOlxcdFxcdCAgICAgICBrZnVuY19idGZfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yYnRyZWVfcmlnaHRdKTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTE4MTEtXFx0XFx0YnJlYWs7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTE5OTc9c3RhdGljIGludCBjaGVja19rZnVuY19hcmdzKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2My1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTIxNjQ6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9jYXN0X3RvX2tlcm5fY3R4XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjE2NS1cXHRcXHRcXHRcXHRyZXQgPSBnZXRfa2Vybl9jdHhfYnRmX2lkKFxcdTAwMjZlbnYtXFx1MDAzZWxvZywgcmVzb2x2ZV9wcm9nX3R5cGUoZW52LVxcdTAwM2Vwcm9nKSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTIyMTEtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjEyOlxcdFxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxMy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIxNDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZnJvbV94ZHBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE1LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9YRFA7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE2OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX3NrYl9tZXRhXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIxNy1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfU0tCX01FVEE7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyMjE4OlxcdFxcdFxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2R5bnB0cl9mcm9tX2ZpbGVdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjE5LVxcdFxcdFxcdFxcdGR5bnB0cl9hcmdfdHlwZSB8PSBEWU5QVFJfVFlQRV9GSUxFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMDpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfZmlsZV9kaXNjYXJkXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjIyMS1cXHRcXHRcXHRcXHRkeW5wdHJfYXJnX3R5cGUgfD0gRFlOUFRSX1RZUEVfRklMRSB8IE9CSl9SRUxFQVNFO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjIyMjpcXHRcXHRcXHR9IGVsc2UgaWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9keW5wdHJfY2xvbmVdIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjIzLVxcdFxcdFxcdFxcdCAgIChkeW5wdHJfYXJnX3R5cGUgXFx1MDAyNiBNRU1fVU5JTklUKSkge1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyMjQwLVxcdFxcdGNhc2UgS0ZfQVJHX1BUUl9UT19JVEVSOlxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjI0MTpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfY3NzX3Rhc2tfbmV3XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjI0Mi1cXHRcXHRcXHRcXHRpZiAoIWNoZWNrX2Nzc190YXNrX2l0ZXJfYWxsb3dsaXN0KGVudikpIHtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjUyMC1cXHRcXHRcXHRcXHRyZXR1cm4gLUVGQVVMVDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjE6XFx0XFx0XFx0aWYgKG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyMjpcXHRcXHRcXHQgICAgbWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTIzLVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfU1BJTl9MT0NLO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjUyNDpcXHRcXHRcXHRpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI1MjU6XFx0XFx0XFx0ICAgIG1ldGEtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZV0pXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyNTI2LVxcdFxcdFxcdFxcdGZsYWdzIHw9IFBST0NFU1NfTE9DS19JUlE7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTI3NjI9c3RhdGljIGludCBjaGVja19zcGVjaWFsX2tmdW5jKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfY2FsbF9hcmdfbWV0YSAqbWV0YSxcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg2Ny1cXHRcXHRtYXJrX3JlZ19ncmFwaF9ub2RlKHJlZ3MsIEJQRl9SRUdfMCwgXFx1MDAyNmZpZWxkLVxcdTAwM2VncmFwaF9yb290KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4Njg6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NjktXFx0XFx0bWFya19yZWdfa25vd25femVybyhlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI4NzItXFx0XFx0cmVnc1tCUEZfUkVHXzBdLmJ0Zl9pZCA9IG1ldGEtXFx1MDAzZXJldF9idGZfaWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyODczOlxcdH0gZWxzZSBpZiAobWV0YS1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjg3NC1cXHRcXHRyZXRfdCA9IGJ0Zl90eXBlX2J5X2lkKGRlc2NfYnRmLCBtZXRhLVxcdTAwM2VhcmdfY29uc3RhbnQudmFsdWUpO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODkyLVxcdFxcdH1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI4OTM6XFx0fSBlbHNlIGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjg5NDpcXHRcXHQgICBtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlX3Jkd3JdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyODk1LVxcdFxcdGVudW0gYnBmX3R5cGVfZmxhZyB0eXBlX2ZsYWcgPSBnZXRfZHlucHRyX3R5cGVfZmxhZyhtZXRhLVxcdTAwM2VkeW5wdHIudHlwZSk7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5MDgtXFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTA5OlxcdFxcdGlmIChtZXRhLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX3NsaWNlXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjkxMC1cXHRcXHRcXHRyZWdzW0JQRl9SRUdfMF0udHlwZSB8PSBNRU1fUkRPTkxZO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTEyOTMzPXN0YXRpYyBpbnQgY2hlY2tfa2Z1bmNfY2FsbChzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTI5NzEtXFx0aWYgKCFpbnNuLVxcdTAwM2VvZmYgXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTI5NzI6XFx0ICAgIChpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9yZXNfc3Bpbl9sb2NrXSB8fFxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMjk3MzpcXHQgICAgIGluc24tXFx1MDAzZWltbSA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTc0LVxcdFxcdHN0cnVjdCBicGZfdmVyaWZpZXJfc3RhdGUgKmJyYW5jaDtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMjk5NC1cXHRcXHR9XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEyOTk1OlxcdH0gZWxzZSBpZiAoIWluc24tXFx1MDAzZW9mZiBcXHUwMDI2XFx1MDAyNiBpbnNuLVxcdTAwM2VpbW0gPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX19fYnBmX3RyYXBdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEyOTk2LVxcdFxcdHZlcmJvc2UoZW52LCBcXFwidW5leHBlY3RlZCBfX2JwZl90cmFwKCkgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGU/XFxcXG5cXFwiKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxMjU6XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Rocm93XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzEyNi1cXHRcXHRpZiAoIWJwZl9qaXRfc3VwcG9ydHNfZXhjZXB0aW9ucygpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxNjQtXFx0XFx0bWFya19yZWdfdW5rbm93bihlbnYsIHJlZ3MsIEJQRl9SRUdfMCk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjEzMTY1OlxcdFxcdGlmIChtZXRhLmJ0ZiA9PSBidGZfdm1saW51eCBcXHUwMDI2XFx1MDAyNiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfcmVzX3NwaW5fbG9ja10gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxNjY6XFx0XFx0ICAgIG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jlc19zcGluX2xvY2tfaXJxc2F2ZV0pKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE2Ny1cXHRcXHRcXHRfX21hcmtfcmVnX2NvbnN0X3plcm8oZW52LCBcXHUwMDI2cmVnc1tCUEZfUkVHXzBdKTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzE4Ni1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMxODc6XFx0XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Nlc3Npb25fY29va2llXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMxODgtXFx0XFx0XFx0XFx0XFx0bWV0YS5yMF9yZG9ubHkgPSBmYWxzZTtcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzIyMC1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTMyMjE6XFx0XFx0XFx0aWYgKG1ldGEuZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2dldF9rbWVtX2NhY2hlXSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTMyMjItXFx0XFx0XFx0XFx0dHlwZSB8PSBQVFJfVU5UUlVTVEVEO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTEzMjk5LVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxMzMwMDpcXHRpZiAobWV0YS5mdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9jb29raWVdKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xMzMwMS1cXHRcXHRlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWNhbGxfc2Vzc2lvbl9jb29raWUgPSB0cnVlO1xcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jPTE5NzA3PXN0YXRpYyBpbnQgc3BlY2lhbGl6ZV9rZnVuYyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2tmdW5jX2Rlc2MgKmRlc2MsIGludCBpbnNuX2lkeClcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNC1cXHRcXHQvKiBmYWxsYmFjayB0byBkZWZhdWx0IGtmdW5jIHdoZW4gbm90IHN1cHBvcnRlZCBieSBuZXRkZXYgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3MjU6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fc2tiXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTcyNi1cXHRcXHRzZWVuX2RpcmVjdF93cml0ZSA9IGVudi1cXHUwMDNlc2Vlbl9kaXJlY3Rfd3JpdGU7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3MzUtXFx0XFx0ZW52LVxcdTAwM2VzZWVuX2RpcmVjdF93cml0ZSA9IHNlZW5fZGlyZWN0X3dyaXRlO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTczNjpcXHR9IGVsc2UgaWYgKGZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXRfZGVudHJ5X3hhdHRyXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTczNy1cXHRcXHRpZiAoYnBmX2xzbV9oYXNfZF9pbm9kZV9sb2NrZWQocHJvZykpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzM4LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfc2V0X2RlbnRyeV94YXR0cl9sb2NrZWQ7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzM5OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3JlbW92ZV9kZW50cnlfeGF0dHJdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQwLVxcdFxcdGlmIChicGZfbHNtX2hhc19kX2lub2RlX2xvY2tlZChwcm9nKSlcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDEtXFx0XFx0XFx0YWRkciA9ICh1bnNpZ25lZCBsb25nKWJwZl9yZW1vdmVfZGVudHJ5X3hhdHRyX2xvY2tlZDtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk3NDI6XFx0fSBlbHNlIGlmIChmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfZHlucHRyX2Zyb21fZmlsZV0pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk3NDMtXFx0XFx0aWYgKCFlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ0LVxcdFxcdFxcdGFkZHIgPSAodW5zaWduZWQgbG9uZylicGZfZHlucHRyX2Zyb21fZmlsZV9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ1OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ni1cXHRcXHRpZiAoZW52LVxcdTAwM2VpbnNuX2F1eF9kYXRhW2luc25faWR4XS5ub25fc2xlZXBhYmxlKVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTc0Ny1cXHRcXHRcXHRhZGRyID0gKHVuc2lnbmVkIGxvbmcpYnBmX2FyZW5hX2FsbG9jX3BhZ2VzX25vbl9zbGVlcGFibGU7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5NzQ4OlxcdH0gZWxzZSBpZiAoZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2ZyZWVfcGFnZXNdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5NzQ5LVxcdFxcdGlmIChlbnYtXFx1MDAzZWluc25fYXV4X2RhdGFbaW5zbl9pZHhdLm5vbl9zbGVlcGFibGUpXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM9MTk3NzM9aW50IGJwZl9maXh1cF9rZnVuY19jYWxsKHN0cnVjdCBicGZfdmVyaWZpZXJfZW52ICplbnYsIHN0cnVjdCBicGZfaW5zbiAqaW5zbixcXG4tLVxcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg1MC1cXHRcXHQgKi9cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NTE6XFx0XFx0aWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9saXN0X2FkZF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NTItXFx0XFx0ICAgIGlzX2JwZl9yYnRyZWVfYWRkX2tmdW5jKGRlc2MtXFx1MDAzZWZ1bmNfaWQpKSB7XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4NjQtXFx0XFx0XFx0XFx0XFx0XFx0bm9kZV9vZmZzZXRfcmVnLCBpbnNuLCBpbnNuX2J1ZiwgY250KTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjU6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfY2FzdF90b19rZXJuX2N0eF0gfHxcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4NjY6XFx0XFx0ICAgZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX3Jkb25seV9jYXN0XSkge1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2Ny1cXHRcXHRpbnNuX2J1ZlswXSA9IEJQRl9NT1Y2NF9SRUcoQlBGX1JFR18wLCBCUEZfUkVHXzEpO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYy0xOTg2OC1cXHRcXHQqY250ID0gMTtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmM6MTk4Njk6XFx0fSBlbHNlIGlmIChkZXNjLVxcdTAwM2VmdW5jX2lkID09IHNwZWNpYWxfa2Z1bmNfbGlzdFtLRl9icGZfc2Vzc2lvbl9pc19yZXR1cm5dIFxcdTAwMjZcXHUwMDI2XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODcwLVxcdFxcdCAgIChlbnYtXFx1MDAzZXByb2ctXFx1MDAzZWV4cGVjdGVkX2F0dGFjaF90eXBlID09IEJQRl9UUkFDRV9GU0VTU0lPTiB8fFxcbi0tXFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5ODgzLVxcdFxcdCpjbnQgPSAzO1xcbmtlcm5lbC9icGYvdmVyaWZpZXIuYzoxOTg4NDpcXHR9IGVsc2UgaWYgKGRlc2MtXFx1MDAzZWZ1bmNfaWQgPT0gc3BlY2lhbF9rZnVuY19saXN0W0tGX2JwZl9zZXNzaW9uX2Nvb2tpZV0gXFx1MDAyNlxcdTAwMjZcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk4ODUtXFx0XFx0ICAgKGVudi1cXHUwMDNlcHJvZy1cXHUwMDNlZXhwZWN0ZWRfYXR0YWNoX3R5cGUgPT0gQlBGX1RSQUNFX0ZTRVNTSU9OIHx8XFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDEtXFx0XFx0KmNudCA9IDY7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTAyOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25ld10pIHtcXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MDMtXFx0XFx0LyogaW5saW5lIGJwZl9pdGVyX251bV9uZXcoXFx1MDAyNml0LCBzdGFydCwgZW5kKTsgUjE9XFx1MDAyNml0LCBSMj1zdGFydCwgUjM9ZW5kICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5MjUtXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTI2OlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX25leHRdKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTI3LVxcdFxcdC8qIGlubGluZSBicGZfaXRlcl9udW1fbmV4dChcXHUwMDI2aXQpOyBSMT1cXHUwMDI2aXQsIHJldHVybnMgXFx1MDAyNnMtXFx1MDAzZWN1ciBvciBOVUxMICovXFxuLS1cXG5rZXJuZWwvYnBmL3ZlcmlmaWVyLmMtMTk5NDItXFx0XFx0KmNudCA9IGk7XFxua2VybmVsL2JwZi92ZXJpZmllci5jOjE5OTQzOlxcdH0gZWxzZSBpZiAoZGVzYy1cXHUwMDNlZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2l0ZXJfbnVtX2Rlc3Ryb3ldKSB7XFxua2VybmVsL2JwZi92ZXJpZmllci5jLTE5OTQ0LVxcdFxcdC8qIGJwZl9pdGVyX251bV9kZXN0cm95KCkgaXMgYSBuby1vcDsgZW1pdCBhIG5vcCB0byBkcm9wIHRoZSBjYWxsICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE5OjQwOjIzLjc1OTE4OTUyM1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDY1MjkyNDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEtlcm5lbCBGdW5jdGlvbiBMaXN0IENsZWFudXAqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSBzdXNwZWN0ZWQsIGBzcGVjaWFsX2tmdW5jX2xpc3RgIGlzIHJlYWxseSBqdXN0IGEgc2ltcGxlIGxvb2t1cCB0YWJsZS4gSXQncyB1c2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4gYGZ1bmNfaWRgIG1hdGNoZXMgYSAqc3BlY2lmaWMqIGtub3duIGVudHJ5LCBlc3NlbnRpYWxseSBwZXJmb3JtaW5nIGEgZGlyZWN0IGNvbXBhcmlzb24gbGlrZSBgZnVuY19pZCA9PSBzcGVjaWFsX2tmdW5jX2xpc3RbS0ZfYnBmX2FyZW5hX2FsbG9jX3BhZ2VzXWAuXG5cbkJlY2F1c2UgYEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzYCwgYEtGX2JwZl9zdHJlYW1fdnByaW50a2AsIGFuZCBgS0ZfYnBmX3N0cmVhbV9wcmludF9zdGFja2AgKmFyZW4ndCogdXNlZCBpbiBhbnkgb2YgdGhlc2UgY3J1Y2lhbCBjb21wYXJpc29uIGNoZWNrcywgdGhlaXIgZXhpc3RlbmNlIGluIHRoYXQgbGlzdCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiBUaGV5J3JlIGp1c3Qgc2l0dGluZyB0aGVyZSwgdGFraW5nIHVwIHNwYWNlLCBkb2luZyBhYnNvbHV0ZWx5IG5vdGhpbmcuIFRoZSBwYXRjaCBzaW1wbHkgZWxpbWluYXRlcyB0aGVzZSB1bnVzZWQgZW51bSB2YWx1ZXMgYW5kIHRoZSBhc3NvY2lhdGVkIGBCVEZfSURgIGVudHJpZXMgZnJvbSBgc3BlY2lhbF9rZnVuY19saXN0YC5cblxuVGhpcyBpcywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQsIGEgcHVyZSBjbGVhbnVwLiBJdCdzIHB1cmVseSBkZWNvcmF0aXZlLiBJdCBoYXMgYWJzb2x1dGVseSB6ZXJvIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cgb3IgdGhlIHZlcmlmaWVyJ3MgYmVoYXZpb3VyLiBJdCBtYWtlcyB0aGUgY29kZSBhIGJpdCB0aWRpZXIuIE5vdGhpbmcgbW9yZS5cblxuU28sIGZvciBmdXp6aW5nIHB1cnBvc2VzLCB0aGlzIGNoYW5nZSBpcyBuZWdsaWdpYmxlLiBJdCdzIGEgbm9uLWV2ZW50LiBObyBuZWVkIHRvIGRldm90ZSBhbnkgZnV6emluZyByZXNvdXJjZXMgdG8gdGVzdGluZyB0aGlzLlxuXG5UaGVyZWZvcmUsIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQxOCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTk6NDA6MjkuMjI0NDg0OTU1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVtb3ZlcyB1bnVzZWQgZW51bSB2YWx1ZXMgKEtGX2JwZl9hcmVuYV9yZXNlcnZlX3BhZ2VzLCBLRl9icGZfc3RyZWFtX3ZwcmludGssIEtGX2JwZl9zdHJlYW1fcHJpbnRfc3RhY2spIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nIEJURl9JRCBlbnRyaWVzIGZyb20gdGhlIHNwZWNpYWxfa2Z1bmNfbGlzdCBpbiB0aGUgQlBGIHZlcmlmaWVyLiBUaGVzZSBlbnRyaWVzIHdlcmUgbmV2ZXIgcmVmZXJlbmNlZCBhbnl3aGVyZSBpbiB0aGUgdmVyaWZpZXIgY29kZSB0byBhcHBseSBhbnkgc3BlY2lhbCBsb2dpYywgc28gdGhlaXIgcmVtb3ZhbCBpcyBhIHB1cmUgY2xlYW51cCB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIHRoZSBrZXJuZWwncyBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlbW92ZXMgdW51c2VkIGVudW0gdmFsdWVzIChLRl9icGZfYXJlbmFfcmVzZXJ2ZV9wYWdlcywgS0ZfYnBmX3N0cmVhbV92cHJpbnRrLCBLRl9icGZfc3RyZWFtX3ByaW50X3N0YWNrKSBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBCVEZfSUQgZW50cmllcyBmcm9tIHRoZSBzcGVjaWFsX2tmdW5jX2xpc3QgaW4gdGhlIEJQRiB2ZXJpZmllci4gVGhlc2UgZW50cmllcyB3ZXJlIG5ldmVyIHJlZmVyZW5jZWQgYW55d2hlcmUgaW4gdGhlIHZlcmlmaWVyIGNvZGUgdG8gYXBwbHkgYW55IHNwZWNpYWwgbG9naWMsIHNvIHRoZWlyIHJlbW92YWwgaXMgYSBwdXJlIGNsZWFudXAgd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiB0aGUga2VybmVsJ3MgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxOTo0MDoyOS4yMjQ1MTEzNzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workfloww4dt7[1] Phase: Running StartedAt: 2026-08-12 19:40:39 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workfloww4dt7[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-12 19:40:39 +0000 UTC FinishedAt: 2026-08-12 19:40:44 +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,}